Communitygithub.com

fangdididi/chalk-roster

スティックフィギュア、線画、またはチョークスタイルのアニメーションショートを大量生成する前に、キャストとスタイルのロスター、タイムドビートシートを固定し、連続性(マーカー、小道具、フック、VO密度)をチェックしてSHIP / FIX / HOLD判定を行います。顔出しなしのYouTubeスティック動画エピソード、マルチシーン線画解説、ショット間で設定がずれてはいけないチョークキャストの計画時に使用します。

chalk-roster とは?

chalk-rosterは、スティックフィギュアやチョークスタイルのアニメーションショート動画における連続性を保証するためのプリレンダリングゲートスキルです。キャラクターのマーカー(例:赤いビーニー帽)や小道具の位置がショット間で変わってしまう問題を防ぎます。まずキャストとスタイルを定義したロスターカードと、各ショットの時間・アクション・登場キャスト・VO密度・フック位置などを記録したビートシートを作成し、同梱のスクリプトでチェックを行います。チェック結果はSHIP(問題なし)、FIX(微調整必要)、HOLD(重大な不整合)の3段階で、SHIP判定が出た場合のみ生成に進むことで、無駄な生成コストを削減します。主に顔出しなしのYouTubeシリーズやマルチシーン解説動画に向いており、キャストとスタイルの一貫性を自動で検証できる点が大きな利点です。

対応~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/fangdididi/chalk-roster/tree/HEAD

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

chalk-roster は何をしますか?

スティックフィギュアやチョークのショート動画は、エピソードの途中でビーニー帽の色が変わったり、小道具がテレポートしたり、フックが12秒目に届かなかったりすると崩れてしまいます。chalk-rosterは、プリレンダリングの連続性ゲートです:キャストとスタイルを一度ロックし、タイムドビートを書き、チェッカーを実行し、その後にのみ生成予算を使います。

使用するタイミング

  • 顔出しなし / スティック / 線画 / チョークアニメのショート動画で、繰り返し登場するキャストがいる場合
  • 同じシルエットを認識可能に保つ必要があるマルチシーン解説
  • スタイルがエピソード間で一貫している必要があるシリーズ作品
  • ショットごとのプロンプトにすぐに飛びついてしまうような計画

使用しないでください:実写の編集タイミング、音楽ロックカット、サウンドミックス分解、人間の写真ポーズブロッキング、チャットスタンプパックなどは対象外です。

基本概念

  1. ロスターカード(固定):チャンネル + スタイルロック + 固定マーカーと禁止リストを持つキャストメンバー。
  2. ビートシート:順序付けられたショット。持続時間、登場キャスト、アクション(アイドル禁止)、小道具マップ、オプションの転送、VO単語数、フックフラグを含む。
  3. ゲート:chalkroster.py check → SHIP / FIX / HOLD。

判定

判定意味クリップ生成?
SHIP連続性クリーンはい
FIX軽微な問題(VO密度、移動方向、禁止ワード)ビートを修正し、再チェック
HOLD重大な破綻(未知のキャスト、小道具ジャンプ、フックなし、不完全なスタイル)生成しない

手順

  1. templates/roster.json を roster.json にコピー。style(アスペクト比、線の太さ、頭の塗りつぶし、手足ルール、背景ルール、アクセント上限)と cast(id、マーカー≥1、forbid)を記入。
  2. templates/beats.json を beats.json にコピー。ショットごとに1行ずつ。早期フックをマーク。小道具保持者をリスト。transfers の下に transfer: true で全ての受け渡しを記録。
  3. リント:python3 scripts/chalkroster.py lint roster.json beats.json
  4. ゲート:python3 scripts/chalkroster.py check roster.json beats.json
  5. SHIP の場合のみ:各ショットを生成プロンプトに展開し、登場する各キャストメンバーに対して固定マーカーをそのまま繰り返す。
  6. 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 が必要です。

関連スキル