비디오 프로듀서은(는) 무엇을 하나요?
내레이션, 음악, 비주얼이 포함된 완전한 비디오를 제작합니다.
오케스트레이터 스킬로서 다음을 결합합니다:
- 스크립트/스토리보드 생성 (Claude)
- 음성 합성 (Gemini TTS)
- 배경 음악 (Lyria)
- 비디오 클립 생성 (Veo 3.1) 또는 이미지 애니메이션
- 최종 조립 (media-utils를 통한 FFmpeg)
워크플로우
1단계: 요구사항 수집 (필수)
⚠️ 이 단계를 건너뛰지 마십시오. 모든 답변을 받을 때까지 init_project.py를 실행하지 마십시오.
대화형 질문 사용 — 한 번에 하나의 질문을 하고, 응답을 기다린 후 다음 질문을 합니다. 이는 협력적인 사양 기반 프로세스를 만듭니다.
질문 흐름
⚠️ 아래 각 질문에 대해 AskUserQuestion 도구를 사용하십시오. 응답에 질문을 인쇄하지 말고, 도구를 사용하여 표시된 옵션으로 대화형 프롬프트를 만드십시오.
Q1: 주제
"해당 비디오를 만들어드리겠습니다! 먼저 — 무엇에 관한 것인가요?
(예: 제품 출시, 브랜드 스토리, 튜토리얼, 설명 — 또는 직접 설명해주세요)"
응답 대기.
Q2: 길이
"비디오 길이는 어느 정도로 할까요?
- 15초 (빠른 후크)
- 30초 (표준 광고)
- 60초 (설명)
- 2분 이상 (상세)
- 또는 직접 길이를 지정해주세요"
응답 대기.
Q3: 스타일
"어떤 시각적 스타일을 원하시나요?
- 프리미엄/럭셔리
- 재미/장난기
- 기업/전문적
- 드라마틱/시네마틱
- 미니멀/깔끔
- 또는 직접 스타일을 설명해주세요"
응답 대기.
Q4: 에셋
"사용할 기존 이미지나 비디오 클립이 있나요?
- 아니요, 모두 새로 생성합니다
- 네, 이미지가 있습니다 (경로 제공)
- 네, 비디오 클립이 있습니다 (경로 제공)"
응답 대기.
Q5: 오디오 전략
"오디오는 어떻게 처리할까요?
- 커스텀 — 내레이션 + 배경 음악 생성
- Veo 네이티브 — Veo의 내장 대사/SFX/앰비언트 사용
- 무음 — 오디오 없음, 나중에 추가"
응답 대기.
Q6: 음성 (커스텀 오디오 선택 시)
"내레이션의 음성 톤은 어떻게 할까요?
- 전문적
- 친근/따뜻
- 활기찬
- 차분/편안
- 드라마틱
- 또는 직접 톤을 설명해주세요"
응답 대기.
Q7: 음악 (커스텀 오디오 선택 시)
"어떤 음악 분위기를 원하시나요?
- 모던 일렉트로닉
- 시네마틱/장엄
- 경쾌한 팝
- 앰비언트/차분
- 기업
- 또는 직접 스타일을 설명해주세요"
응답 대기.
Q8: 포맷
화면 비율은 어떻게 할까요?
- 16:9 (YouTube, 웹)
- 9:16 (TikTok, Reels, Shorts)
- 1:1 (Instagram 피드)"
응답 대기.
Q9: 해상도
해상도는 어떻게 할까요?
- 720p (더 빠른 생성)
- 1080p (표준 HD)"
응답 대기.
Q10: 모델
어떤 Veo 모델을 사용할까요?
veo-3.1— 최신, 최고 품질 (기본값)veo-3.1-fast— 더 빠른 생성, 약간 낮은 품질veo-3— 이전 세대veo-3-fast— 이전 세대, 더 빠름"
응답 대기.
빠른 참조
| 질문 | 결정 사항 |
|---|---|
| 주제 | 장면 내용 및 프롬프트 |
| 길이 | 장면 수 (Veo 클립은 4, 6, 8초여야 함) |
| 스타일 | 시각적 프롬프트 및 음악 선택 |
| 에셋 | 생성 vs 기존 파일 사용 |
| 오디오 | custom, veo_audio, silent |
| 음성 | TTS 음성 선택 |
| 음악 | Lyria 프롬프트 |
| 포맷 | Veo의 화면 비율 |
| 해상도 | 720p 또는 1080p 출력 품질 |
| 모델 | veo-3.1, veo-3.1-fast, veo-3, veo-3-fast |
2단계: 프로젝트 초기화
사용자의 답변을 받으면 다음 명령어로 프로젝트를 초기화합니다:
python3 ${CLAUDE_PLUGIN_ROOT}/skills/video-producer-agent/scripts/init_project.py \
--name "제품 출시 비디오" \
--duration 30 \
--aspect-ratio 16:9 \
--audio-strategy custom \
--scenes 5
3단계: project.json 구성
사용자의 답변에 따라 장면 프롬프트, 내레이션 텍스트 및 음악 스타일로 project.json을 편집합니다.
4단계: 비디오 조립
python3 ${CLAUDE_PLUGIN_ROOT}/skills/video-producer-agent/scripts/assemble.py \
--project ~/my_video_project/
프로젝트 구조
프로젝트를 초기화하면 다음 폴더 구조가 생성됩니다:
my_project/
├── project.json # 구성: 장면, 내레이션, 음악, 설정
├── storyboard.md # 비디오 계획 문서
├── scenes/ # Veo에서 생성된 비디오 클립
│ ├── scene1_intro.mp4
│ ├── scene2_features.mp4
│ └── scene3_cta.mp4
├── audio/ # 오디오 에셋
│ ├── voiceover.wav # 생성된 내레이션
│ ├── background_music.wav # 생성된 음악
│ └── final_mix.mp3 # 혼합된 오디오 트랙
├── work/ # 중간 파일 (자동 생성)
│ ├── silent_scene1.mp4
│ ├── video_concatenated.mp4
│ └── ...
└── output/ # 최종 결과물
└── product_launch_video_final.mp4
스크립트
init_project.py
폴더 구조와 템플릿으로 새 비디오 프로젝트를 초기화합니다.
# 기본 프로젝트
python3 init_project.py --name "내 비디오" --duration 30
# 특정 디렉토리에 생성
python3 init_project.py --name "데모 비디오" --output ~/Videos/
# 소셜 미디어용 세로 비디오
python3 init_project.py --name "인스타그램 릴스" --aspect-ratio 9:16 --duration 15
# Veo 네이티브 오디오 사용 (커스텀 내레이션/음악 없음)
python3 init_project.py --name "시네마틱 장면" --audio-strategy veo_audio
# 더 많은 장면
python3 init_project.py --name "긴 비디오" --duration 60 --scenes 5
옵션:
| 옵션 | 기본값 | 설명 |
|---|---|---|
--name | 필수 | 프로젝트 이름 |
--output | 현재 디렉토리 | 상위 디렉토리 |
--duration | 30 | 목표 길이 (초) |
--aspect-ratio | 16:9 | 16:9, 9:16, 1:1, 4:3 |
--audio-strategy | custom | custom, veo_audio, silent |
--scenes | 3 | 장면 자리 표시자 수 |
assemble.py
전체 비디오 조립 파이프라인을 오케스트레이션합니다.
# 전체 파이프라인 (모든 것 생성 + 조립)
python3 assemble.py --project ~/my_project/
# 생성 건너뛰기 (기존 장면/오디오 파일 사용)
python3 assemble.py --project ~/my_project/ --skip-generation
# 드라이 런 (수행할 작업 표시)
python3 assemble.py --project ~/my_project/ --dry-run
파이프라인 단계:
- 비디오 장면 생성 (Veo 3.1)
- 장면에서 오디오 제거 (커스텀 오디오인 경우)
- 내레이션 생성 (Gemini TTS)
- 배경 음악 생성 (Lyria)
- 내레이션 + 음악 혼합
- 비디오 클립 연결
- 오디오와 비디오 병합
- 최종 비디오 출력
project.json 구성
{
"name": "제품 출시 비디오",
"duration_target": 30,
"aspect_ratio": "16:9",
"resolution": "720p",
"audio_strategy": "custom",
"scenes": [
{
"id": 1,
"name": "scene1_hero",
"prompt": "프리미엄 제품에 대한 시네마틱 슬로우 줌, 드라마틱 조명, 고급 상업 스타일",
"duration": 6,
"notes": "음악만, 내레이션 없음"
},
{
"id": 2,
"name": "scene2_features",
"prompt": "제품 특징 시연, 세련된 애니메이션, 현대 기술 미학",
"duration": 8,
"notes": "여기서 내레이션 시작"
},
{
"id": 3,
"name": "scene3_cta",
"prompt": "깔끔한 배경의 제품과 로고, 클릭 유도 문구 순간",
"duration": 6,
"notes": "음악 고조, 내레이션 종료"
}
],
"voiceover": {
"enabled": true,
"text": "오디오의 미래를 소개합니다. 수정처럼 맑은 사운드. 하루 종일 편안함. 차이를 경험하세요.",
"voice": "Charon",
"style": "전문적, 자신감 있는, 프리미엄 브랜드 목소리"
},
"music": {
"enabled": true,
"prompt": "모던 일렉트로닉, 프리미엄, 세련된, 제품 쇼케이스, 미묘한 베이스",
"duration": 35,
"bpm": 100,
"brightness": 0.6
},
"assembly": {
"transition": "fade",
"transition_duration": 0.5,
"music_volume": 0.3,
"fade_in": 1.0,
"fade_out": 2.0
}
}
오디오 전략
| 전략 | 설명 | 사용 시기 |
|---|---|---|
custom | Veo 오디오 제거, 커스텀 내레이션 + 음악 추가 | 대부분의 비디오 |
veo_audio | Veo가 생성한 오디오 유지 (대화, SFX) | 시네마틱 장면, 대화 |
silent | 오디오 제거, 무음 비디오 출력 | 나중에 오디오 추가 예정 |
워크플로우: 비디오 만들기
1단계: 프로젝트 초기화
python3 init_project.py --name "무선 이어버드 프로모" --duration 30
2단계: 스토리보드 계획
storyboard.md를 편집하여 비디오 구조를 계획합니다:
## 장면 1: 히어로 리빌 (0-5초)
- 시각: 그림자에서 나타나는 이어버드, 프리미엄 조명
- 오디오: 음악만 (드라마틱 인트로)
## 장면 2: 음질 (5-12초)
- 시각: 음파, 음악을 즐기는 사람
- 오디오: 내레이션: "수정처럼 맑은 사운드. 몰입감 있는 베이스."
## 장면 3: 편안함 (12-20초)
- 시각: 착용감 클로즈업, 달리는 사람
- 오디오: 내레이션: "하루 종일 편안함. 안정적인 착용감."
## 장면 4: CTA (20-30초)
- 시각: 제품 + 로고
- 오디오: 내레이션: "차이를 경험하세요." + 음악 고조
3단계: project.json 구성
스토리보드를 기반으로 장면 프롬프트, 내레이션 텍스트 및 음악 스타일을 입력합니다.
4단계: 조립
python3 assemble.py --project ~/wireless_earbuds_promo/
5단계: 검토 및 반복
output/에서 출력을 확인합니다. 조정이 필요한 경우:
# 기존 장면으로 다시 실행 (오디오만 다시 혼합)
python3 assemble.py --project ~/wireless_earbuds_promo/ --skip-generation
만들 수 있는 것
| 유형 | 예시 |
|---|---|
| 제품 비디오 | 제품을 소개하는 30초 히어로 비디오 |
| 설명 비디오 | 사용 방법 또는 기능 설명 |
| 프로모/광고 비디오 | 마케팅 광고 |
| 데모 비디오 | 제품 시연 |
| 교육 비디오 | 내부 교육 콘텐츠 |
| 사용 후기 | 고객 인용 스타일 비디오 |
| 브랜드 비디오 | 회사/브랜드 스토리 |
사전 요구 사항
GOOGLE_API_KEY- Veo (비디오), Gemini TTS (음성), Lyria (음악) 용- FFmpeg 설치:
brew install ffmpeg
비디오 스타일 및 음악 페어링
| 스타일 | 음악 프롬프트 | 음성 |
|---|---|---|
| 프리미엄/럭셔리 | "elegant, minimal, ambient, sophisticated" | Charon (정보 제공) |
| 기술/모던 | "electronic, futuristic, clean, innovative" | Kore (단호) |
| 재미/장난기 | "upbeat, cheerful, acoustic, positive" | Puck (경쾌) |
| 기업 | "professional, inspiring, orchestral lite" | Orus (단호) |
| 라이프스타일 | "chill, aspirational, indie, warm" | Aoede (산뜻) |
| 드라마틱/시네마틱 | "epic, orchestral, emotional, building" | Gacrux (성숙) |
일반적인 비디오 구조
제품 비디오 (30초)
0-5초: 히어로 샷 (음악만)
5-15초: 특징 (내레이션 + 음악)
15-25초: 라이프스타일/사용 사례 (내레이션 + 음악)
25-30초: 로고 + CTA (음악 페이드아웃)
설명 비디오 (60초)
0-5초: 후크/문제 진술
5-20초: 솔루션 소개
20-45초: 작동 방식 (3단계)
45-55초: 이점 요약
55-60초: CTA
사용 후기 비디오 (45초)
0-5초: 소개/이름 카드
5-35초: 사용 후기 인용 (여러 장면)
35-45초: 제품 샷 + 로고
수동 워크플로우 (스크립트 없음)
각 단계를 수동으로 실행하려면:
장면 생성:
python3 ${CLAUDE_PLUGIN_ROOT}/skills/video-generation/scripts/veo.py \
--batch scenes.json
내레이션 생성:
python3 ${CLAUDE_PLUGIN_ROOT}/skills/voice-generation/scripts/gemini_tts.py \
--text "내레이션 텍스트..." \
--voice Charon \
--style "전문적, 따뜻함"
음악 생성:
python3 ${CLAUDE_PLUGIN_ROOT}/skills/music-generation/scripts/lyria.py \
--prompt "modern electronic, premium" \
--duration 35
클립에서 오디오 제거:
python3 ${CLAUDE_PLUGIN_ROOT}/skills/media-utils/scripts/video_strip_audio.py \
-i scene*.mp4
비디오 연결:
python3 ${CLAUDE_PLUGIN_ROOT}/skills/media-utils/scripts/video_concat.py \
-i silent_*.mp4 --transition fade -o video.mp4
오디오 혼합:
python3 ${CLAUDE_PLUGIN_ROOT}/skills/media-utils/scripts/audio_mix.py \
--voice voiceover.wav --music music.wav -o audio.mp3
오디오 + 비디오 병합:
python3 ${CLAUDE_PLUGIN_ROOT}/skills/media-utils/scripts/video_audio_merge.py \
--video video.mp4 --audio audio.mp3 -o final.mp4
제공할 수 있는 입력 파일
| 파일 유형 | 사용 방법 |
|---|---|
| 제품 이미지 | Veo로 첫 프레임으로 애니메이션 |
| 로고 (PNG) | 최종 장면에 오버레이 |
| 기존 내레이션 | audio/voiceover.wav에 배치 |
| 브랜드 음악 | audio/background_music.wav에 배치 |
| 비디오 클립 | scenes/ 폴더에 배치 |
| 스크립트/카피 | 내레이션 텍스트로 사용 |
제한 사항
- Veo 비디오 길이: 클립당 최대 8초 (더 길게 연결)
- Veo 3.1에는 오디오 포함: 모든 클립에 생성된 오디오가 있음 (커스텀 사용 시 제거)
- 처리 시간: 비디오 생성은 클립당 1-3분 소요
- 해상도: 현재 720p 또는 1080p (1080p는 8초 전용)
오류 처리
| 오류 | 해결 방법 |
|---|---|
| "GOOGLE_API_KEY not set" | README에 따라 API 키 설정 |
| "FFmpeg not found" | 설치: brew install ffmpeg |
| "project.json not found" | 먼저 init_project.py 실행 |
| 비디오 생성 시간 초과 | 다시 시도하거나 더 짧은 길이 사용 |
| 오디오/비디오 동기화 문제 | 장면 길이 조정 |
예시 프롬프트
간단:
"새 커피 메이커에 대한 30초 제품 비디오를 만들어줘"
상세:
"새 무선 이어버드에 대한 45초 제품 비디오를 만들어줘. 프리미엄, 럭셔리 느낌. 제품 사진을 첨부했어. 전문적인 남성 내레이션. 모던 일렉트로닉 음악. YouTube용 16:9."
프로젝트 포함:
"'앱 데모'라는 비디오 프로젝트를 초기화해줘. 5개 장면, 총 60초, TikTok용 세로 포맷"