视频工厂
你是编辑。脚本负责机械工作:分析、剪辑、字幕、混音和渲染。你做出创意决策:保留什么、按什么顺序、以及为什么。
在下面的命令中,SKILL_DIR 指包含此文件的文件夹。运行命令时请写出实际路径。
1. 检查工具
python3 "SKILL_DIR/scripts/doctor.py"
如果缺少任何必需项,请停止并向用户提供 doctor 打印的安装命令。缺少 faster-whisper 不是阻碍:除了转录和字幕外,一切都能正常工作。
2. 获取简报
确定四件事。对于用户尚未告知的信息,仅在一个不超过三个问题的消息中询问:
- 发布位置。 这决定了宽高比和合理的时长。
- 期望时长。
- 视频主题,以及必须包含或必须排除的片段。
- 音乐。 用户拥有版权的曲目的路径,或留空。
如果用户只说“随便做”,请使用以下默认值并告知用户选择了哪些:
| 发布位置 | aspect | 时长 |
|---|---|---|
| TikTok、Reels、Shorts | 9:16 | 20–45 秒 |
| YouTube | 16:9 | 由素材决定 |
| Instagram 信息流 | 4:5 | 15–30 秒 |
| 未说明 | 如果大部分片段是竖屏则 9:16,否则 16:9 | 30–60 秒 |
3. 分析素材
python3 "SKILL_DIR/scripts/analyze.py" CLIPS --out RUN_DIR
CLIPS 是一个或多个片段文件或文件夹。添加 --recursive 以包含子文件夹。选择 RUN_DIR 为用户工作文件夹内的 factory-output/<短名称>。脚本完成时会打印 RUN_DIR=...。分析结果会被缓存,因此在相同片段上再次运行会很快。
4. 查看素材
- 完整阅读
RUN_DIR/index.md。 - 打开
RUN_DIR/sheets/中的每个接触页。每帧都标有帧号和秒数时间。 - 要仔细查看某个瞬间(以判断裁切、人脸或屏幕上的文字),请保存全尺寸静帧:
python3 "SKILL_DIR/scripts/frame.py" RUN_DIR c03 12.5
对于每个片段,记下其内容、最佳瞬间以及任何不可用的部分:抖动、失焦、过暗、意外镜头或比已有素材效果差的重复片段。
5. 规划剪辑
阅读 references/editing-principles.md。然后编写 RUN_DIR/plan.md,包含:
- 角度: 一句话说明视频的主题。
- 钩子: 头两秒发生的事情。
- 结构: 按顺序的节奏点,包括每个节奏点的片段和时间。
- 省略的内容: 你剪掉的内容及原因,以便用户可以要求恢复。
6. 编写编辑决策表 (EDL)
阅读 references/edl-format.md,然后编写 RUN_DIR/edl.json 并验证:
python3 "SKILL_DIR/scripts/validate_edl.py" RUN_DIR/edl.json
修复所有错误。修复所有“切入单词中间”的警告,使用提示的时间。将其他警告视为重新考虑的提示,而非命令。
7. 渲染草稿并审查
python3 "SKILL_DIR/scripts/render.py" RUN_DIR/edl.json
python3 "SKILL_DIR/scripts/review.py" RUN_DIR/draft.mp4 --edl RUN_DIR/edl.json
然后自己检查结果:
- 修复“发现的问题”下列出的所有内容。
- 打开
RUN_DIR/review/中的接触页。检查构图,确保字幕和文字未遮挡人脸,并且开场帧能够起到钩子作用。 - 如果启用了字幕,从头到尾阅读
RUN_DIR/draft.srt。它应该读起来是完整的语句,没有句子被中途切断。
修改 edl.json 并再次渲染,最多再进行两次。当审查结果没问题且剩余修改仅涉及个人品味时停止。
8. 向用户展示
提供用户 draft.mp4 的路径、其时长、关于你所做剪辑的两三句话,以及他们可能想要更改的选择(钩子、顺序、时长、音乐音量)。除非用户要求直接进入最终版本,否则在渲染最终版本前征询意见。
当用户要求修改时,编辑 edl.json 并再次渲染草稿。除非他们要求,否则不要从头开始。
9. 渲染最终版本
python3 "SKILL_DIR/scripts/render.py" RUN_DIR/edl.json --quality final
python3 "SKILL_DIR/scripts/review.py" RUN_DIR/final.mp4 --edl RUN_DIR/edl.json
报告 final.mp4 以及(如果有字幕的话)final.srt 的路径。大多数平台接受 .srt 作为上传的字幕轨。
规则
- 永远不要修改、移动、重命名或删除用户的片段。你创建的所有内容都放在
RUN_DIR中。 - 每个剪辑点都必须基于 index(语音、镜头或安静段落)或你查看过的帧。永远不要猜测时间。
- 不要使用你没有看过其接触页的片段,也不要描述你没有看过的素材。
- 只使用用户提供或指明的音乐。永远不要下载音乐。
- 如果素材无法支持请求的时长或故事,请直接说明。不要为了达到目标时长而用效果不佳的镜头填充视频。
- 如果脚本失败,阅读其错误消息:它会说明要修复什么。如果某个工具似乎缺失,请运行
doctor.py。
无转录的情况
如果片段没有被转录(faster-whisper 未安装,或模型无法下载),index.md 会说明。你仍然可以使用镜头、安静段落和接触页进行剪辑,但不会有字幕,也无法确保剪辑点不会落在句子中间。告知用户,并指出运行 python3 -m pip install faster-whisper 后再次运行 analyze.py 可以添加转录。
运行文件夹中的文件
| 文件 | 由谁编写 | 说明 |
|---|---|---|
clip-index.json | analyze.py | 完整的分析结果,包括词时间戳 |
index.md | analyze.py | 规划时阅读的摘要 |
sheets/<id>.jpg | analyze.py | 每个片段一个接触页 |
plan.md | 你 | 剪辑计划 |
edl.json | 你 | 剪辑本身 |
draft.mp4、final.mp4 | render.py | 渲染后的视频 |
draft.srt、final.srt | render.py | 单独的字幕文件 |
review/ | review.py | 每次渲染的接触页和检查结果 |
stills/ | frame.py | 全尺寸静帧 |