Communitygithub.com

chalk-roster

막대인간, 선화 또는 분필 스타일 애니메이션 쇼츠를 대량 생성하기 전에 캐스트 및 스타일 명단과 타이밍 비트 시트를 고정하고, 연속성(마커, 소품, 훅, VO 밀도)을 게이트하여 SHIP / FIX / HOLD로 판정합니다. 얼굴 없는 YouTube 스틱 에피소드, 다중 장면 선화 설명 영상, 또는 샷 간에 표류하지 않아야 하는 모든 분필 캐스트를 계획할 때 사용하세요.

chalk-roster란 무엇인가요?

chalk-roster는 연속성 관리를 위한 사전 렌더링 게이트 역할을 하는 도구로, 사용자가 캐스트와 스타일 명단을 한 번 고정하고 타이밍이 지정된 비트 시트를 작성한 후 검사기를 실행한 다음에만 생성 예산을 사용하도록 강제합니다. 이는 비디오 생성 과정에서 비니 색상이 변경되거나 소품이 순간이동하거나 훅이 잘못된 시간에 도착하는 일반적인 문제를 방지합니다. chack-roster는 Claude Code, Cursor, Codex와 같은 AI 에이전트 플랫폼에서 사용하도록 설계되었으며, 명단과 비트 데이터를 저장하기 위해 JSON 템플릿을 활용하고 연속성 검사를 위한 Python 스크립트(chalkroster.py)를 제공합니다. 'SHIP', 'FIX', 'HOLD' 판정을 통해 사용자에게 비디오 생성을 진행할 준비가 되었는지, 부드러운 문제를 수정해야 하는지, 또는 완전히 중단해야 하는지 명확히 알려줍니다. 이 도구는 특히 얼굴 없는/스틱/선화/분필 애니메이션 쇼츠, 캐릭터가 반복 출연하는 다중 장면 설명 영상, 에피소드 간에 일관된 스타일 지문이 필요한 시리즈 작업에 유용하며, 사용자가 모든 샷에 대해 동결된 마커를 프롬프트에 반복하여 연속적이고 인식 가능한 캐릭터를 유지할 수 있도록 합니다.

지원 대상~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, 금지)를 작성합니다.
  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 맵입니다. 소유자나 마커를 변경하려면 명시적인 전환이 필요합니다.

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

팁

  • 마커는 일반 단어("red beanie")여야 하며, 16진수 코드나 해부학 레시피가 아닙니다.
  • 실루엣 변경 한 번 = 조용한 마커 편집이 아닌 새 캐스트 id입니다.
  • 악센트 색상을 max_accent_colors 이하로 유지하십시오. 일반 언어로 이름을 지정하십시오.
  • 시리즈 모드: channel.lock_style_across_episodes 를 설정하고 style.fingerprint 를 모든 에피소드에서 동일하게 유지하십시오.
  • 유휴 분필 그림은 게이트를 통과하지 못합니다. 모든 샷에는 구체적인 action 이 필요합니다.

관련 스킬