Communitygithub.com

atharhive/vox-explainer

단일 주제 프롬프트로 Vox 스타일 설명 영상을 제작하는 엔드투엔드 파이프라인입니다. 주제 하나를 입력하면 완성된 영상이 출력됩니다 — 스크립트, 키프레임(Seedream 5.0 Pro), 애니매이션(Gemini Omni Flash), 음성 해설(xAI TTS), 음악(MiniMax Music 2.6)을 모두 Atlas Cloud API를 통해 로컬에서 ffmpeg로 조합합니다.

vox-explainer란 무엇인가요?

Vox-Explainer는 단일 주제 프롬프트로 전문가 수준의 Vox 스타일 설명 영상을 제작하는 완전 자동화 파이프라인입니다. 스크립트 작성(Claude), 음성 해설 생성(xAI TTS), 키프레임 제작(Seedream 5.0 Pro), 애니메이션(Gemini Omni Flash), 배경 음악(MiniMax Music 2.6), 최종 조합(ffmpeg)의 6단계로 구성되며, 각 단계의 결과물이 다음 단계의 입력으로 사용됩니다. 음성 해설 길이가 전체 영상의 타이밍을 결정하므로 스크립트 단계에서 빔(beat) 단위로 구성된 내러티브 구조를 따릅니다. Atlas Cloud API를 통해 모델에 접근하며, 모든 상태는 프로젝트 파일에 저장되어 개별 단계를 독립적으로 재실행할 수 있습니다. 60초 영상 기준 약 3~8달러의 API 비용이 소요되며, 16:9 2K 해상도와 Vox 특유의 종이 콜라주, 먹물 산수화, 단일 강조 색상의 시각적 스타일을 일관되게 유지합니다. 애니메이션은 2D 카메라 워크와 레이어 간 시차 효과에 집중하며, 3D 회전이나 얼굴 변형을 금지하여 '모션 그래픽' 느낌을 살립니다. 최종 조합 단계에서는 자막(ASS), 사이드체인 음악 덕킹, H.264 인코딩을 수행하며, 각 클립의 스타일 일관성과 싱크 정확성을 검증합니다.

지원 대상✓Claude Code~Codex CLI~Cursor✓Gemini CLI
npx skills add https://github.com/atharhive/claude-video-playbook/tree/HEAD/skills/vox-explainer

즐겨 사용하는 AI에게 물어보기

이 에이전트 스킬이 미리 로드된 새 채팅을 엽니다.

문서

Vox 스타일 설명 영상 파이프라인

단일 주제로 완전한 내레이션, 자막, 배경 음악이 포함된 설명 영상을 제작합니다. 파이프라인은 6단계로 실행되며, 각 단계의 결과물이 다음 단계에서 사용됩니다. 음성 해설(VO)은 애니메이션보다 먼저 생성되는데, VO 길이가 모든 타이밍 결정의 기준이 되기 때문입니다.

TOPIC → 1.Script → 2.Voiceover → 3.Keyframes → 4.Animation → 5.Music → 6.Assembly
         (Claude)   (xAI TTS)    (Seedream)    (Omni Flash)  (MiniMax)  (ffmpeg)

사전 요구 사항

  • ATLASCLOUD_API_KEY 환경 변수 설정 (atlascloud.ai에서 발급 — 가입 시 무료 크레딧 제공)
  • ffmpeg 및 ffprobe 설치 (libass 포함, 자막 합성용)
  • Python 3.10+ 및 requests 라이브러리
  • 60초 영상 기준 약 $3~8 API 크레딧 필요 (비용표는 references/atlas-cloud-api.md 참조)

API 호출 전에 https://www.atlascloud.ai/docs 에서 최신 엔드포인트 경로와 모델 ID를 확인하세요. 미디어 모델 API는 빠르게 변경됩니다. references/atlas-cloud-api.md의 패턴은 2026년 7월에 검증되었습니다.

프로젝트 구조

매 영화마다 이 구조를 생성하고 유지하세요 — 모든 단계가 이 구조를 읽고 씁니다:

project/
├── brief.md            # 주제, 각도, 목표 길이, 시청자
├── script.json         # 내레이션, 장면 설명, 자막이 포함된 빔
├── audio/
│   ├── vo/             # beat_01.mp3 ... beat_NN.mp3
│   ├── vo_durations.json
│   └── music.mp3
├── frames/             # keyframe_01.png ... style_anchor.png
├── clips/              # clip_01.mp4 ... (음성 없는 애니메이션 클립)
├── subs/               # captions.ass
└── final/              # film.mp4

1단계 — 스크립트

직접 작성합니다. API 호출이 필요 없습니다. 이 단계가 전체 품질을 가장 크게 결정합니다 — 좋은 스크립트에 평균적인 비주얼이 나쁜 스크립트에 뛰어난 비주얼보다 낫습니다.

초안을 작성하기 전에 references/vox-style-guide.md (작성 섹션)을 읽으세요. 핵심 규칙:

  1. 빔(beat) 단위로 구성합니다. 하나의 빔 = 하나의 내레이션 문단(13문장, 814초 분량) + 하나의 비주얼. 60초 영화는 68개 빔, 3분은 1622개 빔입니다.
  2. Vox 내러티브 아크: 콜드 오픈 훅(놀라운 구체적 사실이나 질문) → 맥락("X를 이해하려면...로 돌아가야 합니다") → 하나의 명확한 흐름을 가진 확장 설명 → 복잡성 또는 반전 → 훅을 재구성하는 결말.
  3. 어조: 2인칭 환영("아마 본 적이 있을 겁니다..."), 역사적 서술에는 현재 시제, 추상적 표현보다 구체적 숫자, 짧은 평서문. 군더더기 없음, "이 비디오에서는..." 금지.
  4. 빔당 하나의 아이디어. 한 문장에 두 번째 개념이 등장하면 빔을 분할하세요.

script.json 작성:

{
  "title": "Tang Golden Age",
  "topic": "How Tang Dynasty China built the world's largest city",
  "style_seed": "mixed-media paper collage, ink-wash Chinese mountains, vermillion red and aged cream palette",
  "accent_color": "#C0392B",
  "beats": [
    {
      "id": 1,
      "narration": "In the seventh century, Tang China built Chang'an — the largest, richest city on Earth. The whole world came to its gates.",
      "visual": "Emperor Taizong enthroned at center as paper cutout, court figures flanking, pagodas and ink-wash mountains behind, red seal stamp upper right reading 盛唐",
      "caption_text": null,
      "motion": "slow push-in on emperor, clouds drift left, subtle parallax between cutout layers"
    }
  ]
}

caption_text는 화면상의 타이포그래피 순간(핵심 통계나 용어)에 사용되며, 대부분의 빔은 null로 남깁니다. 내레이션 자막은 조립 단계에서 처리됩니다. motion은 4단계 애니메이션 프롬프트가 됩니다.

2단계 — 음성 해설 (xAI TTS v1)

빔별로 오디오 파일 하나를 생성한 후 길이를 측정합니다. 이 길이가 전체 영화의 마스터 클록이 됩니다.

빔별로 Atlas Cloud 오디오 엔드포인트 호출 (모델: xAI TTS v1 — 정확한 요청 형식과 음성 선택 가이드는 references/atlas-cloud-api.md 참조). 전체 영화에 하나의 목소리를 선택하세요. Vox 레지스터: 절제되고, 따뜻하며, 약간 비꼬는 듯한 — "영화 예고편" 같은 목소리는 피하세요.

생성 후 모든 파일을 검사하고 audio/vo_durations.json을 작성합니다:

ffprobe -v error -show_entries format=duration -of csv=p=0 audio/vo/beat_01.mp3
{"beats": [{"id": 1, "file": "audio/vo/beat_01.mp3", "duration": 9.83}], "total": 61.2}

총 길이가 브리프와 일치하는지 확인합니다. 빔이 너무 길면 내레이션을 다듬고 해당 빔만 다시 생성합니다.

3단계 — 키프레임 (Seedream 5.0 Pro)

빔당 하나의 키프레임, 모두 일관된 시각적 스타일로 제작합니다. 일관성이 가장 어려운 문제이며, 스타일 앵커 패턴으로 해결합니다:

  1. 앵커 생성. bytedance/seedream-v5.0-pro/text-to-image를 사용하여 빔 1(보통 제목/훅 프레임)을 생성합니다. 프롬프트는 references/vox-style-guide.md(시각 문법 섹션)의 스타일 블록 + 해당 빔의 visual + 영화의 style_seed 및 accent_color로 구성합니다. 16:9, 2K를 요청합니다.
  2. 앵커를 검토한 후 진행합니다. 스타일이 적절할 때까지 재생성합니다 — 다른 모든 프레임이 이를 상속받습니다.
  3. 편집 모델로 나머지 프레임을 생성합니다. bytedance/seedream-v5.0-pro/edit을 앵커를 참조 이미지로 사용하여 호출합니다(최대 10개 참조 지원, 앵커 + 이전 프레임 선택 가능). 프롬프트: "참조의 정확한 아트 스타일, 팔레트, 종이 콜라주 처리, 테두리 프레이밍을 유지하세요. 새 장면: {beat.visual}"

이렇게 하면 인간 아트 디렉터처럼 팔레트, 텍스처, 프레이밍이 영화 전체에 고정됩니다.

모든 프롬프트는 스타일 접미사(스타일 가이드 참조)로 끝나야 하며, 이는 Vox 룩을 인코딩합니다: 흰색 테두리가 있는 종이 컷아웃, 하프톤 점, 테이프 조각, 굵은 평면 기하학적 악센트, 넉넉한 여백, 단일 강조 색상.

caption_text가 설정된 프레임: Seedream 5.0 Pro의 타이포그래피 렌더링이 강력하므로 굵고 좁은 산세리프체로 텍스트를 렌더링하도록 지시합니다. 프레임당 5단어 미만으로 유지하세요.

4단계 — 애니메이션 (Gemini Omni Flash)

각 키프레임을 이미지-투-비디오로 클립으로 애니메이션합니다. 대상 클립 길이 = 해당 빔의 VO 길이 + 0.5초 여유(모델이 지원하는 증분으로 반올림).

콜라주 미학을 위한 모션 프롬프트는 미묘해야 합니다. 이것이 가장 흔한 실패 모드입니다. Vox 룩은 "모션 그래픽"이지 "푸티지"가 아닙니다. 좋은 모션 어휘:

  • 슬로우 푸시인/풀아웃 (2D 카메라, 3D 돌리가 아님)
  • 컷아웃 레이어 간 시차 드리프트
  • 구름/연기 옆으로 흐르기
  • 종이 요소가 프레임 가장자리에서 들어와 자리 잡기
  • 하프톤 점이나 텍스처가 은은하게 반짝임
  • 다른 요소는 고정된 상태에서 단일 요소만 애니메이션(깃발 흔들림, 물결)

모든 프롬프트에서 명시적으로 금지: "카메라 흔들림 없음, 3D 회전 없음, 얼굴이나 텍스트 변형 없음, 스타일 이탈 없음, 요소는 평평한 종이 컷아웃으로 유지."

각 생성 작업을 완료될 때까지 폴링하고 clips/clip_NN.mp4로 다운로드합니다. 생성은 가끔 실패하거나 스타일이 이탈합니다 — 각 클립을 검토하고, 텍스트가 왜곡되거나 스타일이 깨진 경우 재생성합니다. 약 15% 재생성을 예산에 포함하세요.

5단계 — 음악 (MiniMax Music 2.6)

전체 영화를 위한 하나의 기악 배경음악. is_instrumental: true 요청 — 보컬은 내레이션과 충돌합니다.

프롬프트 공식: {분위기} {장르와 유사한 텍스처}, {템포}, {악기 구성}, {아크}. 역사 작품 예시: "사색적인 영화적 언더스코어, 펠트 피아노와 부드러운 현악기, 가벼운 퍼커션 펄스, 90bpm, 성기게 시작하여 점차 풍성해짐, 다큐멘터리 스타일". 악기 구성을 주제에 맞추세요(당나라 작품에는 구쟁/디지 텍스처, 기술 주제에는 아날로그 신시사이저 펄스).

Music 2.6은 고정 길이 곡을 생성합니다. 트랙이 영화보다 짧으면 조립 시 크로스페이드로 반복하고, 길면 페이드아웃으로 자릅니다. 음악 아크가 영화 아크와 충돌하지 않도록 하세요 — 조용한 빔에 중간 트랙 드롭이 떨어지면 어색하므로, 결과를 영화의 흐름과 대조해보세요.

6단계 — 조립 (ffmpeg, 로컬)

전체 레시피는 references/ffmpeg-assembly.md를 참조하세요. 순서:

  1. 각 클립을 해당 빔의 VO 길이에 맞춥니다(자르기 또는 마지막 프레임 유지), 1920x1080 30fps로 정규화.
  2. 클립을 순서대로 연결합니다.
  3. VO 트랙을 구성합니다: 빔 오디오를 0.5초 간격으로 연결하여 비디오 타이밍과 일치시킵니다.
  4. subs/captions.ass를 생성합니다 — Vox 스타일 자막: 굵은 산세리프, 두꺼운 검은색 외곽선이 있는 흰색, 하단 중앙 정렬, 최대 2줄, 절(clause) 경계에서 내레이션을 분할하고 각 청크를 해당 빔의 창 내에 시간을 배치합니다.
  5. 오디오 믹싱: VO는 전체 레벨, 음악은 내레이션 아래 -12~-15dB로 덕킹(사이드체인 압축 또는 간단한 볼륨 자동화 — 레시피는 참조 파일 참조).
  6. 자막 + 출처 표시를 합성하고("Made with ...") 인코딩: H.264, CRF 18, AAC 192k, -movflags +faststart.

최종 QC 검사 후 제공: (a) 자막/VO 싱크 드리프트, (b) 음악이 내레이션을 압도하는지, (c) 클립의 모션이 눈에 띄게 반복되는지, (d) 프레임 간 스타일 이탈. 조립 해킹이 아닌 문제가 발생한 단계에서 수정하세요.

오케스트레이션 참고 사항

  • 처음에는 단계를 엄격히 순서대로 실행합니다. 이후에는 모든 상태가 프로젝트 파일에 저장되어 있으므로 각 단계를 독립적으로 재실행할 수 있습니다.
  • API 생성은 느립니다(비디오 클립: 각 1~4분). 모든 애니메이션 작업을 동시에 제출한 후 폴링하세요. 직렬화하지 마세요.
  • 보낸 모든 프롬프트를 prompts.log 파일에 저장하세요. 재현성이 중요하며 사용자가 단일 빔을 조정하고 재생성할 수 있기 때문입니다.
  • 비용은 빔 수에 선형적으로 증가합니다. 3단계(첫 번째 유료 비중이 큰 단계) 이전에 사용자에게 대략적인 비용을 알려주세요: 빔 수 × ($0.10 이미지 + ~10초 클립당 $1.20) + ~$0.50 오디오.

참조 자료

  • references/vox-style-guide.md — 1단계와 3단계 전에 읽으세요. 시각 문법, 작성 어조, 프롬프트 템플릿.
  • references/atlas-cloud-api.md — 2단계 전에 읽으세요. 엔드포인트, 모델 ID, 비동기 작업 패턴, 폴링 코드, 비용.
  • references/ffmpeg-assembly.md — 6단계 전에 읽으세요. 정규화, 연결, 자막, 덕킹, 인코딩 레시피.

관련 스킬