ai-video-script について
ai-video-scriptは、テーマ、スタイル、尺から、後続の生成ワークフローで扱える短編動画の撮影台本を作るスキルです。呼び出し側が指定するビジュアルと人物のアンカーを保ち、一定の形式でショットを出力します。
主な機能
- 01構造化された短編動画台本の生成
- 021〜10ショットへの対応
- 03全体尺に合わせたショット時間の配分
- 04指定された人物・ビジュアルアンカーの保持
- 05後続処理向けの固定フィールド出力
活用シーン
- 01短編動画広告のショット設計
- 02短編ドラマの連続シーン作成
- 03画像・動画生成スキルへの台本入力
- 04画面比率と尺に沿った内容整理
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ tokenrhythm/ opensquilla --skill ai-video-scriptインストール後、Claude Code で/ai-video-scriptを入力して読み込まれたか確認します。
詳細
ai-video-script — 構造化ショート動画スクリプトジェネレーター
トピック/キーワード+スタイル+尺を、後続の nano-banana-pro および seedance-2-prompt のスキルが曖昧さなく解析できる、厳密な形式の撮影台本に変換します。デフォルトでは3ショットを出力しますが、呼び出し元は4または5を指定できます。
入力
with.task/with.request を介した自由記述:
- トピック/製品/ストーリー
- 対象オーディエンス(任意)
- スタイル(轻松/专业/故事/科普/带货) — 映像のレンダリングスタイルではなく、ナラティブスタイルです
- 全体の尺(15s、30s、60s、デフォルトは60s)
N_SHOTSの上書き(デフォルトは5、1-10を指定可能)
呼び出し元が指定するアンカー(そのまま使用 — このスキルが新たに作成することはありません):
with.render_style— 各ショットのプロンプトの末尾に付ける1行の美的スタイル。例:2D anime illustration, flat colour, soft cel-shading、watercolour storybook illustration、cinematic photoreal 35mm grain。指定がない、または空の場合は、RENDER_STYLE フィールドにリテラルのセンチネル(render style missing)を出力し、後続のパーサーが明確にエラーを検出できるようにします。with.identity_anchor— すべてのショットでバイト単位で同一に再現する、主要キャラクターの1行の説明。例:Lin, a 25-year-old East Asian woman with chin-length black bob, almond eyes, wearing sage-green oversized knit sweater and gold round earrings。指定がない、または空の場合は、リテラルのセンチネル(identity anchor missing)を出力し、画像/動画生成に費用をかける前に呼び出し元が不足を検出できるようにします。
このスキルは、レンダリングスタイルやキャラクターのアイデンティティを選びません。それらはオーケストレーター(またはその user_input 確認ステップ)が決定します。この分離により、同じスキルを製品広告(人間が登場しないもの)にもショートドラマ(キャラクターが固定されたもの)にも、あらかじめ組み込まれたデフォルト設定なしで利用できます。
出力形式(厳守 — オーケストレーターが解析します)
以下のトップレベルブロックを、必ずこの順序でちょうど一度ずつ出力します。
=== OVERVIEW ===
TITLE: <one line>
DURATION_S: <int>
ASPECT_RATIO: <9:16|16:9>
STYLE: <one line>
AUDIENCE: <one line>
N_SHOTS: <int 3-5>
IDENTITY_ANCHOR: <copied verbatim from with.identity_anchor, or "(identity anchor missing)">
RENDER_STYLE: <copied verbatim from with.render_style, or "(render style missing)">
=== SHOT_1 ===
DURATION_S: <int 3-6>
CAMERA: <wide|medium|close-up + push/pull/pan/tilt/static>
IMAGE_PROMPT: <IDENTITY_ANCHOR verbatim>, <scene/action>, <RENDER_STYLE verbatim>, --ar 9:16
VIDEO_PROMPT: <IDENTITY_ANCHOR verbatim>, <one major action + camera move + duration hint>, <dialogue/voiceover/sound tags derived from VOICEOVER — see rule 11>, <RENDER_STYLE verbatim>, aspect_ratio: 9:16, no watermark, no logo, no subtitles
VOICEOVER: <one line, max 20 Chinese chars or 30 English words — kept verbatim for SRT subtitle burn-in>
ON_SCREEN_TEXT: <one short line or empty>
=== SHOT_2 ===
... (same fields, IMAGE_PROMPT and VIDEO_PROMPT must begin with the
exact same IDENTITY_ANCHOR bytes as SHOT_1)
=== SHOT_3 ===
... (same fields)
N_SHOTS が1から10までの任意の値の場合、その数と同じ数の === SHOT_K === ブロックを1から N_SHOTS まで番号順に出力し、各ブロックに同じフィールドを含めます。N_SHOTS を超えるショットブロックは出力しないでください。フィールドを省略してはいけません。ON_SCREEN_TEXT が空の場合は、リテラル値 none を使用します。
N_SHOTS の意味:
- 1:単一のヒーローショット(通常5-10s) — 製品/風景の短い映像。
- 2-3:典型的な短編ストーリーアーク。
- 4-6:複数の展開を含む長めのナラティブ。45-60s のドラマに適しています。
- 7-10:長尺形式のドラマ。コストに応じて全体の尺が直線的に長くなります。
ルール
-
アイデンティティの一貫性 —
with.identity_anchorは、各ショットの IMAGE_PROMPT と VIDEO_PROMPT の冒頭にバイト単位でそのまま貼り付けてください。言い換えたり、要約したり、代名詞に置き換えたりしないでください。ショット3のアンカーテキストがショット1のものと読点1つ分でも異なれば、誤りです。 -
具体的な映像描写 — 抽象的な動詞を、目で見て確認できる動作に置き換えてください。 「赤いトレンチコートを着た若い女性が、雨に濡れたネオン街を歩く」 >> 「歩く女性」。
-
知的財産権に配慮 — フランチャイズ名、キャラクター名、ブランド名、「〜風」といった言及は使わないでください。必要に応じて、独自の名前を考えてください。
-
複数行の値は禁止 — IMAGE_PROMPT、VIDEO_PROMPT、VOICEOVER、ON_SCREEN_TEXT は、それぞれ1行だけにしてください。
-
アスペクト比を明記 — すべての IMAGE_PROMPT は、リテラルトークン
--ar 9:16(または--ar 16:9)で終えてください。すべての VIDEO_PROMPT は、リテラルトークンaspect_ratio: 9:16(または16:9)で終えてください。 -
尺の計算 —
sum(SHOT_i.DURATION_S) == OVERVIEW.DURATION_S±2秒。 -
ナレーションの長さ — ナレーション全体は、
DURATION_S秒で読み上げられる長さにしてください(中国語は1秒あたり約3文字、英語は1秒あたり約2単語)。 -
ユーザーの言語に合わせる — すべてのフィールド(TITLE、STYLE、AUDIENCE、IDENTITY_ANCHOR、RENDER_STYLE、IMAGE_PROMPT、VIDEO_PROMPT、VOICEOVER、ON_SCREEN_TEXT)は、ユーザーが書いたものと同じ言語で記述してください。
- 現在の下流画像・動画モデルである
google/gemini-3.1-flash-image-previewとbytedance/seedance-2.0は、どちらも中国語をネイティブに扱えます。Seedance(ByteDance)は実際には中国語を第一言語とするモデルで、ストーリーが中国語の場合(例:咖啡店偶遇 / 国风武侠 / 校园回忆)、中国語のプロンプトを使うと、より話題に沿った結果を生成する傾向があります。 - IMAGE_PROMPT を埋めるためだけに、ユーザーの中国語の題材を英語に翻訳しないでください。文化的な細部が失われ、西洋風の代替表現が幻覚されることがよくあります。
- 言語が混在する入力(英語の題材+中国語のナレーション指定、またはその逆)の場合 → プロンプトの大部分は、題材/ストーリーの言語に合わせます。VOICEOVER など、指定のあるローカライズ対象フィールドは、ユーザーが明示した言語に合わせてもかまいません。
- 英語も引き続き使用できます。ユーザーが英語で書いた場合、または英語のプロンプトを明示的に求めた場合は、英語を選んでください。
- 現在の下流画像・動画モデルである
-
プレーンテキストのみ — 絵文字や装飾記号は使用しない — スクリプトは Windows コンソール上の Python サブプロセスを経由します。既定のコードページ(cp936/GBK)では、
✅、❌、✨、🎬や、BMP 外の文字をエンコードできません。いずれかのフィールドに含まれていると、オーケストレーターがUnicodeEncodeErrorでクラッシュします。プレーンな CJK + ASCII のみを使用してください。再作成する場合も、変更した行にチェックマークを付けて「装飾」しないでください。 -
スタイルタグの例外 — RENDER_STYLE は文ではなくラベルです。
2D anime illustrationや水墨风, monochrome with one accentのような標準的な美的タグは、元の言語のまま使用してかまいません。水墨风 ink-wash, paper textureのような混在言語のタグも使用できます。呼び出し側からwith.render_style経由で渡された形式は、そのままコピーしてください。 -
VOICEOVER は VIDEO_PROMPT 内にも台詞/ナレーションタグとして含めること — Seedance 2.0 は、プロンプトに明示的な台詞の指示を含めると、音声とリップシンクをネイティブに生成します(上流の JiMeng「Short Drama with Dialogue」レシピを参照)。このタグがない場合、Seedance は無音の動画を生成し、セリフは焼き込み字幕として表示されるだけで、音声トラックはありません。タグがある場合、Seedance は実際の音声も生成し、話者の口の動きも正しく同期させます。焼き込み字幕も実際の音声によって補完されます。
ショットごとに、以下のタグ形式から1つだけ選び、この順番に従ってください。
a. キャラクターの台詞(VOICEOVER がキャラクターの引用された台詞で、引用符で囲まれているか、「陆冷笑一声:'...'」/「Lu sneers, '...'」のように名前と組み合わせている場合):
Dialogue (<IDENTITY_ANCHOR 内の CharacterName>, <感情>): "<台詞>"例 (VIDEO_PROMPT 内のアクション / カメラセグメントの後、RENDER_STYLE の前にインラインで配置): 台詞 (Zhang, 激怒): 「今すぐインターンシップの報告書を持って、会社から出て行け!」 台詞 (张, 愤怒): "拿着你的实习报告,立刻给我滚出公司!" 台詞 (Lu, 嘲笑): 「本当に私を解雇するつもりですか、張マネージャー?」
b. ナレーション / 心の声 (VOICEOVER は顔のないナレーターの セリフとして読まれ、画面上に話者はおらず、引用符もなし):
Voiceover (narrator, <emotion>): "<the line>"例: Voiceover (narrator, 物憂げ): 「あの馴染みのカフェの扉を押し開ける。」
c. このショットでは音声なし (VOICEOVER が文字通りの値
none/ 空) — VIDEO_PROMPT に台詞タグを一切出力しません。特定の効果音が ショットを定義する場合は、任意でSound: <ambient cue>タグを 追加してもかまいません。タグに関する追加ルール:
- 感情ラベルは短い形容詞 1 つ (calm / sad / excited / sneering / furious / panicked / 冷峻 / 愤怒 / 惊恐 / 平静)。 Seedance はこれを使って声の韻律を形作ります。
- CharacterName は IDENTITY_ANCHOR で使われている名前トークン (Zhang / 张 / Lin / 林 など) と一致しなければなりません。 そうすることで seedance が誰の口を動かすか分かります。新しい 名前を創作しないでください。
- 引用符内の「」は VOICEOVER フィールドと同一言語です。 翻訳しないでください。句読点はそのままにし、台詞内で引用を 入れ子にする必要がある場合は ASCII のシングルクォートを使います。
- 否定制約
no subtitlesは VIDEO_PROMPT に残します — これは seedance の動画フレーム内に字幕バーをレンダリングしない という意味です。台詞タグは音声を制御し、字幕バーは VOICEOVER フィールドから下流の ffmpeg ステップによって焼き込まれます。 - 1 ショットに複数の話者がいる場合: タグをセミコロンで連結します: Dialogue (Lu, sneering): "..." ; Dialogue (Zhang, panicked): "..."
-
VIDEO_PROMPT の長さ予算 — 台詞タグを追加した状態で、 実用的な上限は VIDEO_PROMPT あたり ≤500 文字です。IMAGE_PROMPT は ≤220 文字のままです。meta-short- drama の下流の抽出ステップは 700 文字で切り捨てるため (Assets Mapping プリアンブルを追加した後)、文字数を超えた個々の VIDEO_PROMPT は 末尾で切り取られます — 台詞タグは RENDER_STYLE の繰り返しの前に置いて、切り捨て後も残るようにしてください。
スタイルプリセット (IMAGE_PROMPT/VIDEO_PROMPT の修飾子のみ調整)
- 商业 / Commercial: "studio lighting, hero product shot, clean background, shallow depth of field"
- 故事 / Story: "cinematic, soft natural light, 35mm film grain, shallow depth of field"
- 科普 / Educational: "isometric infographic style, flat colour, bright key light, clean composition"
- 带货 / E-commerce: "high-key lighting, white seamless background, product 360 spin"
- 轻松 / Casual: "bright daylight, handheld feel, vibrant colours"
ネガティブデフォルト (常に VIDEO_PROMPT に追加)
no watermark, no logo, no subtitles, no on-screen text outside ON_SCREEN_TEXT.
例 A — 中国語のリクエスト、オール中国語スクリプト (50 秒、5 ショット、9:16)
ユーザーがリクエストを中国語で書いたため、すべてのフィールドが中国語です — IMAGE_PROMPT と VIDEO_PROMPT を含みます。Seedance 2.0 と Gemini 3.1 image は どちらもこれらのプロンプトをネイティブに処理します。RENDER_STYLE がフォトリアル シネマティックであることに注意してください (明示的なオプトインスタイル — 下流の Seedance モデレーションはフォトリアルの人間参照を拒否する MAY 可能性があります。プロバイダーポリシーによる拒否は別の有料送信を行わずに 即座に停止し、その後ワークフローは劣化した Ken-Burns クリップにフォールバックします)。
呼び出し元が渡すもの:
with.identity_anchor=陆,28岁东亚男性,背头黑发,无框眼镜,深灰色定制西装,气场冷峻;张,35岁东亚女性,波浪长卷发,浓妆,白色职业套装,神情傲慢with.render_style=电影级写实,真实摄影,戏剧化强光对比,高对比度色调
=== OVERVIEW ===
TITLE: 职场反转:踢到铁板了
DURATION_S: 50
ASPECT_RATIO: 9:16
STYLE: 现代都市 / 职场爽剧
AUDIENCE: 18-35 职场青年 / 爽剧受众
N_SHOTS: 5
IDENTITY_ANCHOR: 陆,28岁东亚男性,背头黑发,无框眼镜,深灰色定制西装,气场冷峻;张,35岁东亚女性,波浪长卷发,浓妆,白色职业套装,神情傲慢
RENDER_STYLE: 电影级写实,真实摄影,戏剧化强光对比,高对比度色调
=== SHOT_1 ===
DURATION_S: 10
CAMERA: 中景,快速跟拍
IMAGE_PROMPT: 张,35岁东亚女性,波浪长卷发,浓妆,白色职业套装,神情傲慢;陆,28岁东亚男性,背头黑发,无框眼镜,深灰色定制西装,气场冷峻,张在奢华的现代办公室里将一份文件夹狠狠摔在办公桌上,指着站在对面的陆,眼神充满鄙夷,电影级写实,真实摄影,高对比度色调,--ar 9:16
VIDEO_PROMPT: 张,35岁东亚女性,波浪长卷发,浓妆,白色职业套装,神情傲慢;陆,28岁东亚男性,背头黑发,无框眼镜,深灰色定制西装,气场冷峻,张愤怒地将文件摔在桌上并大声指责,陆面无表情地看着她,镜头快速推向张愤怒的脸,动作激进利落,0-10s,Dialogue (张, 愤怒): "拿着你的实习报告,立刻给我滚出公司!",电影级写实,真实摄影,画面无水印,无字幕,无logo,aspect_ratio: 9:16
VOICEOVER: "拿着你的实习报告,立刻给我滚出公司!"
ON_SCREEN_TEXT: 扫地出门
=== SHOT_2 ===
DURATION_S: 10
CAMERA: 特写,动态倾斜拉镜头
IMAGE_PROMPT: 陆,28岁东亚男性,背头黑发,无框眼镜,深灰色定制西装,气场冷峻,陆抬手摘下无框眼镜,嘴角勾起一抹极度冷酷且自信的嘲讽笑意,眼神凌厉,电影级写实,真实摄影,高对比度色调,--ar 9:16
VIDEO_PROMPT: 陆,28岁东亚男性,背头黑发,无框眼镜,深灰色定制西装,气场冷峻,陆动作极其干净利落地抬手摘下眼镜丢在桌上,嘴角瞬间勾起冰冷的笑意,镜头配合他的动作迅速拉近并微微倾斜,凸显压迫感,0-10s,Dialogue (陆, 冷笑): "张经理,你确定要开除我?",电影级写实,真实摄影,画面无水印,无字幕,无logo,aspect_ratio: 9:16
VOICEOVER: 陆冷笑一声:"张经理,你确定要开除我?"
ON_SCREEN_TEXT: 临危不乱
=== SHOT_3 ===
DURATION_S: 10
CAMERA: 快速平移 + 瞬间推焦
IMAGE_PROMPT: 张,35岁东亚女性,波浪长卷发,浓妆,白色职业套装,神情傲慢;陆,28岁东亚男性,背头黑发,无框眼镜,深灰色定制西装,气场冷峻,陆从西装内口袋掏出一枚精致的金色集团徽章抛在桌上,张看到徽章后脸色瞬间惨白,冷汗直流,电影级写实,真实摄影,高对比度色调,--ar 9:16
VIDEO_PROMPT: 张,35岁东亚女性,波浪长卷发,浓妆,白色职业套装,神情傲慢;陆,28岁东亚男性,背头黑发,无框眼镜,深灰色定制西装,气场冷峻,陆利落地掏出金色徽章拍在桌上,镜头瞬间给徽章一个快速特写推焦,动作干净有力,0-10s,Dialogue (陆, 冷峻): "看清楚,这是什么。",电影级写实,真实摄影,画面无水印,无字幕,无logo,aspect_ratio: 9:16
VOICEOVER: "看清楚,这是什么。"
ON_SCREEN_TEXT: 亮出底牌
=== SHOT_4 ===
DURATION_S: 10
CAMERA: 特写 + 快速甩镜头(Whip Pan)
IMAGE_PROMPT: 张,35岁东亚女性,波浪长卷发,浓妆,白色职业套装,极度恐惧的表情,额头冒汗,瞪大双眼死死盯着桌上的徽章,双手颤抖,电影级写实,真实摄影,高对比度色调,--ar 9:16
VIDEO_PROMPT: 张,35岁东亚女性,波浪长卷发,浓妆,白色职业套装,极度恐惧的表情,张认出徽章后惊恐地倒退一步,浑身剧烈颤抖,镜头从桌上的徽章快速甩向张惨白的脸和颤抖的双手,节奏急促,0-10s,Dialogue (张, 惊恐): "董事长专属黑金徽章?!你...你是...",电影级写实,真实摄影,画面无水印,无字幕,无logo,aspect_ratio: 9:16
VOICEOVER: "董事长专属黑金徽章?!你……你是……"
ON_SCREEN_TEXT: 瞬间打脸
=== SHOT_5 ===
DURATION_S: 10
CAMERA: 低角度仰拍,动态跟拍
IMAGE_PROMPT: 张,35岁东亚女性,波浪长卷发,浓妆,白色职业套装,神情傲慢;陆,28岁东亚男性,背头黑发,无框眼镜,深灰色定制西装,气场冷峻,陆单手插兜转身走向总裁专属转椅利落坐下,张在背景中双腿发软扶住桌子,满脸绝望,电影级写实,真实摄影,高对比度色调,--ar 9:16
VIDEO_PROMPT: 张,35岁东亚女性,波浪长卷发,浓妆,白色职业套装,神情傲慢;陆,28岁东亚男性,背头黑发,无框眼镜,深灰色定制西装,气场冷峻,陆极其顺畅地转身上前坐上总裁椅,镜头紧跟他的动作,张在后方浑身颤抖,动作一气呵成无拖泥带水,0-10s,Dialogue (陆, 冷峻): "我的微服私访结束了。现在,收拾东西给我滚。",电影级写实,真实摄影,画面无水印,无字幕,无logo,aspect_ratio: 9:16
VOICEOVER: "我的微服私访结束了。现在,收拾东西给我滚。"
ON_SCREEN_TEXT: 终极逆袭
例 B — 英語のリクエスト、すべて英語のスクリプト(50秒、5ショット、9:16)
呼び出し元が渡す値:
with.identity_anchor=Lu, 28-year-old East Asian man, slicked-back black hair, rimless glasses, dark grey tailored suit, cold and powerful aura; Zhang, 35-year-old East Asian woman, wavy long hair, heavy makeup, white professional pantsuit, arrogant expressionwith.render_style=Cinematic realism, authentic photography, dramatic high-contrast lighting, bold color grading
=== OVERVIEW ===
TITLE: Corporate Revenge: Tricking the Titan
DURATION_S: 50
ASPECT_RATIO: 9:16
STYLE: Modern Urban / Corporate Drama / Revenge Short
AUDIENCE: 18-35 Professionals / Fast-paced Drama Enthusiasts
N_SHOTS: 5
IDENTITY_ANCHOR: Lu, 28-year-old East Asian man, slicked-back black hair, rimless glasses, dark grey tailored suit, cold and powerful aura; Zhang, 35-year-old East Asian woman, wavy long hair, heavy makeup, white professional pantsuit, arrogant expression
RENDER_STYLE: Cinematic realism, authentic photography, dramatic high-contrast lighting, bold color grading
=== SHOT_1 ===
DURATION_S: 10
CAMERA: medium shot, fast tracking camera
IMAGE_PROMPT: Zhang, 35-year-old East Asian woman, wavy long hair, heavy makeup, white professional pantsuit, arrogant expression; Lu, 28-year-old East Asian man, slicked-back black hair, rimless glasses, dark grey tailored suit, cold and powerful aura, Zhang slams a folder onto the desk in a luxurious modern office, pointing at Lu with utter contempt, cinematic realism, authentic photography, high-contrast lighting, --ar 9:16
VIDEO_PROMPT: Zhang, 35-year-old East Asian woman, wavy long hair, heavy makeup, white professional pantsuit, arrogant expression; Lu, 28-year-old East Asian man, slicked-back black hair, rimless glasses, dark grey tailored suit, cold and powerful aura, Zhang aggressively slams a folder down and shouts angrily, Lu stares at her with a critical deadpan expression, camera snaps instantly into a tight zoom on Zhang's furious face, fast-paced action 0-10s, Dialogue (Zhang, furious): "Take your internship report and get out of my company right now!", cinematic realism, authentic photography, no watermark, no logo, no subtitles, aspect_ratio: 9:16
VOICEOVER: "Take your internship report and get out of my company right now!"
ON_SCREEN_TEXT: The Dismissal
=== SHOT_2 ===
DURATION_S: 10
CAMERA: close-up, dynamic camera tilt
IMAGE_PROMPT: Lu, 28-year-old East Asian man, slicked-back black hair, rimless glasses, dark grey tailored suit, cold and powerful aura, Lu raises his hand to adjust his glasses with a sharp, swift motion, a cold and confident smirk appearing on his face, cinematic realism, authentic photography, high-contrast lighting, --ar 9:16
VIDEO_PROMPT: Lu, 28-year-old East Asian man, slicked-back black hair, rimless glasses, dark grey tailored suit, cold and powerful aura, Lu adjusts his glasses with a swift, sharp finger gesture, a confident smirk appears on his lips, camera dynamically tilts up capturing his sharp eyes behind the lenses, fast pacing 0-10s, Dialogue (Lu, sneering): "Are you sure you want to fire me, Manager Zhang?", cinematic realism, authentic photography, no watermark, no logo, no subtitles, aspect_ratio: 9:16
VOICEOVER: Lu sneers, "Are you sure you want to fire me, Manager Zhang?"
ON_SCREEN_TEXT: Unshaken Confidence
=== SHOT_3 ===
DURATION_S: 10
CAMERA: rapid pan + sudden push-in zoom
IMAGE_PROMPT: Zhang, 35-year-old East Asian woman, wavy long hair, heavy makeup, white professional pantsuit, arrogant expression; Lu, 28-year-old East Asian man, slicked-back black hair, rimless glasses, dark grey tailored suit, cold and powerful aura, Lu pulls out a sleek gold corporate badge from his inner suit pocket and tosses it sharply onto the desk, Zhang's face turns pale with sheer terror, cinematic realism, authentic photography, high-contrast lighting, --ar 9:16
VIDEO_PROMPT: Zhang, 35-year-old East Asian woman, wavy long hair, heavy makeup, white professional pantsuit, arrogant expression; Lu, 28-year-old East Asian man, slicked-back black hair, rimless glasses, dark grey tailored suit, cold and powerful aura, Lu swiftly tosses a gold badge onto the desk, camera instantly snaps a sharp macro zoom onto the badge then pans up to Zhang's terrified expression, zero delay, fast-paced motion 0-10s, Dialogue (Lu, cold): "Look closely at what this is.", cinematic realism, authentic photography, no watermark, no logo, no subtitles, aspect_ratio: 9:16
VOICEOVER: Lu slams the badge down: "Look closely at what this is."
ON_SCREEN_TEXT: The Reveal
=== SHOT_4 ===
DURATION_S: 10
CAMERA: extreme close-up + rapid whip pan
IMAGE_PROMPT: Zhang, 35-year-old East Asian woman, wavy long hair, heavy makeup, white professional pantsuit, terrified expression, sweat dripping down her face, staring down at the desk in sheer shock, eyes wide open, cinematic realism, authentic photography, high-contrast lighting, --ar 9:16
VIDEO_PROMPT: Zhang, 35-year-old East Asian woman, wavy long hair, heavy makeup, white professional pantsuit, terrified expression, Zhang stumbles back a step, trembling violently as she recognizes the badge, camera executes a rapid whip pan from the badge to her trembling hands, fast pacing 0-10s, Dialogue (Zhang, panicked): "The global chairman's personal crest?! You... you are...", cinematic realism, authentic photography, no watermark, no logo, no subtitles, aspect_ratio: 9:16
VOICEOVER: "The global chairman's personal crest?! You... you are..."
ON_SCREEN_TEXT: Instant Regret
=== SHOT_5 ===
DURATION_S: 10
CAMERA: low angle, dynamic tracking shot
IMAGE_PROMPT: Zhang, 35-year-old East Asian woman, wavy long hair, heavy makeup, white professional pantsuit, arrogant expression; Lu, 28-year-old East Asian man, slicked-back black hair, rimless glasses, dark grey tailored suit, cold and powerful aura, Lu puts one hand in his pocket, turns around sharply, and sits down dominantly into the CEO executive chair, Zhang stands frozen in the background trembling with despair, cinematic realism, authentic photography, high-contrast lighting, --ar 9:16
VIDEO_PROMPT: Zhang, 35-year-old East Asian woman, wavy long hair, heavy makeup, white professional pantsuit, arrogant expression; Lu, 28-year-old East Asian man, slicked-back black hair, rimless glasses, dark grey tailored suit, cold and powerful aura, Lu turns around with a swift, smooth motion and sits firmly into the CEO chair, camera tracks his movement dynamically, Zhang trembles in panic in the background, fast pacing 0-10s, Dialogue (Lu, cold): "My undercover inspection is over. Now, pack your bags and get out.", cinematic realism, authentic photography, no watermark, no logo, no subtitles, aspect_ratio: 9:16
VOICEOVER: "My undercover inspection is over. Now, pack your bags and get out."
ON_SCREEN_TEXT: The Ultimate Payback
これらの例がうまく機能する理由:
- IDENTITY_ANCHORは、すべてのIMAGE_PROMPTとVIDEO_PROMPTにおける最初のカンマ区切りのセグメントであり、5つすべてのショットでバイト単位で完全に一致します。RENDER_STYLEは各プロンプトの末尾近くに配置され、こちらも一字一句そのまま繰り返されます。この繰り返しによって、動画モデルのアイデンティティとスタイルのアンカーが安定します。
- ショット2と4では、意図的に2人目のキャラクターをIDENTITY_ANCHORの断片から省いています。カメラに映るキャラクターだけを指定します。アンカーの「語彙」は一貫しています(同じ名前、同じ年齢・服装の文字列)が、プロンプトに集中させるため、カメラに映らない人物は省略してもかまいません。
- 各VIDEO_PROMPTには、10秒のビートごとに主要なアクションを1つ、カメラの動きを1つだけ含めます。1つのショットに複数のビートを詰め込もうとすると、結果がぼやけます。
- ON_SCREEN_TEXTは短くします(CJK文字4字、または英単語2~3語)。10 fpsで読める長さを確保しつつ、ナレーションや主要な被写体と競合しない短さにします。
- VOICEOVERの引用符内の句読点は、後でそのままSRTに反映されます。句読点は、ai-video-script → srt-from-script → subtitle-burnerのUTF-8往復変換を経ても保持されます。
このスキルが行わないこと
- 画像/動画API自体は呼び出しません。テキストを出力するだけです。
OVERVIEW.DURATION_Sに違反するSHOTの長さは設定しません。- 1回の処理で10ショットを超えて生成しません。