Comfy Director は何をしますか?
ストーリーが先、映像はその後。マルチショットのAI映画は、レンダリングではなく編集で失敗します。ビート同士が因果関係を持たない場合、たとえ各クリップがどれほど美しくても、それはストーリーの衣をまとったモンタージュにしかなりません。
必須の前提知識: comfyスキル(CLI操作とレシピパス — apply/capture/foreach — 再利用可能なマルチステージグラフの扱い)。ジョブが失敗した場合は、comfy-debug を使用してください。
作業の順序
- コンセプト — 見知らぬ人でも再現できるアイデアを一つに絞る。
- 脚本 — パイプラインに触れる前に。最初にユーザーに提示する。
- ショットリスト — 各シーンに連続性戦略を割り当てる。
- オーディオデザイン — 映像ではなく、脚本の感情的なビートに合わせて行う。
- 制作 → コンフォーム → QC。
ステップ2を飛ばしてレンダリングに進むことが、カットが没になる最大の原因です。
脚本のルール
- カメラが追える主人公は一人。すべてのショットで認識可能であること。
- 因果関係テスト: すべてのカットは「そしてそれ故に…」に答えること — 「そして次に、どこか別の場所で…」ではダメ。ビートの順序を変えても何も壊れないなら、それはまだストーリーではありません。
- 他人テスト: 背景知識ゼロの人でも、プロットを2文で説明できること(「XはAを望んだが、Bがそれを妨げた。そこでXはCを行い、その結果Dになった」)。
- 各ビートにはタイミングが設定され、合計で目標の再生時間になること。
コンセプトのルール
- ブランド/製品は 感じさせるものであり、名前を出すものではない:その哲学を主張する。画面上に引用された内部ジョークやコミュニティの伝承は、ファンサービスとして読まれる。
- クライアントが言及したテクニック(「スタイル変換」、モデル名など)は火花であって、命令ではない — アイデアが必要とする場合にのみ使用すること。テクニックを中心に映像を構築するのは、監督ではなくベンダーの証です。
- 奇妙さは複合的にする:驚くべき主体、客体、設定のすべてが揃うこと。普通のフレームに奇妙な要素が一つあるだけでは、飾りにすぎません。
ショットのプロンプト
- フォトリアルなショット: 実写撮影監督/フィルムストックの言語のみ。フォトリアルなプロンプトにイラストレーター、アニメ、コミックの名前を一つでも混ぜると、台無しになります。イラスト的な参照は、意図的にスタイリングされたショットのみに属します。
- モーションプロンプトは、シーンがどのように動くかを記述し、中に何があるかは記述しません(
comfyスキルのビデオに関する注意点を参照 — t2v/i2vモデルのトラップ、SaveVideo、fpsの配線など)。
連続性ツールキット
ショットごとに、おおまかな強さの順で選択:
| 戦略 | 使用場面 |
|---|---|
| 各ショットのi2vグラフにキャラクター/場所の参照画像を組み込む | 主人公の同一性 |
| 参照画像編集により、同じアイデンティティで新しいフレーミングを生成(1つのヒーロー → Nアングル) | カット間で認識可能な顔 |
| ショットNのキーフレームがショットN+1をシードする(画像参照によるリスタイルまたは終了フレーム) | 連続したアクション |
| 実際に再生される音声そのものをトーキングヘッドに与える(KlingAvatar)。同じリップシンクヘッドのアングルを切り替える — VOにBロールをかぶせてはいけない | リアルに感じさせたい会話 |
| すべてのプロンプトに同じワードローブ/ライト/レンズのラインをそのまま繰り返す | 安価なベースラインの接着剤 |
ショットが連続性を維持できない場合、脚本を書き直してそのショットを不要にすること — 破綻をそのまま出荷してはいけません。
オーディオ
- スコア = ストーリーの転換点で結合された短いデザインキューの集合。1回の長い生成は動的なアークに追従しません(ピークが必要なまさにその場所で反転します)。
- VOは計算で配置する:ステムの長さとビートのウィンドウを照合し、ミキシング前に行う。
- スコアはVOの下にダックさせ、最終ミックスはラウドネスノーマライズする(約-14 LUFS)。
- 会話は構造的にリップシンクさせること。 実際に再生される音声そのもので口を駆動し(KlingAvatarの
sound_file)、同じリップシンクヘッドのアングルを切り替える — 連続したVOにBロールをかぶせるとモンタージュとして読まれ、i2vで生成された口はドリフトします。「リップシンクが合っていない/リアルじゃない」は典型的なリジェクト理由です(音声はグラフ内で生成 — クラウドのLoadAudioはアップロードを認識できません。comfyスキルのオーディオに関する注意点を参照)。 - 高価なレンダリングの前に、音声とキャスティングを耳で確定する。 声/アクセントは主観的であり、波形から読み取れません。1行の候補TTSテイクをいくつか安価にレンダリングし、ユーザーに選んでもらい、その勝者の音声を、高コストで
transient_authのリスクがあるアバター/リップシンクショットに焼き付ける。拒否された声のために全てを再レンダリングするのは避けられる浪費です。主人公の外見についても同じロジック:全てのショットを生成する前に、ヒーロースチルを承認してもらう。 - ミックスは信頼ではなく測定で検証する。 レンダリング結果は聞こえません — 各セクションを
ffmpeg volumedetectで確認する:終わりが「無音」だったり、ラインが埋もれていたりすると、-91 dB付近のウィンドウとして現れます。全てのビートが適切なレベルで存在することを確認してから、完了と宣言する。
制作オペレーション
-
すべてのサブミット — ショット、キーフレーム、オーディオステム、再サブミット — を
job_ids.txtに追加する(<ジョブ名> <プロンプトID>)サブミット時に。追記専用:再サブミットは新しい行を追加する(shot_s3_resubmit <ID>)、上書きはしない。これにより、死んだプロンプトIDでもショットの同一性が保たれます。 -
プロジェクトルートに
LOG.mdを保持する:追記専用のイベントログで、イベント発生時に書く(セッション終了時ではない) — サブミット/再サブミットごとに1行(+失敗コード)、QC判定ごとに1行(+リロール理由)、そして以前の作業を無効にする決定ごとに1行:再キャスト、プロンプト変更、どの参照画像やステムが現在正規版か。フレーム単位の所見はqc/QC_LOG.mdに保存;LOG.mdがそれらを索引付けします。17:36 ERROR shot_s3 transient_auth -> RESUBMIT 27dd45b4 (同じワークフロー、再ログイン不要) 17:44 QC shot_s2 FAIL background-crawl -> リロール(同じkf、新しいシード);2回目も失敗したらビートを再編集 17:50 DECISION 主人公を再キャスト -> ref_ray.png が正規版;vo2, vo6 は古いので再生成 -
復旧契約: 記憶を一切持たない後続のエージェントが、ディスク上の情報だけで再開できること:
LOG.md(何が起こり、なぜか)→job_ids.txt(どのジョブか)→comfy jobs status(それらの状態)。LOG.mdにない決定はセッションとともに消えます — 完了済みだが古いジョブ(以前のキャスティングのVOステム)は、そうでなければ良いジョブと見分けがつきません。 -
ダウンロードしたすべてのクリップをffprobeで確認し、仕様外の長さ/寸法をコンフォーム前に正規化する。
-
脚本に照らして、すべてのクリップから1フレームをQCする。
-
正確な再生時間:ffmpegでビートごとにトリミング/リタイムし、期待に頼らない。
よくある間違い(それぞれ実際のカットを潰しました)
| 間違い | 結果 |
|---|---|
| 脚本より先にレンダリング | 「因果関係のない8つのハンサムなビート」 |
| 画面上のコミュニティの伝承 | 「直接的すぎる、ファンサービス」 |
| クライアントが言及したテクニックをコンセプトに | 「アイデアを引き出すために言ったのに」 |
| 連続性の計画なし | 主人公がカットごとに顔を変える |
| 1回の40秒音楽生成 | クライマックスでアークが反転 |
| 連続するVOにBロールをかぶせる | 「モンタージュのように感じる/音声が合わない」 |
| ユーザーが聞く前に声をN個のショットに焼き付ける | 拒否されたときに全てを再レンダリング |
| トーキングヘッドクリップの結合をただくっつける | 声が同期からずれる(アバターがビデオを音声より長くパディングするため) |