关于 video-composer
此 Skill 协调图像、视频、音乐和旁白生成 Skill,在 Remotion 时间线上制作 MP4。它涵盖需求收集、需审批的分镜计划、渲染和画面检查。
主要功能
- 01协调四种媒体生成 Skill
- 02收集视频需求并征求批准
- 03搭建 Remotion 项目
- 04构建数据驱动的场景时间线
- 05渲染并检查视频静帧
适用场景
- 01制作带旁白的宣传视频
- 02组合生成的图像与视频片段
- 03规划场景时长、字幕和转场
- 04检查并修订渲染后的 MP4
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ danishi/ claude-code-config --skill video-composer安装后在 Claude Code 中输入/video-composer确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
.claude-plugin/plugin.jsonreferences/asset-pipeline.mdremotion-template.mdself-review.mdscripts/check_skills.pyrender_video.pyscaffold.py详细介绍
Video Composer — 编排式丰富视频制作
此技能通过在 Remotion(React)时间线上组合四种媒体技能,将请求制作成完整的 .mp4:
| 层 | 技能 |
|---|---|
| 图像 / 背景 | nanobanana |
| 视频片段 | veo |
| 背景音乐 | lyria |
| 旁白 / 配音 | gemini-tts |
它是一个编排器:本身不生成媒体,而是调度上述技能并组合它们的输出。
工作流(必须按顺序执行)
步骤 0 — 检查前置条件和同级技能
首先运行可用性检查:
python scripts/check_skills.py
- 全部可用 → 继续。
- 部分缺失 → 这通常意味着其他用户单独安装了 video-composer(例如通过
npx skills add)。提示他们安装缺失的技能,使用脚本输出的命令(来自仓库 README),或提供有文档说明的备用方案(参见references/asset-pipeline.md→ “缺失的技能”)。不要默默跳过用户要求的资产类型——应明确说明可选方案。
另请确认工具:Node.js ≥ 18(node -v)和 npx。Remotion 自带 ffmpeg,因此不需要 ffmpeg。媒体技能需要 API 访问权限:GEMINI_API_KEY(或 Vertex AI)。参见 references/asset-pipeline.md。
步骤 1 — 收集需求
采访用户(有任何不明确之处时使用 AskUserQuestion),以确定:
- 目的 / 信息和目标受众
- 时长(例如 15s / 30s / 60s)和方向(16:9 / 9:16 / 1:1)
- 语气 / 风格(企业风、活泼、电影感、简约……)
- 必需内容:旁白?屏幕字幕?BGM 氛围?品牌颜色 / Logo?
- 语言(旁白和字幕使用)
- 用户已有的资产,以及需要生成的内容
步骤 2 — 返回构图方案并获取批准(关卡)
制定简洁、结构化的方案并呈现给用户。**在用户批准前,不要生成任何内容或进行渲染。**方案必须包括:
- 整体规格:分辨率、fps、总时长、方向
- 逐场景表格:# · 时长 · 视觉内容(图像 / 视频 + 提示词摘要)· 旁白文本 · 屏幕字幕 · 转场
- BGM 氛围和任何 Logo / 品牌元素
- 哪些资产是生成的(以及由哪个技能生成),哪些是备用 / 用户提供的
与用户迭代完善方案,直到用户明确批准。只有在此之后才能继续。
步骤 3 — 搭建 Remotion 项目
python scripts/scaffold.py <project-dir>
这会写入一个自包含、数据驱动的 Remotion 项目(结构和 props 架构参见 references/remotion-template.md)。每个视频都会搭建一个全新项目。
步骤 4 — 生成资产
根据已批准的方案,调用各个同级技能,并将输出放在 <project-dir>/public/{images,video,audio}/ 下。确切命令和时长提示参见 references/asset-pipeline.md。保持图像风格一致。
BGM 仅存在于 lyria 层。 Veo 片段会在时间线上保留原生音频(SE、环境音、对话),因此生成 Veo 片段时,必须始终抑制内嵌音乐——传入
--negative-prompt "background music, soundtrack, musical score, BGM",并且绝不要在提示词中要求音乐。否则片段自带的 BGM 会与全局 lyria BGM 冲突。保留 SE / 环境音;仅抑制音乐。详情参见references/asset-pipeline.md→ “绝不让 veo 片段携带自己的 BGM”。
第 5 步 — 编写时间线(props.json)
复制 props.sample.json → props.json,并填写各个场景:通过相对于 public/ 的路径引用素材,为每个场景设置 durationInFrames(round(seconds * fps))、字幕、配音、转场和 BGM。架构与时序规则:references/remotion-template.md。
第 6 步 — 渲染并进行多模态自我审核(自主迭代)
python scripts/render_video.py --project <project-dir> \
--props <project-dir>/props.json --install --review-frames 6
然后,使用视觉能力读取导出的审核静帧,并根据 references/self-review.md 中的评分标准进行评分。自主迭代——优先修复成本最低的层(props → 重新生成素材)——直至所有标准均通过或达到迭代上限(默认为 3 次)。
第 7 步 — 交付
结果达到要求后,将最终 .mp4 交付给用户(使用 SendUserFile 发送文件)。如果达到迭代上限时仍存在已知问题,则交付最佳版本,并列出剩余问题以及建议的后续步骤。
脚本
| 脚本 | 用途 |
|---|---|
scripts/check_skills.py | 检测同级技能;输出安装指南/备用方案 |
scripts/scaffold.py | 为全新的数据驱动 Remotion 项目搭建框架 |
scripts/render_video.py | npm install + 渲染 + 导出审核静帧 |
参考资料
| 文件 | 内容 |
|---|---|
references/asset-pipeline.md | 驱动各个媒体技能的精确命令;时序;缺少技能时的处理方式 |
references/remotion-template.md | 项目结构与 props.json 时间线架构 |
references/self-review.md | 多模态审核评分标准与自主迭代循环 |
Props 架构(快速参考)
{
"fps": 30, "width": 1920, "height": 1080,
"bgm": { "src": "audio/bgm.mp3", "volume": 0.22 },
"scenes": [
{
"durationInFrames": 150,
"media": { "type": "image" | "video", "src": "images/x.png", "fit": "cover" },
"kenBurns": true,
"captions": [ { "text": "…", "fromFrame": 0, "toFrame": 140, "position": "bottom" } ],
"voiceover": { "src": "audio/vo1.wav", "volume": 1.0, "delayInFrames": 6 },
"transitionToNext": { "type": "fade" | "slide" | "wipe" | "none",
"durationInFrames": 18, "direction": "from-right" }
}
]
}
- 素材的
src路径相对于public/(http(s) URL 会直接传递)。 - 总时长会自动计算(场景时长总和减去转场重叠时长)。
原则
- 必须设置审批关卡——用户批准计划前,绝不开始生成或渲染。
- 绝不交付未经审核的渲染结果——始终运行自我审核循环。
- 优先使用此代码库的技能;缺少某项技能时,提示安装或使用文档记录的备用方案,并在计划中明确说明权衡。
- 先修复成本低的问题,再处理成本高的问题——重新生成素材前先编辑 props。
- 只使用一条 BGM 音轨——音乐应属于 lyria 层;生成 veo 视频片段时,始终通过负面提示词抑制音乐,避免片段内嵌的 BGM 与全局 BGM 冲突。保留片段的 SE/环境音。