Communitygithub.com

zroeschen/视频制作工厂

视频编辑流水线的第二步:自动识别并移除人物出镜片段中的口误——包括口吃、词语重复、错误开头和重录片段。需在“静音剪切”步骤之后使用。

视频制作工厂 是什么?

本技能(Pipeline Agent 2)是自动化视频编辑流水线的第二个环节,专门用于移除人物出镜(talking-head)录音中的口误。它能够识别并建议剪切口吃(如“那个那个”)、立即重复的词语、错误开头(未说完被丢弃的短语)以及重录片段(保留最佳镜头,丢弃不理想的镜头)。该技能基于逐词时间戳转录本(node脚本处理)工作,通过 Jaccard 相似度等算法检测候选片段,但将最终判断权交给用户或上层 agent——因为强调性重复(如“绝不,绝不”)和修辞性双重(如“第一件是,是这个……”)在机械检测上与口吃并无区别。因此,工具默认采用“审核-门槛”模式:它会呈现每个候选片段的上下文和推荐动作,仅在用户或 agent 批准后通过 ffmpeg 实际渲染剪切。输出包括一个重新计时后的转录本、一个编辑决策列表,以及一段已剪除口误的干净视频,可直接传送给流水线的下一步——动态图形/分层字幕 Agent。

兼容平台~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/zroeschen/Video-Production-Factory/tree/HEAD/.agents/skills/cut-mistakes

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

剪切口误与重复(流水线 Agent 2)

自动编辑的第二步,在 cut-silences 之后运行。它移除人类编辑在第二遍审阅时需要剪掉的内容:口吃("the the", "I- I-")、立即重复的词语、错误开头(一个句子中途停止并重新开始)以及重录(重录的台词——保留干净的版本,丢弃出错的版本)。

判断什么算是口误是 主观判断而非固定公式——强调性重复("never, never")和修辞性双重("the first piece is, is this…")在机械检测上和口吃看起来一模一样。因此,本 agent 默认采用 审核-门槛模式:它会呈现候选片段及其完整上下文;由 agent(及用户)做决定;仅渲染经过批准的剪切。

何时使用

  • "剪切口误","移除口吃/重复","清理失误","保留最佳镜头","剪切错误开头"
  • 作为主编辑工作流的第二阶段,在 cut-silences 的输出上运行。

三步流程

1. 查找候选片段(机械检测)

node .agents/skills/cut-mistakes/scripts/find-cut-candidates.mjs \
  <silence-transcript.json> --out-dir video-projects/<slug>/assets

输入通常是 Agent 1 的 <stem>.silence-transcript.json,这样剪切将落在已经静音的时间轴上。输出文件:

  • <stem>.cut-candidates.json —— 结构化候选片段(类型、置信度、建议的 cut 范围、removes/keeps 文本、上下文、推荐动作)
  • <stem>.cut-candidates.md —— 可读的提案

候选片段类型:stutter(立即重复的单词),retake(通过 Jaccard 相似度检测出的重复或近似重复片段),false_start(短暂的未说完就被丢弃的短语,然后重新开始)。

2. 审核(门槛——必需)

在 上下文中 阅读每个候选片段,决定保留还是剪切。机械检测器无法区分有意的强调/修辞与真正的失误,因此不要盲目相信 recommend —— 要阅读 removes + context。常见误报:强调性重复("it's never, never hands-off"),系动词后跟疑问句("the piece is, is this…"),列举。

向用户呈现候选片段,每个项目附带一个推荐;收集用户的批准。将批准的剪切写入一个文件:

{ "cuts": [ { "start": 100.93, "end": 101.06, "reason": "I- 错误开头" }, ... ] }

(start/end 以秒为单位,基于输入转录本/视频时间轴。你可以放宽候选片段的范围——例如对于重录片段,从出错镜头的开始处一直切到重录的干净起始处。)

3. 应用批准的剪切

node .agents/skills/cut-mistakes/scripts/apply-cuts.mjs \
  <silence-transcript.json> --cuts approved-cuts.json \
  --video video-projects/<slug>/assets/edited-silenced.mp4 \
  --output video-projects/<slug>/assets/edited-clean.mp4 --apply

输出编辑决策列表(EDL)、一个重新计时后的 <stem>.mistakes-transcript.json(供动态图形 agent + validate-beat-sync.mjs 使用)、一个决策日志,以及(带 --apply 参数时)实际剪切后的视频(通过 ffmpeg trim+concat,音画同步)。不传 --apply 则进行预演。

审查结果

使用共享的审查工具来肉眼检查剪切并检查边界:

node scripts/build-edl-review.mjs <stem>.mistakes-edl.json \
  --original video-projects/<slug>/assets/edited-silenced.mp4 \
  --edited   video-projects/<slug>/assets/edited-clean.mp4 \
  --output   video-projects/<slug>/assets/mistakes-review.html
npx serve . -p 8080 -n

备注

  • 如果原始素材非常干净,可能几乎没有或完全没有真正的剪切——这是有效结果;不要为了凑数而剪切自然言语。
  • 在两个单词之间的剪切是硬接拼接。对于口吃/错误开头通常很干净;若音频过渡较紧,可以后续添加 20-30ms 的淡入淡出效果。
  • 将 mistakes-transcript.json 和干净视频传递给 Agent 3(动态图形/分层卡片)。

Individual skills in this repo

This repo contains 4 individual skills — each has its own dedicated page.

相关技能