chalk-roster は何をしますか?
スティックフィギュアやチョークのショート動画は、エピソードの途中でビーニー帽の色が変わったり、小道具がテレポートしたり、フックが12秒目に届かなかったりすると崩れてしまいます。chalk-rosterは、プリレンダリングの連続性ゲートです:キャストとスタイルを一度ロックし、タイムドビートを書き、チェッカーを実行し、その後にのみ生成予算を使います。
使用するタイミング
- 顔出しなし / スティック / 線画 / チョークアニメのショート動画で、繰り返し登場するキャストがいる場合
- 同じシルエットを認識可能に保つ必要があるマルチシーン解説
- スタイルがエピソード間で一貫している必要があるシリーズ作品
- ショットごとのプロンプトにすぐに飛びついてしまうような計画
使用しないでください:実写の編集タイミング、音楽ロックカット、サウンドミックス分解、人間の写真ポーズブロッキング、チャットスタンプパックなどは対象外です。
基本概念
- ロスターカード(固定):チャンネル + スタイルロック + 固定マーカーと禁止リストを持つキャストメンバー。
- ビートシート:順序付けられたショット。持続時間、登場キャスト、アクション(アイドル禁止)、小道具マップ、オプションの転送、VO単語数、フックフラグを含む。
- ゲート:
chalkroster.py check→ SHIP / FIX / HOLD。
判定
| 判定 | 意味 | クリップ生成? |
|---|---|---|
SHIP | 連続性クリーン | はい |
FIX | 軽微な問題(VO密度、移動方向、禁止ワード) | ビートを修正し、再チェック |
HOLD | 重大な破綻(未知のキャスト、小道具ジャンプ、フックなし、不完全なスタイル) | 生成しない |
手順
templates/roster.jsonをroster.jsonにコピー。style(アスペクト比、線の太さ、頭の塗りつぶし、手足ルール、背景ルール、アクセント上限)とcast(id、マーカー≥1、forbid)を記入。templates/beats.jsonをbeats.jsonにコピー。ショットごとに1行ずつ。早期フックをマーク。小道具保持者をリスト。transfersの下にtransfer: trueで全ての受け渡しを記録。- リント:
python3 scripts/chalkroster.py lint roster.json beats.json - ゲート:
python3 scripts/chalkroster.py check roster.json beats.json SHIPの場合のみ:各ショットを生成プロンプトに展開し、登場する各キャストメンバーに対して固定マーカーをそのまま繰り返す。FIX/HOLDの場合:リストされた問題を修正。転送イベントなしでマーカー変更を「近似」してはいけません。
ロスターの構造
{
"channel": {"name": "chalk-bytes", "lock_style_across_episodes": true},
"vo_lang": "en",
"style": {
"aspect_ratio": "9:16",
"line_weight": "medium",
"head_fill": "hollow",
"limb_rule": "two-arms-two-legs",
"bg_rule": "flat-black",
"max_accent_colors": 3,
"accent_colors": ["vivid red", "electric blue", "warm gold"],
"fingerprint": "hollow-head/medium-line/flat-black/3-accent"
},
"cast": [
{
"id": "guide",
"role": "narrator-avatar",
"silhouette": "tall-thin",
"markers": ["red beanie", "yellow shirt"],
"forbid": ["photoreal face", "extra arms"]
}
]
}
ビートの構造
各ショットには duration_s、action、そして通常 cast が必要です。小道具はマップ prop → holder_id|null で表します。保持者やマーカーを変更するには明示的な転送が必要です。
VO密度の幅(語/秒):英語 1.8–2.9、中国語 3.2–5.2。フックは hook_deadline_s(デフォルト5)までに配置する必要があります。
例
- クリーンな30秒エピソード:
examples/cache-lie-roster.json+examples/cache-lie-beats.json→SHIP。 - 小道具テレポート:同じロスターに対する
examples/broken-prop-jump-beats.json→ 転送が記録されるまでHOLD。 - ビルトイン:
python3 scripts/chalkroster.py demo
ヒント
- マーカーは平易な言葉("赤いビーニー")で記入し、16進コードや解剖学的レシピは避けます。
- シルエットの変更 = 新しいキャストIDであり、こっそりマーカーを編集するのではありません。
- アクセントカラーは
max_accent_colors以下に抑え、通常の言語で名前を付けます。 - シリーズモード:
channel.lock_style_across_episodesを設定し、エピソード間でstyle.fingerprintを同一に保ちます。 - アイドル状態のチョークフィギュアはゲートを通過しません — すべてのショットに具体的な
actionが必要です。