视频制作人
创建包含配音、背景音乐和视觉效果的完整视频。
这是一种编排型技能,结合了:
- 脚本/故事板生成 (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(标准高清)”
等待回复。
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": "产品特写镜头缓慢推近,戏剧性光线,高端广告风格",
"duration": 6,
"notes": "仅音乐,无配音"
},
{
"id": 2,
"name": "scene2_features",
"prompt": "产品功能演示,流畅动画,现代科技美学",
"duration": 8,
"notes": "配音从这里开始"
},
{
"id": 3,
"name": "scene3_cta",
"prompt": "产品搭配Logo,纯色背景,行动号召时刻",
"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 生成的音频(对白、音效) | 电影场景、对话 |
silent | 剥离音频,输出静音视频 | 后续添加音频 |
工作流程:创建视频
第 1 步:初始化项目
python3 init_project.py --name "无线耳机宣传" --duration 30
第 2 步:规划故事板
编辑 storyboard.md 规划视频结构:
## 场景 1:主视觉亮相 (0-5s)
- 画面:耳机从阴影中出现,高级光线
- 音频:仅音乐(戏剧性开场)
## 场景 2:音质展示 (5-12s)
- 画面:声波,享受音乐的人
- 音频:配音:“清澈的声音。沉浸式低音。”
## 场景 3:舒适体验 (12-20s)
- 画面:佩戴特写,正在跑步的人
- 音频:配音:“全天舒适。稳固贴合。”
## 场景 4:行动号召 (20-30s)
- 画面:产品+Logo
- 音频:配音:“体验不同。”+音乐渐强
第 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
视频风格与音乐搭配
| 风格 | 音乐提示 | 声音 |
|---|---|---|
| 高级/奢华 | “优雅、极简、环境、精致” | Charon (告知型) |
| 科技/现代 | “电子、未来感、干净、创新” | Kore (坚定型) |
| 有趣/俏皮 | “欢快、明亮、原声、积极” | Puck (活泼型) |
| 企业风 | “专业、鼓舞、轻管弦” | Orus (坚定型) |
| 生活方式 | “休闲、向往、独立、温暖” | Aoede (轻松型) |
| 戏剧/电影感 | “史诗、管弦、情感、渐强” | Gacrux (成熟型) |
常见视频结构
产品视频 (30 秒)
0-5s: 主画面 (仅音乐)
5-15s: 功能展示 (配音+音乐)
15-25s: 生活方式/使用场景 (配音+音乐)
25-30s: Logo + 行动号召 (音乐淡出)
解释视频 (60 秒)
0-5s: 吸引/问题陈述
5-20s: 解决方案介绍
20-45s: 工作原理 (3 个步骤)
45-55s: 优势总结
55-60s: 行动号召
推荐视频 (45 秒)
0-5s: 介绍/姓名卡片
5-35s: 推荐语 (多个场景)
35-45s: 产品镜头 + Logo
手动工作流程(不使用脚本)
如果你想手动运行每个步骤:
生成场景:
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 "现代电子、高端" \
--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 作为第一帧进行动画 |
| Logo (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。”
附带项目:
“初始化一个名为‘应用演示’的视频项目,5 个场景,总时长 60 秒,竖屏格式用于 TikTok”