Toonfacts: 애니메이션 만화 사실 단편, 하나의 스킬
원하는 내용을 평범한 말로 말씀하세요. 이 하나의 스킬이 전체 작업을 수행합니다: 아이디어, 사실, 대본, 샷 계획, 자막, ElevenLabs 음성 해설, 빌드, 자체 검토, 렌더링, 그리고 나중 업데이트까지. 사용자에게 스타일에 대해 설명하도록 요청하지 마세요. 이 스킬에 정의되어 있습니다.
모드 (사용자의 말에서 선택)
| 사용자 발화 | 모드 | 읽을 문서 |
|---|---|---|
| "new video", "new video about X", "surprise me", "make the next short" | New | docs/new-video.md |
| "update video ", "fix the video", "change X in ", "apply the latest rules" | Update | docs/update-video.md |
| "continue video " (오디오 저장과 같은 수동 단계 후) | Continue | docs/new-video.md, 누락된 첫 번째 단계부터 재개 |
| "review video", "check ", "check this mp4" | Review | docs/review.md만 |
| "video ideas", "give me ideas" | Ideas | docs/new-video.md 1단계만: 진짜 이야기와 흥미로운 사실을 조사하고, 이야기 강도와 후크 강도로 점수를 매기고, videos/_ideas.md에 기록하고, 한 줄 이야기, 그 형태, 초안 후크와 함께 상위 5개를 보여주며, 아무것도 빌드하지 않음 |
| "update the skill" | Upgrade | 사전 점검 2단계만 실행한 후 버전 변경 보고 |
요청이 명확하지 않으면, 비디오 이름이 언급되지 않았을 때는 New를, 언급되었을 때는 Update를 선택하세요. 비디오가 어떻게 빌드되고 어떻게 보여야 하는지는 docs/engine.md에 있습니다. New와 Update 모두 이 문서를 사용합니다.
운영 규칙 (모든 모드)
- 샷은 내레이터의 말과 일치해야 하며, 기계적으로 확인됩니다. 모든 샷은 자신이 주장하는 바(무엇을 읽는지, 누가 무엇을 보는지, 무엇이 무엇을 조준하는지, 무엇을 쥐고 있는지)를 선언하고
assertScene을 호출합니다. 소품에 그려진 모든 문자열은fitText를 거칩니다.tools/check_scene.py는 해당 호출이 존재할 때까지 렌더링을 차단합니다. 실패하는 게이트를 지나 렌더링하지 말고, 잘린 표지판을 텍스트를 줄이거나 공차를 넓혀서 고치지 마세요: 지오메트리를 수정하세요. - 후크는 장식이 아니라 게이트입니다.
docs/new-video.md2단계에서 후크 게이트를 통과하는 첫 줄이 나올 때까지 대본이 작성되지 않으며,templates/review_checklist.md상단의 후크 블록이 통과할 때까지 비디오가 제공되지 않습니다. 약한 첫 줄은 다시 작성해야 하는 이유이며, 나중에 패치로 넘어갈 일이 아닙니다. - 질문하지 마세요. 합리적인 선택을 하고, 비디오의
NOTES.md에 기록하고, 계속 진행하세요. 음성 해설을 생성할 수 없거나(docs/new-video.md3단계 참조), 필요한 도구가 없거나, 결정을 되돌릴 수 없는 경우에만 중단하세요. - 비디오당 하나의 폴더, 모든 것이 그 안에:
videos/<slug>/(slug = 소문자 단어를 하이픈으로 연결한 제목). 최종 MP4와publish.txt는 최상위에, 작업 파일은source/에, 이전 렌더링은versions/에 있습니다. 임시 파일(스틸, 콘택트 시트, 테스트 렌더링)은work/<slug>/에만 넣습니다. 대화에만 작업을 남기지 마세요. - ElevenLabs 크레딧은 음성 해설당 한 번만 사용하세요 (한 번 녹음). 음성 단어가 변경되거나, 오디오를 사용할 수 없거나,
docs/new-video.md3단계 4항목의 성능 검사(웃음 또는 과장된 연기)에 실패한 경우에만 다시 생성하세요. 그런 다음 한 번 더, 태그를 줄여서 생성하세요. - 자연스러움이 표현보다 중요합니다. 내레이터는 절대 웃지 않습니다: 전체 대본에
[laughs]또는[chuckles]가 없어야 하며, 최대 3개의 태그만 허용되고 음성 해설 텍스트에 느낌표가 없어야 합니다. 그림이 코미디를 전달합니다. 자신의 농담에 웃는 내레이터는 AI 녹음의 가장 명확한 신호입니다. - API 키를 절대 출력하거나 저장하지 마세요. ElevenLabs MCP는 사용자가 Claude Code에 추가합니다. 연결된 대로 사용하세요.
- 비디오를 절대 게시하거나 업로드하지 마세요. 결과물은 최종 MP4, 썸네일, 조사된
publish.txt(제목, 설명, 해시태그, 태그)입니다. - 최종 응답: 몇 줄(무엇을 만들었거나 변경했는지, 위치, 중요한 선택, 다음 단계 하나). 단계별 요약은 하지 마세요.
사전 점검 (자동, 모든 실행, 모든 모드)
- 프로젝트 및 폴더. Remotion 프로젝트를 찾으세요(
package.json과src/가 있는 폴더).videos/,videos/_ideas.md,work/가 없으면 생성하세요. - 이 스킬을 최신 상태로 유지하세요. 이 스킬 폴더가 git 클론이면, 자동으로
git pull --ff-only를 실행하고CHANGELOG.md에서 변경된 내용을 읽으세요. 최종 응답에서 변경된 경우에만 새 버전을 언급하세요. git 클론이 아니면 건너뛰세요. - 도구.
ffmpeg, Python 3,@remotion/three(프로젝트에@remotion/three와three가 없으면 설치)를 확인하세요. ElevenLabs MCP 도구(이름:text_to_speech,generate_speech,creative_generate_speech,list_voices,speech_to_text,transcribe)를 찾으세요. 지연된 경우 ToolSearch로 로드하세요. 도구가 없으면 음성 해설 단계까지 계속 진행하고,NEEDS_AUDIO.md를 작성하여 ElevenLabs MCP를 연결하거나(또는 오디오를 제공해야 함) 설명하고 거기서 중단하세요. - 이전 별도 스킬.
.claude/skills/cartoon-3d-short/또는.claude/skills/new-video/도 존재하면 사용하지 마세요. 최종 응답에서 이 스킬이 두 스킬을 대체하므로 해당 두 폴더를 제거할 수 있다고 한 번 알리세요. - 레거시 도우미 파일.
video-ideas/SKILL-UPDATE.md(첫 줄이 "# Instructions for Claude Code"로 시작)와video-ideas/README.md(첫 줄이 "# video-ideas")가 있으면 삭제하세요. 다른 것은 절대 삭제하지 마세요. - 이전 게시 파일 이름 바꾸기 (한 번). 게시 파일은 이제 마크다운이 아닌 일반 텍스트입니다. 사용자가 복사해서 사용하기 때문입니다. 모든
videos/<slug>/publish.md에 대해videos/<slug>/publish.txt로 복사하면서 마크다운을 제거하세요(#,**, 백틱, 테이블 파이프 제거, 제목은 대문자로 변경, 내용은 동일하게 유지). 최종 응답에서 삭제할 수 있는publish.md파일을 알리세요. 직접 삭제하지 마세요. - 이전 레이아웃 마이그레이션 (한 번, 이동만 하고 삭제하지 않음). 이전 버전의
video-ideas/또는out/이 존재하면:video-ideas/_ideas.md는videos/_ideas.md가 됩니다.- 각
video-ideas/<slug>/에 대해:publish.md(또는publish.txt)는videos/<slug>/publish.txt로 이동합니다. 다른 모든 파일(script.md,voiceover*.mp3,words.json,NOTES.md,REVIEW.md,CHANGES.md,NEEDS_AUDIO.md, 리뷰 시트)은videos/<slug>/source/로 이동합니다. out/의 각 최종 렌더링을 파일 이름이나 제목(out/<slug>.mp4또는The_Man_Who_...같은 이름)으로 slug와 일치시킵니다. 가장 최신 파일은videos/<slug>/<slug>.mp4가 되고, 이전 파일은 날짜 순으로videos/<slug>/versions/<slug>_v1.mp4,_v2.mp4가 됩니다.out/의 다른 모든 것(스틸, 콘택트 시트, QA, 테스트 렌더링, 비디오별 임시 폴더)은work/legacy-out/으로 이동하고, 위의 두 도우미 파일은work/legacy/로 이동합니다. 일치시킬 수 없는 파일도 거기에 남습니다.- 완료되면 최종 응답에 무엇이 어디로 이동했는지 목록을 간략히 작성하고, 빈
video-ideas/와out/폴더를 삭제할 수 있다고 알리세요.src/,public/,scripts/,audio/,backup/은 건드리지 말고, 이미work/에 있는 파일은 그대로 두세요.
폴더 구조
videos/ # 완료되었거나 진행 중인 모든 것, 비디오당 하나의 폴더
_ideas.md # 사용되었거나 거부된 모든 주제 (먼저 읽고, 마지막에 추가)
<slug>/
<slug>.mp4 # 최종 비디오: 업로드할 파일
thumbnail.jpg # 제작된 표지, 2160x3840 (원시 프레임 아님)
publish.txt # 제목, 설명, 해시태그, 태그, 카테고리, 고정 댓글 + 연구 출처
source/ # script.md voiceover.mp3 words.json NOTES.md REVIEW.md CHANGES.md
versions/ # 이전 렌더링: <slug>_v1.mp4 ... (Update 모드에서 보관)
work/ # 임시 파일, 안전하게 삭제 가능: 스틸, 콘택트 시트, QA, 테스트 렌더링, REMOTION_TMP (다른 드라이브가 없으면)
<slug>/
이 스킬의 내용
| 경로 | 설명 |
|---|---|
docs/new-video.md | New 및 Continue: 아이디어, 연구, 대본, 음성 해설, 빌드, 리뷰, 전달 |
docs/update-video.md | Update: 변경 사항 분류, 이전 버전 보호, 적용, 재렌더링, 회귀 검사 |
docs/review.md | 리뷰 루프 (콘택트 시트, 검사, 점수, 수정) |
docs/engine.md | 비디오가 어떻게 빌드되고 보여야 하는지: 파이프라인, 모든 비디오에 대한 규칙, 프레이밍, 조명, 카메라 흐름, 자막, 반응, 품질 게이트 |
references/story_format.md | 6비트 스토리 형식, 코미디 도구 상자, 페이싱 수치 |
references/ (기타) | 스타일 바이블, 측정 보고서, 참조 프레임 및 시트 |
templates/ | 렌더러 소스 (bridge/), 오디오 합성, 스크립트, 샷 계획, 대본 및 리뷰 템플릿 |
docs/history/ | 두 개의 이전 저장소 README, CHANGELOG 및 원래 문구 보관. 지침 아님 |
tools/review_video.sh | 길이, 하드 컷 및 음량 검사 + 콘택트 시트 |
tools/make_thumbnail.py | 2160x3840 Shorts 썸네일 디자인: 캐릭터를 잘라내고, 제작된 배경 위에 놓고, 텍스트를 쌓음 |
tools/check_scene.py | 물리적 진실을 선언하지 않거나 소품 텍스트가 맞춰지지 않은 샷의 렌더링을 차단 |
tools/check_voice.py | 음성 해설 녹음 확인: 속도, 일시 중지, 음량, 전달이 너무 빠른 구간(웃음, 급함) |