ストーリーボード用ショットリストのテンプレートを作成
実用的なストーリーボードは、空欄ではなく具体的な判断から始まります。このジェネレーターは、シーンの説明とご指定のショット数を、企画、作画、撮影、確認に使えるテンプレートへ変換します。各行にはショット番号、推奨される画角、推定秒数、シーンに直接基づく説明が含まれます。処理は決定論的なため、同じ指示からは常に同じ構成が得られ、チームでの再確認や比較にも安心してご利用いただけます。
無料で実行
目に見える展開を含むシーン説明をご用意ください
観客に見えるもの、場所、重要な人物や物、そして場面がどう変化するかをご記入ください。「緊張した朝」のようなテーマだけでなく、登場、発見、反応、退場などを示すと、より実用的な指示になります。ジェネレーターは空白を整え、文の区切りから説明を物語上の展開に分割します。説明が1文だけの場合は、句読点や接続表現を使って、さらに小さなまとまりを検出します。生成される説明はこれらの展開を基準にするため、入力された素材を整理して画面化しますが、人物、小道具、出来事を勝手に追加することはありません。必要な企画精度に合わせてショット数をご指定ください。短いインサートなら3ショット、複数の動作を含む場面なら8または12ショットが目安になります。指定数は出力数と一致し、最低1ショットが必要です。上限も設けているため、ブラウザーや自動処理でも扱いやすい結果になります。
各行を制作指示のたたき台としてお読みください
生成される各行には4つの実務項目があります。ショット番号は順序を示します。ショット種別は画面構成を提案し、全景の導入からミディアム、クローズアップ、肩越し、細部、リアクションへ進み、リストが長くなると再び全体を示します。推定時間は整数秒で、画角と割り当てられた展開の長さから決まります。これはテンポを検討する出発点であり、完成版の尺を保証するものではありません。説明欄は視覚的な目的と入力シーンの展開を組み合わせるため、絵コンテ担当者や撮影スタッフが、そのショットの理由と対象を把握できます。展開数より多いショットをご指定の場合、同じ展開を巡回し、後の回を別の視覚的強調として明記します。これにより、元の説明にない筋書きを加えず、必要な追加カバレッジを提示できます。
プリプロダクション全体でテンプレートをご活用ください
構造化された結果は、脚本、絵コンテ、撮影、編集、アニメーション、クライアント確認の間をつなぐ共通資料になります。各行を制作文書へ貼り付けたり、説明を絵コンテのコマにしたり、作画担当者や撮影班のタスクへ割り当てたりできます。モデルやネットワーク通信を使わない決定論的な処理なので、自動受付に組み込んでも、同じ入力から必ず同じ構造が得られます。この安定性は改訂比較にも役立ちます。説明またはショット数を意図的に変更し、構成の違いをご確認ください。推定合計時間は各行の秒数を合算し、全体が長すぎるか短すぎるかを早期に把握する目安になります。ただし、演技、台詞、場面転換、カメラワーク、編集テンポによって実際の尺は変わります。APIは1リクエストあたり$0.002で、ブラウザー版では同じ純粋なロジックを端末内で実行します。
活用例
短い物語シーンの設計
コマの作画や撮影計画の前に、目に見える動作を順序立てたカバレッジへ変換します。
アニメーションチームへの指示
画角、時間、意図を備えた一貫性のある番号付きフレームを担当者へ共有します。
映像案件の受付標準化
クライアントのシーン概要を、制作側が確認、編集、転記しやすい定型データへ変換します。
よくある質問
1回の利用料金はいくらですか?
APIリクエスト1回の料金は$0.002です。ブラウザーでは同じ決定論的ロジックを端末内で実行します。
ストーリーボード画像も生成されますか?
いいえ。作画、撮影計画、アニメーションのレイアウトに使える文章形式のテンプレートを作成します。
指定したショット数どおりになりますか?
はい。指定数と同数を出力します。1未満または公開上限を超える値は受け付けません。
所要時間はどのように計算されますか?
ショット種別ごとの一定の基準値に、長い展開向けの小さな調整を加えて算出します。
説明にない動作を追加しますか?
いいえ。入力文を基準とし、追加カバレッジは別の視覚的強調であることを明記します。
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/video/storyboard-shot-list \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"scene_description":"At dawn, a cyclist enters an empty town square. She notices a red scarf tied to the fountain, stops, and looks toward the bell tower as the first bell rings.","shot_count":5}'const res = await fetch("https://api.kit.forhosting.com/video/storyboard-shot-list", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"scene_description": "At dawn, a cyclist enters an empty town square. She notices a red scarf tied to the fountain, stops, and looks toward the bell tower as the first bell rings.",
"shot_count": 5
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/video/storyboard-shot-list",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"scene_description": "At dawn, a cyclist enters an empty town square. She notices a red scarf tied to the fountain, stops, and looks toward the bell tower as the first bell rings.",
"shot_count": 5
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/video/storyboard-shot-list", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"scene_description":"At dawn, a cyclist enters an empty town square. She notices a red scarf tied to the fountain, stops, and looks toward the bell tower as the first bell rings.","shot_count":5}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"scene_description":"At dawn, a cyclist enters an empty town square. She notices a red scarf tied to the fountain, stops, and looks toward the bell tower as the first bell rings.","shot_count":5}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/video/storyboard-shot-list", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"scene_description": "At dawn, a cyclist enters an empty town square. She notices a red scarf tied to the fountain, stops, and looks toward the bell tower as the first bell rings.",
"shot_count": 5
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "video.storyboard_shot_list",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}非同期APIです。task_idは即時に返ります。ポーリングは1秒あたり1リクエストまでです。
料金
単価はすべて公開しています。トークン換算や独自クレジットはありません。失敗したタスクは課金されません。
制限
max_chars | 10000 |
max_shots | 100 |
エラー
| HTTP | コード | 意味 |
|---|---|---|
401 | unauthorized | APIキーが無効か、指定されていません。Authorizationヘッダーを確認してください。 |
402 | insufficient_balance | 残高が不足しています。チャージ後に再度お試しください。 |
404 | unknown_type | 指定されたタスクタイプは存在しません。タイプ名を確認してください。 |
429 | rate_limited | リクエストが多すぎます。しばらく待ってから再度お試しください。 |