Communitygithub.com

chalk-roster:粉筆風角色清單與連續性檢查器

在大量生成火柴人、線稿或粉筆風動畫短片前,先凍結角色與風格清單以及時間節拍表,再透過連續性檢查(標記、道具、鉤子、配音密度)決定出稿(SHIP)、修正(FIX)或暫停(HOLD)。適用於規劃無臉 YouTube 影集、多場景解說影片,或任何必須保持角色一致性的粉筆風動畫。

chalk-roster:粉筆風角色清單與連續性檢查器 是什麼?

chalk-roster 是一個專為火柴人、線稿及粉筆風動畫設計的「前渲染連續性檢查閘門」。當多集作品或單集內出現角色帽子顏色變化、道具突然移動、或鉤子(hook)未在正確時間點出現時,該工具能有效解決這些問題。它支援 Claude Code、Cursor 等開發者工具,其核心流程包含三個步驟:首先建立「角色清單」(roster card),固定頻道風格、角色標記與禁止元素;其次製作「節拍表」(beat sheet),記錄每個鏡頭的時長、角色出場、動作、道具歸屬、轉場與配音字數;最後透過 `chalkroster.py check` 指令產生 SHIP(可安心生成)、FIX(軟性問題需修正)、HOLD(硬性錯誤禁止生成)三種結果。此工具特別適合無臉 YouTube 動畫、多場景解說以及系列作品,能確保每集之間的視覺一致性,避免手動逐鏡頭提示時遺漏關鍵連續性規則。

相容平台~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/fangdididi/chalk-roster/tree/HEAD

在你喜歡的 AI 中提問

開啟一個已預先載入此 Agent Skill 的新對話。

說明文件

chalk-roster

火柴人與粉筆風動畫短片常因帽子顏色在中途改變、道具瞬移、或鉤子(hook)在第十二秒才出現而崩潰。chalk-roster 是一個預渲染連續性檢查閘門:一次鎖定角色與風格,撰寫時間節拍,執行檢查,然後才投入生成算力。

使用時機

  • 無臉 / 火柴人 / 線稿 / 粉筆風動畫短片,且擁有重複出現的角色陣容
  • 多場景解說影片,需確保相同剪影在不同鏡頭中保持可辨識性
  • 系列作品,需讓風格在每集之間留下一致指紋
  • 任何原本打算直接跳入逐鏡頭提示的計畫

不要將此工具用於:真人影片剪接時間調整、音樂對齊剪輯、混音拆解、真人照片動作擺拍、或聊天貼圖包——那些是其他任務。

核心概念

  1. 角色清單卡(已凍結):頻道 + 風格鎖定 + 角色成員,需附上固定標記與禁止清單。
  2. 節拍表:依序排列的鏡頭,包含時長、出場角色、動作(禁止閒置)、道具對應表、可選的轉場記錄、配音字數與鉤子標記。
  3. 檢查閘門:chalkroster.py check → SHIP / FIX / HOLD。

判定結果

判定意義是否生成片段?
SHIP連續性乾淨是
FIX軟性問題(配音密度、移動方向、禁止用詞)修正節拍,再重新檢查
HOLD硬性錯誤(未知角色、道具跳躍、無鉤子、風格不完整)不要生成

操作步驟

  1. 複製 templates/roster.json → roster.json。填寫 style(畫面比例、線條粗細、頭部填充、肢體規則、背景規則、強調色上限)與 cast(id、標記≥1、禁止項目)。
  2. 複製 templates/beats.json → beats.json。每行一個鏡頭;標記早期鉤子;列出道具持有者;在 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 的對應表表示。變更持有者或標記需要明確的轉場記錄。

配音密度範圍(字/秒):英文 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

小技巧

  • 標記使用普通文字(如“紅色毛帽”),而非色碼或解剖學描述。
  • 剪影改變 = 新的角色 id,而非悄然修改標記。
  • 強調色數量 ≤ max_accent_colors;以日常用語命名。
  • 系列模式:設定 channel.lock_style_across_episodes 並讓 style.fingerprint 在各集保持一致。
  • 閒置的粉筆角色會使檢查失敗——每個鏡頭都需要具體的 action。

相關技能