/auto-video-edit: 从原始素材到成片
无需中断提问,一键执行整个流程。遇到错误自动修复并重新运行,直到生成合格的 final-video.mp4。
SKILL_DIR 指本文件所在的文件夹(通常为 ~/.claude/skills/auto-video-edit)。
1. 检查环境(一次性操作)
ls SKILL_DIR/.venv/bin/python SKILL_DIR/remotion/node_modules/.bin/remotion
如果任一文件缺失,运行仓库中的 install.sh,或手动安装:
python3 -m venv SKILL_DIR/.venv && SKILL_DIR/.venv/bin/pip install -r SKILL_DIR/requirements.txt
cd SKILL_DIR/remotion && npm install && npx remotion browser ensure
还需要在 PATH 中提供 ffmpeg、ffprobe 和 node(macOS: brew install ffmpeg node)。
2. 运行流水线
在存放素材的目录中(默认使用其中最大的视频文件,也可指定文件名):
bash SKILL_DIR/scripts/run_all.sh # 或: run_all.sh my-take.mov
该命令依次执行三个步骤,每个步骤也可独立运行:SKILL_DIR/.venv/bin/python SKILL_DIR/scripts/<step>.py
| 步骤 | 功能 | 输出文件 |
|---|---|---|
edit.py | 检测语音,剪除超过 0.5 秒的静音(保留 0.15 秒气口),将视频分割成约 4.5 秒的镜头;根据口播内容为每个镜头选择常规/推进(1.3×)/特写(1.5×)缩放,以检测到的人脸为中心;进行色彩分级,将人声标准化至 -14 LUFS,每个剪切点添加 10 毫秒淡入淡出 | edited-video.mp4、work/transcript.json、work/edit_report.json |
animate.py | 识别需要视觉辅助的时刻:带单位的数字 → 计数器、“A vs B”/“instead of”/“before-after” → 对比图、3 个及以上“首先/然后/最后”句式 → 流程图、强烈观点(“事实是”、“大多数人”等) → 文本卡;平均每 15 秒一张卡片,从不在视频前 2.5 秒内插入;按视频尺寸和帧率渲染每张卡片 | work/animation_plan.json、animations/*.mp4、work/animation_manifest.json |
finalize.py | 将每张卡片在其时间点以柔和淡入淡出方式合成到视频中;如果存在 broll/ 文件夹,且文件名与口播关键词匹配(如 broll/coffee.mp4 → “coffee”),则插入对应片段,持续 3 秒 | final-video.mp4、work/finalize_report.json |
常用参数:edit.py --no-zoom、--whisper small(更准确转录但更慢)、--silence-db -35(安静环境) / -25(嘈杂环境)、--min-silence 0.35(更紧密的剪切)。animate.py --max 3、--min-gap 8。
3. 优化动画卡片(每次必做)
自动计划基于规则生成。通过转录文本在最终渲染前完善计划:
SKILL_DIR/.venv/bin/python SKILL_DIR/scripts/animate.py --plan-only- 阅读
work/transcript.json和work/animation_plan.json。编辑计划:- 将每个
headline/label/steps/value改写为 2-6 个精炼词语,准确传达说话者意图(不要只截取句子片段)。修正转录中听错的数字。 - 删除无助于理解内容的卡片;在关键数字、列表或对比处缺少卡片时手动添加。卡片类型和属性:
Counter:{"to": 75, "decimals": 0, "prefix": "$", "suffix": "%", "label": "..."}Comparison:{"left": {"label": "Before", "value": "4 hours"}, "right": {"label": "After", "value": "10 min"}}Flowchart:{"steps": ["Record", "Upload", "Post"]}(2-5 步)TextCard:{"headline": "Nobody talks about this", "body": ""}
- 每张卡片需要
"start"(以 edited-video.mp4 的秒数为准)和"seconds"(3-5 秒)。
- 将每个
SKILL_DIR/.venv/bin/python SKILL_DIR/scripts/animate.py --from-planSKILL_DIR/.venv/bin/python SKILL_DIR/scripts/finalize.py
4. 检查最终结果
- 阅读
work/edit_report.json和work/finalize_report.json:确认时长合理缩短,无警告信息。 - 截取关键帧进行检查:
ffmpeg -ss 5 -i final-video.mp4 -frames:v 1 -y work/check.jpg(并在每张卡片的起始位置+1 秒处截取)。观察:缩放镜头中人脸是否在画框内、卡片是否可读、无内容被裁剪。 - 如果缩放导致人脸被严重裁剪,重新运行
edit.py --no-zoom。如果剪辑感觉生硬,使用--min-silence 0.8。
故障排查
每个步骤会将其完整的 ffmpeg / Remotion 输出写入 work/*.log。阅读最后几行,修复原因后仅重新运行该步骤。常见问题:
whisper unavailable→ 虚拟环境中缺少依赖;安装它(参见步骤 1)。编辑功能仍可运行,但没有缩放选择。- Remotion
Could not find a browser→cd SKILL_DIR/remotion && npx remotion browser ensure。 - 某张卡片渲染失败 → 会用纯文本卡片重试,若仍失败则跳过;视频仍可正常完成。
报告
--- VIDEO EDIT COMPLETE ---
Input / Output / Duration before → after / cuts / zoom mix / cards / b-roll / file size
然后列出您无法修复的任何问题。