video-editing(路由)
通过运行小型、单一用途的脚本并读取其 JSON 输出来编辑视频,而不是观看视频。仅在决策点查看帧(拼版、全分辨率静态帧)。
选择哪个技能
| 用户想要…… | 技能 |
|---|---|
| 将长录制文件分割成剪辑、建议剪切点、去除空导引 | auto-cut |
| 在视频上添加钩子 / 标题 /“POV:”文字 | hook-overlay |
| 字幕、标题、转录文本、尊重词语的剪切 | captions |
| 修正响度、去除静音、干净连接、交叉淡入淡出 | audio-polish |
| 无缝循环、GIF、表情包 GIF、贴纸 | loops-gifs-stickers |
| 判断渲染是否合格、联系表、审批步骤 | render-qc |
| 将视频发布到 YouTube | youtube-publish |
默认流程(从原始屏幕录制到发布 Short)
auto-cut -> hook-overlay -> captions -> audio-polish -> render-qc -> youtube-publish
建议, PNG 模板 + 转录, 修剪静音, 验证, 试运行,
审批, 叠加 ASS,燃烧 loudnorm 联系表, 上传为私享,
分割,修剪 (最后视觉) (最后音频) 用户审批 分类账
并非每个任务都需要所有步骤:音乐片段跳过字幕;GIF 跳过发布。当目标不明确时询问;否则说明计划并继续执行。
硬性规则(所有技能适用)
- 绝不触碰原始文件。 输出文件位于源文件旁边的
edit/目录(脚本默认如此)。 - 先规划,再剪切。 在破坏性或耗时步骤之前,提出剪切点/钩子/设置,并获得用户的批准。
- 绝不在词语内部剪切。 对于语音,剪切点应紧贴词语间隙(
captions/snap-to-words)。 - 每次音频剪切都添加约 30 毫秒淡入淡出。 在非零采样点剪切会产生咔哒声。
- 剪辑开头是内容。 不能出现黑帧、加载画面或上一屏幕的尾部(由
auto-cut/trim-lead处理,render-qc检查)。 - 文字保持在安全区。 钩子模板在顶部区域,最多 2 行;字幕在底部平台 UI 之上;不重叠。
- 顺序至关重要。 先剪切,再叠加,然后字幕(最后视觉步骤),再响度(最后音频步骤),最后质检。
- 质检每个最终渲染:使用
render-qc/verify-render,然后向用户展示联系表或真实的 MP4。不要根据缩放的预览来判断。 - 审批由人决定。 除非用户在本对话中明确同意,否则切勿传递
--approved或--allow-public。 - 机密信息远离 Git 和日志。 OAuth 客户端和令牌存储在环境变量或 .gitignored 文件中;切勿打印它们。
- 优先使用不同标志重新运行脚本,而不是手写 ffmpeg 命令。 每个脚本都支持
--help和--help --json。
设置检查
ffmpeg -version && ffprobe -version # 必须(任何近期的构建;不需要 drawtext)
node --version # >= 18
npm install # 一次,在仓库根目录(安装 sharp)
python3 -m pip install faster-whisper # 仅用于 captions/transcribe.py
如果 ffmpeg 不在 PATH 中,请设置 FFMPEG_PATH 和 FFPROBE_PATH。
样式包
brands/example.json 包含画布尺寸、字体、颜色、钩子模板几何形状和字幕样式。按频道/品牌复制,并传递 --brand brands/<name>.json。使用系统字体或开源许可字体(--font-file);切勿提交商用字体。