설명 영상 (Vox 스타일) → HyperFrames
약 60초짜리 설명 영상은 N개의 블록 × 10초 (60초 = 6개 블록)로 구성됩니다. 블록 k의 내레이션은 블록 k의 이미지와 함께 재생됩니다. 도구: .claude/skills/explainer/tools/ ($T). 스타일 가이드: references/styles.md. 작업 예제(출처 포함): examples/explainer-eiffel/.
작동 방식
터미널과 대화하는 것이 아니라 잘 만들어진 앱을 사용하는 듯한 느낌이어야 합니다:
- 메시지당 한 단계씩 진행한 후 멈추고 기다립니다. 각 단계는 굵은 제목과 어울리는 이모지 하나로 표시합니다.
- 설정과 선택은 표로 표시합니다. 섹션 사이에는
---구분선을 넣고, 줄은 짧게, 여유를 둡니다. - 내부 잡담 금지: 파일 쓰기, 도구 확인, 타이밍 계산에 대해 절대 말하지 마세요. 사용자가 작업하거나 무언가가 누락된 경우에만 말하세요.
- 붙여넣기 위한 모든 내용은 프롬프트만 포함하는 코드 블록에 넣고, 레이블과 참고 사항은 밖에 남겨둡니다.
0단계 — 자동 점검 (말하지 않음)
setup/doctor.sh --quiet 실행. videos/ 폴더에 설명 영상 프로젝트(내부에 pack.json 파일)가 있으면 "돌아오신 것을 환영합니다 — 새 영상을 만들까요, 아니면 *<가장 최근>*을 계속할까요?"라고 묻고 1단계는 건너뜁니다.
1단계 — 환영 🎬
짧은 환영 인사와 함께, 5행짜리 표로 작동 방식(아이디어 → 룩 → 음성 → 장면 → 최종 편집)을 설명한 후 한 가지 질문을 합니다: 영상의 주제는 무엇인가요? 대략적인 아이디어도 좋고, 찾아줘라고 하면 이번 주 가장 좋은 주제를 알려줍니다. 멈춥니다.
2단계 — 주제 및 설정 ⚙️
찾아줘→ 웹 검색으로 현재 화제가 되는 주제를 찾고 상위 3개를 제시합니다. 각 주제는 한 줄짜리 훅(왜/어떻게에 대한 질문 + 놀라운 숫자 + 왜 영상이 좋을지)으로 제공됩니다. 비극이나 가십은 건너뜁니다. 사용자가 선택합니다. 절대 사용자를 대신해 선택하지 마세요.- 그 외의 경우 아이디어를 한 줄짜리 앵글로 다듬습니다: 답이 놀라운 질문.
그런 다음 기본값이 채워진 설정 표를 하나 보여줍니다. go를 입력하면 모두 수락합니다:
| 설정 | 기본값 | 옵션 |
|---|---|---|
| 룩 | collage | collage (볼드한 편집적 콜라주) · diorama (세피아 종이 다큐멘터리) |
| 그림 | code | code (HyperFrames 내장 무료) · ai (Higgsfield 또는 모든 생성기) · mixed |
| 길이 | 60초 | 30초 ~ 10분, 10초 단위 |
| 비율 | 16:9 | 16:9 · 9:16 · both |
멈춥니다.
3단계 — 리서치 및 대본 (자동)
videos/<slug>/ 폴더를 생성합니다. 모든 주장을 조사합니다: 웹 검색을 통해 각 숫자를 두 개의 독립적인 출처와 교차 확인하고 URL을 보관합니다. 출처가 일치하지 않으면 안전한 수치를 사용하거나 삭제합니다. 모호하지만 사실인 문장이 정확하지만 거짓인 문장보다 좋으므로, 숫자, 인용문 또는 예측을 절대 지어내지 마세요.
블록당 한 줄의 내레이션을 작성합니다. 숫자는 문자로 표기하고, 평범한 말투를 사용합니다:
- Kokoro 음성: 줄당 22–26단어. edge-tts 음성: 18–20단어. 음성 단계에서 어쨌든 드리프트를 보정합니다.
- 구조: 콜드 오픈 (가장 놀라운 사실, 인사 없음) → 중요성 → 증거 (블록당 하나의 아이디어, 각각 구체적: 숫자, 날짜 또는 장소, 점층적으로) → 전환점 → 블록 1을 반향하는 키커와 함께 해결.
- 어조: 탐구적이고, 정확하며, 약간 재치 있습니다. 설명할 뿐, 판매하지 않습니다.
- 블록 전체 디자인: 되돌아와서 변화하는 반복되는 영웅 오브젝트 (탑, 컨테이너, 동전); 초기에 제기된 질문, 마지막에 답변; 영상이 기억되는 하나의 공개 순간.
각 블록에 대해 콜아웃 (화면에 표시되는 숫자 또는 두 단어로 된 사실, ≤ 9자, 예: +15 cm, 2.5M, 7 yrs)과 시각 자료도 선택합니다. 코드 모드에서 시각 자료 kind는 tower 스타일 실루엣(SVG 조정), dots, bars, lean, calendar 또는 stat 중 하나입니다. pack.json을 작성합니다 (아래 형식). 아직 아무것도 보여주지 마세요.
4단계 — 음성 🎙
| 음성 | 느낌 | 엔진 |
|---|---|---|
am_michael | 미국 남성, 차분한 다큐멘터리 | Kokoro (오프라인, 기본) |
bm_george | 영국 남성, 신중함 | Kokoro |
af_heart | 미국 여성, 따뜻하고 맑음 | Kokoro |
en-US-ChristopherNeural / en-GB-RyanNeural / en-US-JennyNeural | Microsoft 신경망 음성 | edge-tts (무료, 온라인) |
samples → 세 가지 Kokoro 음성 각각으로 블록 1의 음성을 생성하고 파일을 보냅니다. 멈춥니다.
5단계 — 브리핑 📋 (확인)
한 번의 메시지:
- 앵글, 관통선, 룩, 그림, 길이/블록, 비율 및 음성에 대한 표
- 대본 (
블록 1 … N형식) - 출처 목록
마지막: "모두 괜찮습니까 — 아니면 변경할 부분이 있나요?" 승인될 때까지 반복합니다. 사용자는 어떤 줄이든 다시 쓸 수 있습니다.
6단계 — 그림
code 모드: 8단계로 건너뜁니다. 모든 블록이 콜라주 장면이 됩니다: 색상 필드, 종이 질감, 숫자가 올라가는 콜아웃, 스스로 그려지는 마커 원, 그리고 시각 자료.
ai / mixed 모드:
- 스타일 키 🎨: 각각 한 문장으로 설명된 3개의 명명된 변형을 제공합니다 (동일한 시각적 시스템, 다른 팔레트 또는 구성,
references/styles.md에서 가져옴). 선택하면 붙여넣을 수 있는 이미지 프롬프트를 제공합니다. Higgsfield:nano_banana_pro, 비율은 영상과 동일. 비용을 알리고 생성 전에 승인을 기다립니다. 하나의 이미지가 룩을 고정합니다. 모든 장면에 적용됩니다. - 장면 🎬: 블록당 한 번의 메시지 (또는 요청 시 한 번에 모두). 각 장면은 내레이션 줄을 컨텍스트로 제공하고
references/styles.md의 템플릿으로 구성된 붙여넣기 가능한 프롬프트를 제공합니다: STYLE / SCENE / MOTION / AUDIO / AVOID. 설정 표: 참조 이미지 = 스타일 키, 10초, 720p+, 주변 음향 켜짐, **blockNN.mp4**로 저장. Higgsfield 직접:kling3_0프로 이미지-투-비디오, 스타일 키 사용. 먼저 총 비용(블록 × 크레딧)을 알립니다. 또는 사용자가 원하는 생성기(Veo, Kling, Runway…)에서 프롬프트를 실행할 수 있습니다. - 클립 가져오기 📥: 사용자가
videos/<slug>/clips/에 파일을 드롭합니다. 명백한 변형 이름은 자동으로 변경합니다 (Block 1.mp4→block01.mp4). 쌍이 진정으로 모호한 경우에만 묻습니다. 클립이 없는 블록은 자동으로 코드 장면으로 대체됩니다.
7단계 — 클립 확인 (자동)
각 클립에서 프레임을 추출하여 확인합니다. 스타일에 맞지 않거나 사실적인 경우: STYLE 및 AVOID 줄을 강화하고 해당 블록만 다시 생성합니다. 두 번 연속 실패하면 시드가 아닌 프롬프트를 다시 작성합니다. AI 클립 내의 읽을 수 있는 텍스트는 collage 모드에서 실패입니다 (텍스트는 콜아웃과 자막에 있어야 함).
8단계 — 음성 및 편집 (자동)
~/.local/share/hf-kokoro/bin/python $T/voice.py videos/<slug> # 또는 --engine edge --voice en-GB-RyanNeural
모든 테이크는 7.5초에서 9.7초 사이여야 합니다. 도구가 범위를 벗어난 블록을 나열합니다: 해당 줄을 다시 작성하고 (더 짧게 또는 더 길게), --only 3,5로 음성을 다시 생성하고, 모든 블록이 조건을 만족할 때까지 반복합니다. 절대 시간을 늘리지 마세요.
.venv/bin/python $T/build.py videos/<slug> [--aspect 9:16] # index.html + assets/mix.wav 생성
cd videos/<slug> && npx --yes [email protected] lint && npx --yes [email protected] render -o raw.mp4
ffmpeg -y -i raw.mp4 -af loudnorm=I=-14:TP=-1:LRA=11 -c:v copy -c:a aac -b:a 192k "../../out/<제목> (16x9).mp4"
lint는 중첩 구조와 밀집 트랙에 대해 경고합니다. 이는 Studio 타임라인 보기에 관한 것이므로 렌더링에는 영향을 미치지 않습니다. 오류는 반드시 수정해야 합니다. 블록당 하나의 프레임을 캡처하여 (snapshot . --at 2.5,12.5,…) 확인합니다: 숫자가 한 줄에 들어가는지, 마커 원이 숫자를 감싸는지, 자막이 그림을 가리지 않는지 확인합니다.
9단계 — 결과물 전달 ✅
MP4 파일을 보냅니다. 그런 다음 작은 표: 주제, 길이 및 비율, 룩 및 음성, 출처 (링크). 다른 비율 버전 제공, 블록 변경, 또는 새 영상 제작을 제안합니다.
pack.json
{ "title": "…", "angle": "…", "through_line": "…", "look": "collage", "aspect": "16:9",
"voice": { "engine": "kokoro", "name": "am_michael" },
"blocks": [ { "line": "…", "callout": { "big": "+15 cm", "label": "가장 더운 날에 더 높아짐" },
"visual": { "kind": "bars", "values": [10, 30, 60, 100], "highlight": 3 },
"prompt": "(ai 모드) 전체 장면 프롬프트" } ],
"sources": [ "출판사 — 제목: https://…" ] }
또한 사람이 읽을 수 있는 pack.md도 작성합니다 (요약, 대본, 프롬프트, 출처). 이것이 프로젝트의 기록입니다.
규칙
- 사실: 숫자당 두 개의 출처. 모든 영상에 출처가 포함됩니다. 지어낸 수치, 인용문 또는 예측은 금지됩니다.
- 유료 생성: 모델 × 개수 × 크레딧 비용을 알리고 승인을 받은 후에만 진행합니다 (PLAYBOOK #1).
- 실제 인물의 얼굴을 클로즈업으로 생성하지 마세요. 미드샷, 실루엣 또는 검열 막대를 사용하세요. 이는 중재 거부도 방지합니다.
- Vox 룩은 오마주입니다. 영상에 Vox의 로고, 이름 또는 브랜딩을 절대 사용하지 마세요.