影片製作人
建立包含旁白、音樂和視覺效果的完整影片。
這是一個協調型技能,它結合了:
- 腳本/分鏡生成 (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 內建的對話/音效/環境音
- 無聲 — 無音訊,稍後再添加」
等待回應。
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 "Instagram Reel" --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": "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": "Introducing the future of audio. Crystal clear sound. All-day comfort. Experience the difference.",
"voice": "Charon",
"style": "Professional, confident, premium brand voice"
},
"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 生成的音訊 (對話、音效) | 電影場景、對話 |
silent | 移除音訊,輸出無聲影片 | 稍後再添加音訊 |
工作流程:建立影片
步驟 1:初始化專案
python3 init_project.py --name "無線耳機宣傳" --duration 30
步驟 2:規劃分鏡
編輯 storyboard.md 來規劃您的影片結構:
## 場景 1:主角揭示 (0-5s)
- 視覺:耳機從陰影中浮現,高級燈光
- 音訊:僅音樂 (戲劇性開場)
## 場景 2:音質 (5-12s)
- 視覺:聲波、享受音樂的人
- 音訊:旁白 "清澈透亮的聲音。沉浸式重低音。"
## 場景 3:舒適度 (12-20s)
- 視覺:貼合特寫、跑步的人
- 音訊:旁白 "全天候舒適。穩固貼合。"
## 場景 4:行動呼籲 (20-30s)
- 視覺:產品 + 標誌
- 音訊:旁白 "體驗不同凡響。" + 音樂漸強
步驟 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 (informative) |
| 科技/現代 | "electronic, futuristic, clean, innovative" | Kore (firm) |
| 有趣/活潑 | "upbeat, cheerful, acoustic, positive" | Puck (upbeat) |
| 企業 | "professional, inspiring, orchestral lite" | Orus (firm) |
| 生活風格 | "chill, aspirational, indie, warm" | Aoede (breezy) |
| 戲劇化/電影感 | "epic, orchestral, emotional, building" | Gacrux (mature) |
常見影片結構
產品影片 (30 秒)
0-5s: 英雄鏡頭 (僅音樂)
5-15s: 功能 (旁白 + 音樂)
15-25s: 生活/使用情境 (旁白 + 音樂)
25-30s: 標誌 + 行動呼籲 (音樂淡出)
解說影片 (60 秒)
0-5s: 鉤子/問題陳述
5-20s: 解決方案介紹
20-45s: 運作方式 (3 個步驟)
45-55s: 效益總結
55-60s: 行動呼籲
推薦影片 (45 秒)
0-5s: 介紹/姓名卡
5-35s: 推薦語錄 (多個場景)
35-45s: 產品鏡頭 + 標誌
手動操作流程 (無腳本)
如果您偏好逐步手動執行每個步驟:
生成場景:
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 (僅 8 秒片段支援 1080p)
錯誤處理
| 錯誤 | 解決方案 |
|---|---|
| "GOOGLE_API_KEY not set" | 根據 README 設定 API 金鑰 |
| "FFmpeg not found" | 安裝:brew install ffmpeg |
| "project.json not found" | 先執行 init_project.py |
| 影片生成逾時 | 重試,或使用較短的長度 |
| 音訊/影片同步問題 | 調整場景長度 |
範例提示
簡單:
"為我的新咖啡機製作一個 30 秒的產品影片"
詳細:
"為我們的新無線耳機製作一個 45 秒的產品影片。高級、奢華的感覺。我附上了產品照片。專業男性旁白。現代電子音樂。16:9 用於 YouTube。"
包含專案:
"初始化一個名為 'App Demo' 的影片專案,包含 5 個場景,總長 60 秒,直式格式用於 TikTok"