Communitygithub.com

fangdididi/chalk-roster

在批量生成火柴人、线稿或粉笔风格动画短片前,冻结角色与风格表、设定节拍时间线,并通过连续性检查(标记、道具、钩子、配音密度)判定 SHIP / FIX / HOLD。适用于规划无脸 YouTube 分集、多场景解说,或任何要求角色不漂移的粉笔短片制作。

chalk-roster 是什么?

chalk-roster 是一个预渲染连续性检查器,专为火柴人、线稿或粉笔动画短片设计。它通过在生成前锁定角色表(包含固定标记、禁止列表和风格指纹)、编写带时间线的节拍表,再运行 checker 来判定 SHIP(可生成)、FIX(需修补)或 HOLD(不可生成),确保角色标记、道具和钩子在不同镜头间保持一致。该技能支持 Python CLI 工具(chalkroster.py),提供 lint 和 check 两个命令,并内置示例和 demo 脚本。核心价值在于消除因角色外貌漂移(如帽子颜色变化)、道具瞬移、钩子位置错误等导致的后期返工,是制作系列化、多场景动画短片的必备工具。

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

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

chalk-roster 是做什么的?

火柴人和粉笔动画短片常因一集中帽子颜色变化、道具瞬移或钩子没在头五秒出现而功亏一篑。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。

相关技能