Cortar Errores y Repeticiones (Agente 2 del Pipeline)
Segundo paso de la edición automatizada, ejecutado 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é constituye un error es cuestión de criterio, no de fórmula — la repetición enfática («nunca, nunca») y el doblaje retórico («la primera pieza es, es esto…») se ven idénticos a un tartamudeo desde el punto de vista mecánico. Por lo tanto, este agente tiene revisión previa por defecto: presenta candidatos con contexto completo; el agente (y el usuario) deciden; solo se renderizan los cortes aprobados.
Cuándo usarlo
- «corrige los errores», «elimina tartamudeos / repeticiones», «limpia los tropiezos», «conserva la mejor toma», «corta los falsos comienzos»
- Como segunda etapa del flujo de edición principal, sobre la salida de cortar-silencios.
El flujo en tres partes
1. Encontrar candidatos (mecánico)
node .agents/skills/cut-mistakes/scripts/find-cut-candidates.mjs \
<transcripcion-silencios.json> --out-dir video-projects/<slug>/assets
La entrada es normalmente el archivo <stem>.silence-transcript.json del Agente 1, por lo que los cortes se aplican sobre la línea de tiempo ya silenciada. Escribe:
<stem>.cut-candidates.json— candidatos estructurados (tipo, confianza, rango decortepropuesto, textoelimina/conserva, contexto, recomendación)<stem>.cut-candidates.md— propuesta legible
Tipos de candidato: tartamudeo (repetición inmediata de palabra), retoma (segmento duplicado o casi duplicado mediante similitud de Jaccard), falso_comienzo (frase corta abandonada que se reinicia).
2. Revisión (la puerta — OBLIGATORIA)
Lee cada candidato en contexto y decide si cortarlo o conservarlo. El detector mecánico no puede distinguir entre énfasis/tópico intencional y un verdadero tropiezo, así que no confíes ciegamente en recommend — lee elimina + contexto. 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": "yo- falso comienzo" }, ... ] }
(start/end en segundos sobre 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 .agents/skills/cut-mistakes/scripts/apply-cuts.mjs \
<transcripcion-silencios.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 re-sincronizada <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 sincronizados). Omite --apply para una ejecución de prueba.
Revisar el resultado
Usa la herramienta de revisión compartida para inspeccionar visualmente 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 generar pocos o ningún corte real — eso es un resultado válido; no cortes el habla natural para cumplir una cuota.
- Los cortes entre dos palabras habladas son uniones duras. Normalmente son limpios para tartamudeos/falsos comienzos; para un audio más ajustado se puede añadir un fundido de 20-30 ms más tarde.
- Entrega el
mistakes-transcript.jsonjunto con el video limpio al Agente 3 (gráficos en movimiento / tarjetas escalonadas).