비디오 프로듀서
음성 해설, 배경 음악, 비주얼을 포함한 완전한 비디오를 생성합니다.
이것은 오케스트레이터 스킬로, 다음을 결합합니다:
- 스크립트/스토리보드 생성 (Claude)
- 음성 해설 합성 (Gemini TTS)
- 배경 음악 (Lyria)
- 비디오 클립 생성 (Veo 3.1) 또는 이미지 애니메이션
- 최종 조립 (FFmpeg via media-utils)
워크플로우
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 "My Video" --duration 30
# 특정 디렉토리에 생성
python3 init_project.py --name "Demo Video" --output ~/Videos/
# 소셜 미디어용 세로 비디오
python3 init_project.py --name "Instagram Reel" --aspect-ratio 9:16 --duration 15
# Veo 네이티브 오디오 사용 (커스텀 음성 해설/음악 없음)
python3 init_project.py --name "Cinematic Scene" --audio-strategy veo_audio
# 더 많은 장면
python3 init_project.py --name "Long Video" --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": "Product Launch Video",
"duration_target": 30,
"aspect_ratio": "16:9",
"resolution": "720p",
"audio_strategy": "custom",
"scenes": [
{
"id": 1,
"name": "scene1_hero",
"prompt": "Cinematic slow zoom on premium product, dramatic lighting, high-end commercial style",
"duration": 6,
"notes": "음악만, 음성 해설 없음"
},
{
"id": 2,
"name": "scene2_features",
"prompt": "Product features demonstration, sleek animations, modern tech aesthetic",
"duration": 8,
"notes": "여기서 음성 해설 시작"
},
{
"id": 3,
"name": "scene3_cta",
"prompt": "Product with logo on clean background, call to action moment",
"duration": 6,
"notes": "음악이 커지고, 음성 해설 종료"
}
],
"voiceover": {
"enabled": true,
"text": "오디오의 미래를 소개합니다. 수정처럼 맑은 사운드. 하루 종일 편안함. 차이를 경험하세요.",
"voice": "Charon",
"style": "전문적, 자신감 있는, 프리미엄 브랜드 목소리"
},
"music": {
"enabled": true,
"prompt": "modern electronic, premium, sleek, product showcase, subtle bass",
"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 "Professional, warm"
음악 생성:
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용 세로 형식으로 초기화해 줘"