FilmForge Painter
ショットリストを、1つの映画に属する絵画に変換します。すべてのプロンプトは固定部分(スタイルロック、台帳、ショットリスト)から組み立てられ、即興はありません。同じキャラクターは、すべてのショットで同じ単語で記述されます。lintがそれを証明してから、資金が動きます。
パス:scripts/、templates/、config/ は、このスキル内部のフォルダ(ロード時に表示されるベースディレクトリ)であり、./install.sh によって配置されます。リポジトリのクローンから作業する場合、ルートにある tools/、templates/、config/ です。
入力
shotlist.yaml(リタイム済み)、style-lock.yaml、continuity.yaml、art/sheets/ 内のシートとプレート。
ステップ1. 台帳、ショットごと
すべてのショットについて、continuity.yaml にそのエントリを記述します。フレーム内にどのキャラクターがいるか、どの小道具(持ち主付き)、どの状態(傷、煤、手首のリボン)か。小道具と状態にはスパン(from、until)があります。
python3 scripts/ledger.py check continuity.yaml --shotlist shotlist.yaml
これは逸脱があると失敗します。スパン内で持ち主がフレームにいるのに小道具がない、スパン外の小道具や状態、未知のID、ショットリストと矛盾するキャラクターリストなど。プロンプトを書く前に台帳を修正してください。
ステップ2. 各プロンプトを書く(prompts/<id>.md)
スタイルロックの文法に従い、スロットごとに(forge-style-lock、references/prompt-grammar.md を参照):
- LOOK:このショットのルック(ショットリストの
look:、なければデフォルト)、そのまま一字一句。 - REFERENCES:
style-lock.yamlのreferences:から、アタッチするアセットごとに1節、アタッチした順序で。リライト節。 - SHOT:ショットリストの構図、カメラの高さ、レンズの感覚、三分割法上の位置。
- SUBJECT AND SCALE:キャラクターごとに、台帳からのハンドル + アンカー + スケールロック。カウント。
- MOMENT:ショットのビートを1つの瞬間として。
- SETTING:場所、天気、時間帯、背景。
- LIGHT:方向、質感、温度、およびその光源。
- COLOUR:シーンのカラースクリプトの単語。
- TEXT AREA:ショットに
text_areaやナレーションがある場合。 - CONTINUITY:このショットに対する台帳の小道具と状態、そのまま一字一句。
- LOCKS:このショットをカバーするすべての
forbid節、そのまま一字一句。ショット固有の否定。 - AVOID:末尾、そのまま一字一句。
ファイル形式は、正確に:
# s02: the last match
Model: gpt-image-2.5, high, 2K, 16:9. Attach: sheet_girl, sheet_moth.
```
<プロンプト、スロット1~12を段落として>
```
最初のフェンスドブロックがプロンプトです。それ以外はすべて人へのメモです。
ステップ3. 支出前にlintを実行
python3 scripts/ledger.py prompts continuity.yaml --prompts prompts --style style-lock.yaml --shotlist shotlist.yaml
これは、ルックで始まっていない、回避テールで終わっていない、キャラクターのハンドルやスケールロック、小道具や状態のアンカー、禁止色の節が欠けている、キャラクター名が含まれているプロンプトで失敗します。production.py spend は、これが失敗している間はペイントステージの支出を拒否します。エンジンの例では、lint が s03 のスケールロック欠落をキャッチします。そのプロンプトから作成された絵画では、蛾が本来の6分の1のサイズで描かれていました。
ステップ4. 4つずつバッチでペイント
- 順序: シートとプルーフ(スタイルステージ)、次にヒーローフレーム、残りはシーンごと。再利用ショットとコードショットはコストがかかりません。これらはペイントしません。
- バッチ: 4つのプロンプト。各プロンプトには、そのREFERENCESスロットで指定された順序で参照がアタッチされます。最初に支出を記録します:
production.py spend 11.0 --item "s05-s08 batch 2"。 - ファイル:
art/film/<id>_<slug>.png(s07a_child_reaches.pngスタイル:最初にID、次にスラッグ)。再ペイントは<id>_<slug>_v2.png。グレーディングされたコード修正は<id>_<slug>_g.png。ツールは名前で最新バージョンを選択します。 - 各バッチ後: 次のバッチがペイントされる前に、forge-frame-qa がすべての絵画をフルサイズで読み取ります。バッチ1で見つかった欠陥は、バッチ2のプロンプトで、それが繰り返される前に修正されます。
ステップ5. 再ペイント
再ペイントは、原因と修正済みプロンプトとともに forge-frame-qa から届きます。修正済みプロンプトを prompts/<id>.md に配置し、lint を実行し、支出を記録し、_v2 をペイントして、QA に送り返します。原因が台帳またはスタイルロック(全員に欠けているロック)にあった場合は、そこで修正し、すべてのプロンプトで lint を再実行します。
特殊なケース
- 絵本ページ: すべてのプロンプトでレイアウト(見開き 3:2、ページ 3:4、透明背景上のビネット 1:1)とテキストエリアを指定します。すべての単語は本に設定され、ペイントされません。
- ビデオキーフレーム: この同じ文法を使用して最初のフレーム(および、動きが正確にどこかで終了しなければならない場合は最後のフレーム)をペイントします。モーションプロンプトは別のステップであり、キーフレームがQAに合格した後にのみ実行されます。
- キーポーズ(
poses: 2):ポーズごとに1つのプロンプト。MOMENT スロットを除いて同一なので、きれいにスナップします。 - プレート: 空の場所。キャラクターなし。ショット間で再利用されます。設定を保持するため、プロンプトは短くなります。
出力
- ペイントされたすべてのショットの
prompts/<id>.md。すべて lint に合格。 - すべてのショットのエントリを含む
continuity.yaml。ledger.py checkに合格。 art/film/の絵画。ID で名前が付けられ、QA の準備完了。
各バッチ前のチェックリスト
-
ledger.py checkが合格 -
ledger.py promptsがこのバッチで合格 - 参照がREFERENCESの順序でアタッチされている。正しいシートバージョン
- 支出が記録されている。4つ以下のバッチ
- 前のバッチにQA判定がある
修正テーブル
| Lint または QA の発見 | 修正するスロット |
|---|---|
| スタイルロックで始まっていない | 1: ルックをそのまま貼り付け、編集しない |
| ハンドルまたはスケールロックがない | 4: 台帳から貼り付け。フレーム内の何かとの比率を追加 |
| 小道具または状態のアンカーがない | 10: 台帳から貼り付け |
| 禁止色の節がない | 11: ルールの prompt を貼り付け |
| 名前を使用している | 4 およびその他:ハンドルに置き換え |
| 絵画のサイズやカウントが間違っている | 4: スケールロックと正確なカウント。次にシートのスケールバー |
| 被写体がフラットに照らされている | 2: リライト節。7: 光源のある光 |
| テキストや文字がペイントされている | 9 と 12: テキストエリアはコード用。「text」を回避テールに |
参考文献
references/batching.md:バッチ計画、命名、バージョン管理、実際の映画からの実践的なバッチ例