LTX-2のシナリオとショット設計

LTX-2で36シーンの動画を作るため、シナリオ、各ショット、クリップ間の継続性を分けて設計しました。動画生成を組み込むAIシステム開発で使う、プロンプトと後段処理の条件です。

  1. 36シーン・ホラーシナリオ生成テンプレート — LLMにシナリオを書かせるためのシステムプロンプト
  2. シネマティック・プロンプト設計原則 — 個々のショットの品質を上げるための構造
  3. マルチシーン連結の継続性制御 — クリップ間の破綻を防ぐパイプライン設計

前提

  • 動画生成エンジン: LTX-2(5秒クリップ単位で生成)
  • 解像度: 3840x2160(4K)、24fps
  • シナリオ生成: ローカルLLM(Mixtral等)でSTORY→SCENES→LTX2_PROMPTSを一括生成
  • パイプライン: シーン単位で生成→ffmpegで連結→音声は後段で合成

1. 36シーン・ホラーシナリオ生成テンプレート

設計意図

Monstral-123BのNVFP4でホラーシナリオを生成すると、次の問題がありました。

  • シーン数が20〜50でばらつき、36固定が実現できない
  • ナラティブ構造が崩れ、序破急が不明確
  • 台詞が途中で消滅し、無音シーンが大量に出現
  • エンディングが曖昧か、唐突な「妄想落ち」に陥る

出力スキーマと規則を固定し、中規模モデルでも36シーンを揃える方法にしました。モデルの能力だけでなく、形式を指定していなかった点も見直しています。

出力スキーマ(固定)

出力は次の5区分だけです。説明は付けません。

  1. STORY_PROMPT — 物語の骨格(1段落)
  2. LABELS — ジャンル、トーン、モチーフ
  3. OUTLINE — 5段階構成のあらすじ
  4. SCENES_36 — Scene 01〜Scene 36(各1〜3文)
  5. LTX2_PROMPTS_36 — Shot 01〜Shot 36(各ショットの生成プロンプト一式)

Scene 01からScene 36まで、欠番・追加・前後のcommentaryを許可しません。後段で解析するための条件です。

シーン配分

  Scenes 01–08 : 日常と小さな違和感(最初の囁き、微妙なズレ)
Scenes 09–20 : 異常の増幅と反復(声が繰り返す、反射が語りかける)
Scenes 21–28 : 調査と対峙(原因の手がかり、真相の明確化)
Scenes 29–36 : 解決と結末(原因特定→具体的行動→安全回復)
  

夢オチ、妄想だけの結末、未解決の終わりを禁止します。

各シーンの必須要素

  Scene 04:
Visual: 鏡の前に立つ女性。カメラは反射にゆっくりズームイン。
Whisper: 「あなたも、見えているんでしょ?」
Sound: 蛍光灯がチカチカと鳴り、低いハム音。
  
  • Visual: 画面に映るもの
  • Camera: フレーミングまたはカメラワーク
  • Dialogue: 最低1つの台詞(Dialogue / Whisper / Voice(V.O.) / Heard Voice / Inner Voice)

全シーンに音声を入れます。台詞が自然でない場面は囁き、歪んだ声、内的独白、反射越しの声、記憶の言葉を使います。映像とaudio beatを一緒に設計する条件です。

舞台設定ルール

  • 舞台は日本(都市部または郊外)、具体的な実在地名は避ける
  • 使える文化要素:静かな住宅街、小さな家、鏡、神社、廊下、引き戸、夕方のテレビ音、蝉、風、蛍光灯
  • ゴア描写・過度な暴力は禁止。恐怖は心理的手段(囁き、影、反射、反復、孤立感)で構築する

実在地名は避け、日本の生活空間にある音や物で心理的な不安を表します。

ホラーの制約

使う要素です。

  • 囁き、影、反射、反復
  • 現実かどうか断定できない声
  • 感情的孤立

禁止するのはgraphic gore、explicit violence、dream-only ending、“it was all imagination” ending、未解決の結末です。

jump scareや残虐描写ではなく、反復、音、鏡像のずれを使います。clipごとの生成で崩れにくい小さな変化を狙います。

禁止事項ブロック

禁止事項を明示します。

  The ending must be resolved.
No dream ending.
No insanity-only explanation.
No ambiguity.
  

Story Flavors(プリセット)

入力が曖昧な場合に自動選択するプリセットです。

Flavor概要
trapped_room_mummy夏休み前に閉じ込められ、痕跡だけが残る
water_reflection水面の反射が現実を少しずつ書き換える
station_beep_phrase駅の電子音が言葉になり、人を誘導する
fox_shrine_wrath小さな祠の撤去が静かな異変を呼ぶ

flavorにlogline、key beats、resolution patternを持たせ、生成前に結末の型を指定します。

story_core テンプレート

物語の骨格です。

  {SETTING}
{PROTAGONIST}
{HELPER}
{FLAVOR}
{RESOLUTION_PATTERN}
{MOTIFS}
  

この段階は心理、音、影、水、反復を使い、残虐描写を抑えます。shotの指示とは分け、ジャンルと物語の進行を定義します。

LTX2_PROMPTS_36 のショット定義

  Shot 01:
  DURATION=5s FPS=24 RES=3840x2160
  PROMPT: <映像指示中心の具体的短文>
  NEGATIVE: low quality, blurry, distorted hands, deformed face, gore, blood
  CAMERA: handheld POV / slow push-in / over-the-shoulder
  LIGHTING: low-key, streetlight, fluorescent hum
  AUDIO_CUE: <環境音、台詞、沈黙>
  CONTINUITY: prev=none next=shared_object:mirror
  SEED_HINT: episode_seed+01
  

顔のアップを避け、手、背中、シルエットを使います。テロップは後段のffmpegで合成します。

項目に分けると、NEGATIVEの共有、SEED_HINTの変更、CONTINUITYの自動生成、検証、再試行を個別に扱えます。

LTX-2 Style Defaults

  DURATION  : 5 seconds
FPS       : 24
RESOLUTION: 3840x2160 (4K)
STYLE     : cinematic, realistic, subtle horror, Japanese suburban atmosphere
CAMERA    : handheld POV / slow push-in / over-the-shoulder (顔アップ回避)
LIGHTING  : low-key, streetlight, fluorescent hum, rainy reflections
  

共通NEGATIVEとSEED_HINTの方針です。


2. 各ショットの書き方

カメラ位置から書く

最初にカメラの位置を指定します。「カメラが〜を表示する」ではなく、撮影用語で書きます。

  • static camera / slow pan / close framing / wide interior shot / shallow depth
  • カメラの位置、視界、空間の圧縮感を明示する

説明より先に位置とレンズの条件を置き、生成のぶれを抑える方針です。

照明・色・質感を揃える

照明、色、表面の質感を各プロンプトに共通で入れます。

要素語彙例
Lightingwarm, cold, flickering, fluorescent, natural, overcast
Color palettemuted pastels, warm golds, sickly greens, neutral grays
Surface texturesfogged glass, worn metal, dust in light beams
Moodcozy, oppressive, sterile, playful

シーン間の変化を抑えるためです。

アクションは連続する物理シーケンスとして記述

動作を、順に続く身体の動きとして書きます。

  Leaning into frame → Hesitating near the handle → Exhaling slowly to fog the glass
  

矢印(→)で移動の段階を示します。動きを省略すると瞬間移動する場合があるため、中間動作も記述します。

振る舞いによるキャラクター定義

人物は姿勢、表情、間、癖で指定し、年齢、服装、感情も入れます。Pixar-style actingを参考に、立ったままの属性一覧にしない方針です。

カメラワークはナラティブツール

  • スローパン: 観察と緊張の構築
  • 固定ショット: 緊張感やコメディの「間」
  • 意図のない突発的な動きは punchline をサポートする場合を除いて避ける
  • 連続クリップ間ではパンの方向と速度を一貫させる
  • 前シーンから継続する場合は Continue the same pan と明記

continue the same panを、隣接clipへ動きを引き継ぐ指示に使います。

オーディオは必須

音声も動作のタイミングに合わせます。

  • Ambient Sound: オーブンのハミング、蒸気の音、遠くの騒音
  • Dialogue Beats: 引用符(" “)を用いたセリフ、[Beat] [Silence] による沈黙の挿入
  • 話し方: Whispering vs speaking vs muttering を明示
  • 音楽は明示的に含めるか除外するかを宣言する

映像だけを指示すると後付けの音がずれるため、音も最初から指定します。

プロンプト構造テンプレート

記述順は次の7段階です。

  1. Shot Establishment(ショットの確立)
  2. Environment & Lighting(環境と照明)
  3. Character Position & Emotion(キャラクターの配置と感情)
  4. Core Action Sequence(主要アクションシーケンス)
  5. Camera Movement(カメラワーク+タイミング)
  6. Audio & Dialogue(オーディオとセリフ)
  7. Ending Visual Beat(終わりの視覚的間)

最後のEnding visual beatも独立して指定し、shotの終わり方を決めます。

Example: Cinematic Prompt (≈600 words)

7段階を使ったshotの例です。

  INT. OVEN – DAY.
Static camera positioned from inside the oven, looking outward through the slightly fogged glass door. The frame is tight and claustrophobic, bordered by dark metal edges. Warm golden light fills the interior, reflecting softly off the glass and illuminating a tray of freshly baked cookies resting just below frame center. Fine steam curls upward, leaving faint streaks across the glass.

The color palette is rich and inviting: honeyed browns, soft ambers, and glowing highlights. The air feels warm and dense, as if the oven itself is breathing.

A baker leans into frame from outside the oven door. His face slowly fills the glass, eyes narrowed in intense concentration. His breath fogs the glass further as he exhales, creating overlapping clouds that briefly obscure his features before clearing again. He doesn't blink. His posture is rigid, shoulders slightly hunched, as though this moment demands absolute precision.

The camera remains static as subtle reflections ripple across the glass from the rising heat.

Baker (whispering, reverent):
"Today… I achieve perfection."

He tilts his head slightly, adjusting his angle to catch the light just right. His eyes track the edges of the cookies, watching for the slightest change in color. One hand lifts slowly into frame, hovering near the oven door handle but not touching it yet.

The steam grows thicker for a moment, then thins.

Baker (still whispering, building intensity):
"Golden edges. Soft center."

He leans even closer, nose nearly pressing against the glass. The camera holds, letting the silence stretch just long enough to feel deliberate.

Baker (a hushed gasp):
"The gods themselves will smell these cookies… and weep."

A beat.
The baker's eyes widen slightly as a new thought intrudes. His hand freezes mid-air.

Baker:
"Wait—"

Silence. The hum of the oven is suddenly very noticeable.

Baker (uncertain, quieter):
"Did I… forget the chocolate chips?"

Another beat. Just long enough to be uncomfortable.

Cut to a side angle outside the oven. The camera now slowly pans from left to right, revealing a coworker casually stepping into frame. The coworker chews loudly, crumbs at the corner of his mouth, utterly unconcerned. The lighting here is flatter and cooler, contrasting the oven's warmth.

Coworker (mouth full, casual):
"Nope. You forgot the sugar."

The pan continues for a moment as the coworker shrugs and wanders off.

Cut back inside the oven.
A quick push-in as the baker's face slams back into frame, pressed against the glass. His expression is pure horror. His breath fogs the glass completely now, obscuring the cookies behind it.

Behind the fog, the cookies visibly sag and deflate in slow motion, their once-perfect shape collapsing inward. Steam rises dramatically, drifting upward like a defeated sigh.

No music. Only the oven's hum and the faint crackle of heat.

The baker stares, unmoving.

Baker (barely audible):
"...No."

The camera holds on the fogged glass as the steam slowly dissipates, revealing the ruined cookies one last time before the shot ends.
  

例の構成です。

  • Shot establishment: oven 内部から外を見る static camera で始まる
  • Environment: warm golden light と honeyed browns で固定される
  • Character: posture と表情で定義され、He doesn't blink がそのまま演技の芯になっている
  • Action: leaning、exhaling、hovering、freezing の連続で進む。teleporting がない
  • Camera: side angle への切り替えは情報を出すためだけに動き、無意味に振り回さない
  • Audio: whisper、silence、oven hum、heat crackle が scene の timing に一貫して組み込まれている

No music. Only the oven's hum and the faint crackle of heat.で音楽を除き、オーブン音と沈黙を使っています。


3. マルチシーン連結の継続性制御

課題

複数シーンをつなぐ際の課題です。

  • ビジュアル・ドリフト: ショットが変わるたびにライティングやテクスチャが微変する
  • カメラの断絶: パンの速度や方向がクリップ間で一致しない
  • タイミングの喪失: 演技の「間」や「溜め」を制御できない

Last-frame Continuity(ラストフレーム連結)

  1. 継続指示: 次のシーンの冒頭で Continue the same pan と明記
  2. シード値のインクリメント: 同一シード値をベースにショットインデックスを加算(episode_seed + shot_idx)。微細な変動は許容しつつ大枠の一貫性を維持
  3. テクスチャの共有: 前のショットで発生した視覚的状態(ガラスの曇り等)を、次のショットの前提条件として引き継ぐ

CONTINUITY フィールドの運用

CONTINUITYのprev=とnext=で、共有物、音、動作、場所のつながりを指定します。

  CONTINUITY: prev=shared_sound:fluorescent_hum next=location_transition:hallway_to_kitchen
  

独立したshotのまま連結しないための指示です。

テレポート現象の回避

中間の身体動作を省略せず、空間をどう移動するかを書きます。


サンプル出力の評価

OUTPUT 1(狐の祟り)

STORY_PROMPT、LABELS、OUTLINE、SCENES_36が揃い、物語は成立しています。camera指示が単調で、LTX-2へ直接渡すshotの仕様は足りません。後半のテンプレートを加えた理由です。

OUTPUT 2(Gon の熊への変異)

復讐、変身、受容、妹との再会、安息へ進み、OUTPUT 1より結末が明確です。ただしcamera指示は同様に単調でした。


変数化の実験痕跡

MAIN_CHARCTER="Gon"、SUB_CHARCTERS="Mosuke, Yayoi"、FLAVOR=...は実験中の表記です。同じscene構成で人物とflavorを差し替える狙いで、完成したスキーマではありません。

継続運用に向けた整理案です。

  • 重複する System Prompt Specification と Copy-Paste System Prompt を canonical block 一つにまとめる
  • OUTPUT 1 と OUTPUT 2 を examples ディレクトリへ分離する
  • MAIN_CHARCTER のような変数を YAML か JSON に寄せて parser を安定させる
  • SCENES_36 と LTX2_PROMPTS_36 の整合性チェックを別スクリプトで自動化する

prevとnextの対応、結末の具体的な動作、無音シーンの混入を自動チェックする案です。



再現方法

最小構成

  1. LTX-2の動画生成環境(ComfyUIまたはAPI)
  2. シナリオ生成用LLM(ローカルでもAPI経由でも可)
  3. ffmpeg(クリップ連結・テロップ合成)

ホラーシナリオ生成の手順

  1. Story Flavorを選択(または自由入力)
  2. システムプロンプト(本記事のテンプレート)をLLMに投入
  3. 出力のSCENES_36とLTX2_PROMPTS_36を取得
  4. 各ショットのPROMPTをLTX-2に順次投入
  5. 生成されたクリップをffmpegで連結
  6. 音声・テロップは後段で合成

シネマティック品質のチェックリスト

  • 各プロンプトの先頭にカメラ位置が明記されているか
  • ライティングとカラーパレットが一貫しているか
  • アクションが矢印(→)で段階的に記述されているか
  • 隣接ショット間でCONTINUITYが定義されているか
  • オーディオ指示が含まれているか
  • 顔のアップを避け、手・背中・シルエットを優先しているか