影片製作人
建立包含旁白、音樂和視覺效果的完整影片。
這是一個編排者技能,它結合了:
- 腳本/故事板生成 (Claude)
- 旁白合成 (Gemini TTS)
- 背景音樂 (Lyria)
- 影片片段生成 (Veo 3.1) 或圖片動畫
- 最終組裝 (FFmpeg 透過 media-utils)
工作流程
第一步:收集需求(必填)
⚠️ 請勿跳過此步驟。在獲得所有答案之前,請勿執行 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 |
第二步:初始化專案
獲得使用者的答案後,使用他們的偏好設定初始化專案:
python3 ${CLAUDE_PLUGIN_ROOT}/skills/video-producer-agent/scripts/init_project.py \
--name "Product Launch Video" \
--duration 30 \
--aspect-ratio 16:9 \
--audio-strategy custom \
--scenes 5
第三步:設定 project.json
根據使用者的答案,編輯 project.json 中的場景提示詞、旁白文字和音樂風格。
第四步:組裝影片
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": "Music only, no voiceover"
},
{
"id": 2,
"name": "scene2_features",
"prompt": "Product features demonstration, sleek animations, modern tech aesthetic",
"duration": 8,
"notes": "Voiceover starts here"
},
{
"id": 3,
"name": "scene3_cta",
"prompt": "Product with logo on clean background, call to action moment",
"duration": 6,
"notes": "Music swells, voiceover ends"
}
],
"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 | 移除音訊,輸出無聲影片 | 稍後再加入音訊 |
工作流程:建立影片
第一步:初始化專案
python3 init_project.py --name "Wireless Earbuds Promo" --duration 30
第二步:規劃故事板
編輯 storyboard.md 來規劃你的影片結構:
## 場景 1:主角揭曉 (0-5s)
- 視覺:耳機從陰影中浮現,高級燈光
- 音訊:僅音樂(戲劇性開場)
## 場景 2:音質 (5-12s)
- 視覺:聲波,享受音樂的人
- 音訊:旁白:「清澈透亮的聲音。沉浸式低音。」
## 場景 3:舒適度 (12-20s)
- 視覺:貼合度特寫,正在跑步的人
- 音訊:旁白:「全天候舒適。穩固貼合。」
## 場景 4:行動呼籲 (20-30s)
- 視覺:產品 + 標誌
- 音訊:旁白:「體驗不同凡響。」+ 音樂漸強
第三步:設定 project.json
根據你的故事板,填入場景提示詞、旁白文字和音樂風格。
第四步:組裝
python3 assemble.py --project ~/wireless_earbuds_promo/
第五步:檢視與疊代
檢查 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) |
常見影片結構
產品影片 (30s)
0-5s: 主角畫面(僅音樂)
5-15s: 功能介紹(旁白 + 音樂)
15-25s: 生活/使用情境(旁白 + 音樂)
25-30s: 標誌 + 行動呼籲(音樂淡出)
解說影片 (60s)
0-5s: 鉤子/問題陳述
5-20s: 解決方案介紹
20-45s: 運作方式(3 個步驟)
45-55s: 優點總結
55-60s: 行動呼籲
見證影片 (45s)
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 "Your voiceover 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」