cut-mistakes

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

Cut Mistakes & Repeats (Pipeline Agent 2)

剪切错误与重复内容(Pipeline Agent 2)

Second step of the automated edit, run after cut-silences. It removes the things a human editor cuts on a second pass: stutters ("the the", "I- I-"), immediately repeated words, false starts (an abandoned phrase that restarts), and retakes (a line re-recorded — keep the clean take, drop the botched one).
Deciding what counts as a mistake is judgment, not a formula — emphatic repetition ("never, never") and rhetorical doubling ("the first piece is, is this…") look identical to a stutter mechanically. So this agent is review-gated by default: it surfaces candidates with full context; the agent (and the user) decide; only approved cuts are rendered.
自动化剪辑的第二步,在 cut-silences 之后运行。它会移除人工剪辑师在第二轮剪辑中通常会删除的内容:结巴(“the the”“I- I-”)、紧邻的重复词、说错后重说(中途放弃某个短语并重新开始),以及重录内容(同一句台词被重新录制——保留干净版本,删掉录坏的版本)。
判断什么算作错误,需要的是 判断而非套用公式——强调性重复(“never, never”)和修辞性复沓(“the first piece is, is this…”)在机械规则看来与结巴完全一样。因此,此 Agent 默认采用 review-gated:它会呈现候选片段及其完整上下文;由 Agent(和用户)决定;仅渲染获批的剪辑。

When to use

何时使用

  • "cut the mistakes", "remove stutters / repeats", "clean up the flubs", "keep the best take", "cut false starts"
  • As the second stage of the master edit workflow, on cut-silences' output.
  • “剪掉错误”“移除结巴/重复”“清理口误”“保留最佳一条”“剪掉说错后重说的内容”
  • 作为主剪辑工作流的第二阶段,处理 cut-silences 的输出。

The three-part flow

三段式流程

1. Find candidates (mechanical)

1. 查找候选片段(机械规则)

bash
node .agents/skills/cut-mistakes/scripts/find-cut-candidates.mjs \
  <silence-transcript.json> --out-dir video-projects/<slug>/assets
Input is normally Agent 1's
<stem>.silence-transcript.json
, so cuts land on the already-silenced timeline. Writes:
  • <stem>.cut-candidates.json
    — structured candidates (type, confidence, proposed
    cut
    range,
    removes
    /
    keeps
    text, context, recommendation)
  • <stem>.cut-candidates.md
    — readable proposal
Candidate types:
stutter
(immediate word repeat),
retake
(duplicate/near-duplicate segment via Jaccard similarity),
false_start
(short abandoned phrase that restarts).
bash
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 similarity 识别的重复/近似重复片段)、
false_start
(中途放弃并重新开始的简短片段)。

2. Review (the gate — REQUIRED)

2. 审核(必需的门控步骤)

Read each candidate in context and decide keep-or-cut. The mechanical detector cannot tell intentional emphasis/rhetoric from a real flub, so do not trust
recommend
blindly — read
removes
+
context
. Common false positives: emphatic repetition ("it's never, never hands-off"), copula-then-question ("the piece is, is this…"), listing.
Present the candidates to the user with a recommendation per item; collect approvals. Write the approved cuts to a file:
json
{ "cuts": [ { "start": 100.93, "end": 101.06, "reason": "I- false start" }, ... ] }
(
start
/
end
in seconds on the input transcript/video timeline. You can widen a candidate's range — e.g. for a retake, cut from the botched take's start to the clean restart.)
结合上下文逐个阅读候选片段,并决定保留还是剪掉。机械检测器无法区分有意强调/修辞与真正的口误,因此不要盲目信任
recommend
——应阅读
removes
+
context
。常见误报包括:强调性重复(“it's never, never hands-off”)、系动词后接疑问句(“the piece is, is this…”)、列举表达。
向用户呈现候选片段,并为每一项提供建议;收集批准结果。将获批的剪辑写入文件:
json
{ "cuts": [ { "start": 100.93, "end": 101.06, "reason": "I- false start" }, ... ] }
(
start
/
end
以秒为单位,基于输入 transcript/video 的时间线。可以扩大候选片段的范围——例如,对于重录内容,可以从录坏版本的起点剪切到干净重录的起点。)

3. Apply approved cuts

3. 应用获批的剪辑

bash
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
Writes the EDL, a re-timed
<stem>.mistakes-transcript.json
(feeds the motion-graphics agent +
validate-beat-sync.mjs
), a decisions log, and — with
--apply
— the cut video (ffmpeg trim+concat, A/V in sync). Drop
--apply
for a dry run.
bash
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
(供 motion-graphics Agent 和
validate-beat-sync.mjs
使用)、决策日志;使用
--apply
时,还会生成剪辑后的视频(通过 ffmpeg 执行 trim+concat,音视频保持同步)。移除
--apply
即可进行试运行(dry run)。

Reviewing the result

检查结果

Use the shared review tool to eyeball the cuts and spot-check boundaries:
bash
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
使用共享审核工具目视检查剪辑效果并抽查边界:
bash
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

Notes

注意事项

  • A very clean delivery may yield few or zero real cuts — that's a valid outcome; don't cut natural speech to hit a quota.
  • Cuts between two spoken words are hard joins. They're usually clean for stutters/false starts; for tighter audio a 20-30ms fade can be added later.
  • Hand the
    mistakes-transcript.json
    + the clean video to Agent 3 (motion graphics / tiered cards).
  • 如果表达非常干净,可能只会得到很少甚至零个实际剪辑点——这是有效结果;不要为了达到数量指标而剪掉自然表达。
  • 在词语之间直接剪切会形成较生硬的衔接。对于结巴或说错后重说,通常不会有问题;若要让音频更紧凑,之后可以添加 20-30ms 的淡化(fade)。
  • 将
    mistakes-transcript.json
    和剪辑后的视频交给 Agent 3(motion graphics / tiered cards)。