Cortar Erros e Repetições (Agente 2 do Pipeline)
Segunda etapa da edição automatizada, executada após cortar silêncios. Remove o que um editor humano corta numa segunda passada: gaguejos ("o o", "eu- eu-"), palavras imediatamente repetidas, falsos começos (uma frase abandonada que recomeça) e retakes (uma linha regravada — mantenha a take limpa, descarte a errada).
Decidir o que conta como erro é julgamento, não uma fórmula — repetição enfática ("nunca, nunca") e duplicação retórica ("a primeira peça é, é isto…") são mecanicamente idênticas a um gaguejo. Portanto, este agente é revisado por padrão: ele apresenta candidatos com contexto completo; o agente (e o usuário) decidem; apenas os cortes aprovados são renderizados.
Quando usar
- "cortar os erros", "remover gaguejos / repetições", "limpar as escorregadas", "manter a melhor take", "cortar falsos começos"
- Como a segunda etapa do fluxo de edição principal, sobre a saída de cortar silêncios.
O fluxo em três partes
1. Encontrar candidatos (mecânico)
node .claude/skills/cut-mistakes/scripts/find-cut-candidates.mjs \
<silence-transcript.json> --out-dir video-projects/<slug>/assets
A entrada é normalmente o <stem>.silence-transcript.json do Agente 1, para que os cortes caiam na linha do tempo já silenciada. Escreve:
<stem>.cut-candidates.json— candidatos estruturados (tipo, confiança, intervalo decorteproposto, textoremove/mantém, contexto, recomendação)<stem>.cut-candidates.md— proposta legível
Tipos de candidatos: gaguejo (repetição imediata de palavra), retake (segmento duplicado/quase duplicado via similaridade Jaccard), falso_comeco (frase curta abandonada que recomeça).
2. Revisão (o portão — OBRIGATÓRIA)
Leia cada candidato em contexto e decida manter ou cortar. O detector mecânico não consegue distinguir ênfase intencional/retórica de um erro real, portanto não confie cegamente em recomendar — leia remove + context. Falsos positivos comuns: repetição enfática ("nunca, nunca é mãos-livres"), cópula seguida de pergunta ("a peça é, é isto…"), listagem.
Apresente os candidatos ao usuário com uma recomendação por item; colete as aprovações. Escreva os cortes aprovados num ficheiro:
{ "cortes": [ { "inicio": 100.93, "fim": 101.06, "motivo": "falso começo eu-" }, ... ] }
(inicio/fim em segundos na linha do tempo do vídeo/transcrição de entrada. Você pode alargar o intervalo de um candidato — por exemplo, para um retake, corte desde o início da take errada até ao reinício limpo.)
3. Aplicar cortes aprovados
node .claude/skills/cut-mistakes/scripts/apply-cuts.mjs \
<silence-transcript.json> --cortes approved-cuts.json \
--video video-projects/<slug>/assets/edited-silenced.mp4 \
--saida video-projects/<slug>/assets/edited-clean.mp4 --apply
Escreve a EDL, uma transcrição corrigida <stem>.mistakes-transcript.json (alimenta o agente de gráficos animados + validate-beat-sync.mjs), um registo de decisões e — com --apply — o vídeo cortado (ffmpeg trim+concat, A/V sincronizado). Remova --apply para uma simulação.
Revisando o resultado
Use a ferramenta de revisão partilhada para observar os cortes e verificar limites:
node scripts/build-edl-review.mjs <stem>.mistakes-edl.json \
--original video-projects/<slug>/assets/edited-silenced.mp4 \
--editado video-projects/<slug>/assets/edited-clean.mp4 \
--saida video-projects/<slug>/assets/mistakes-review.html
npx serve . -p 8080 -n
Notas
- Uma gravação muito limpa pode gerar poucos ou nenhum corte real — isso é um resultado válido; não corte fala natural para atingir uma cota.
- Cortes entre duas palavras faladas são junções abruptas. Geralmente são limpos para gaguejos/falsos começos; para áudio mais apertado, um fade de 20-30 ms pode ser adicionado posteriormente.
- Entregue o
mistakes-transcript.json+ o vídeo limpo para o Agente 3 (gráficos animados / cartões hierárquicos).