Cortar Errores y Repeticiones (Agente 2 del Pipeline)
Segundo paso de la edición automatizada, se ejecuta después de cortar silencios. Elimina lo que un editor humano cortaría en una segunda pasada: tartamudeos ("el el", "Yo- Yo-"), palabras repetidas inmediatamente, falsos comienzos (una frase abandonada que se reinicia) y retomas (una línea regrabada — conserva la toma limpia, descarta la defectuosa).
Decidir qué cuenta como error es cuestión de juicio, no una fórmula — la repetición enfática ("nunca, nunca") y la duplicación retórica ("la primera pieza es, es esto…") se ven idénticas a un tartamudeo mecánicamente. Por lo tanto, este agente está restringido por revisión por defecto: muestra candidatos con contexto completo; el agente (y el usuario) deciden; solo se renderizan los cortes aprobados.
Cuándo usar
- "cortar los errores", "eliminar tartamudeos/repeticiones", "limpiar las equivocaciones", "conservar la mejor toma", "cortar falsos comienzos"
- Como la segunda etapa del flujo de trabajo de edición maestro, sobre la salida de cortar silencios.
El flujo de tres 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
La entrada normalmente es el <stem>.silence-transcript.json del Agente 1, por lo que los cortes caen en la línea de tiempo ya silenciada. Escribe:
<stem>.cut-candidates.json— candidatos estructurados (tipo, confianza, rango decutpropuesto, textoremoves/keeps, contexto, recomendación)<stem>.cut-candidates.md— propuesta legible
Tipos de candidatos: stutter (repetición inmediata de palabra), retake (segmento duplicado/casi duplicado mediante similitud de Jaccard), false_start (frase corta abandonada que se reinicia).
2. Revisión (la puerta — OBLIGATORIO)
Lee cada candidato en contexto y decide conservar o cortar. El detector mecánico no puede distinguir el énfasis/retórica intencional de un error real, así que no confíes ciegamente en recommend — lee removes + context. Falsos positivos comunes: repetición enfática ("nunca, nunca es manos libres"), cópula seguida de pregunta ("la pieza es, es esto…"), enumeraciones.
Presenta los candidatos al usuario con una recomendación por elemento; recoge las aprobaciones. Escribe los cortes aprobados en un archivo:
{ "cuts": [ { "start": 100.93, "end": 101.06, "reason": "Falso comienzo Yo-" }, ... ] }
(start/end en segundos en la línea de tiempo del video/transcripción de entrada. Puedes ampliar el rango de un candidato — por ejemplo, para una retoma, corta desde el inicio de la toma defectuosa hasta el reinicio limpio.)
3. Aplicar los cortes aprobados
node .claude/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
Escribe el EDL, una transcripción reajustada <stem>.mistakes-transcript.json (alimenta al agente de gráficos en movimiento + validate-beat-sync.mjs), un registro de decisiones y — con --apply — el video cortado (ffmpeg trim+concat, A/V sincronizado). Omite --apply para una ejecución de prueba.
Revisando el resultado
Usa la herramienta de revisión compartida para examinar los cortes y verificar los límites:
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
Notas
- Una entrega muy limpia puede producir pocos o ningún corte real — ese es un resultado válido; no cortes el habla natural para alcanzar una cuota.
- Los cortes entre dos palabras habladas son uniones duras. Generalmente son limpios para tartamudeos/falsos comienzos; para audio más ajustado se puede añadir un fundido de 20-30 ms más tarde.
- Entrega el
mistakes-transcript.json+ el video limpio al Agente 3 (gráficos en movimiento / tarjetas jerárquicas).