/fabrica-videos-corte — corte automático
Skill de la Fábrica de Vídeos Agéntica. Limpia una grabación hablada: elimina los silencios, errores, tartamudeos y tomas repetidas, y deja solo la mejor versión de cada frase. El original nunca se modifica.
Eres el editor de vídeo. Comandos en el terminal, en la raíz del proyecto. TRABAJO = la carpeta trabajo.
Cuándo usar
- El cliente envía una grabación y dice "limpia", "corta las pausas", "quita los errores".
- Dentro de la skill
fabrica-videos-rapidoy la skillfabrica-videos-reels, antes de sincronizar las animaciones.
Cómo funciona
Las pausas se eliminan solas: el script detecta los silencios mediante el audio. Lo que es error o toma repetida es decisión de quien lee el texto: tú. El cliente lo verifica a través del informe y escuchando el resultado.
Paso a paso
- Grabación en el formato del estudio. Si llegó del celular: copia el original a
TRABAJO\originais\y ejecutanpm run converter -- "<original>" <slug>(generaTRABAJO\public\gravacao-<slug>.mp4). También vale para grabación que no es 4K HDR: el conversor gira el vídeo vertical, recorta a 1080×1920 y lo convierte a 30 fps. Extrae un fotograma del convertido y del original (ffmpeg -ss 20 -i <archivo> -frames:v 1 ...) y compáralos: rotación y color deben coincidir. - Transcribir:
npm run legendar -- "trabajo\public\gravacao-<slug>.mp4"(en segundo plano; ~1 min para 2 min de grabación). - Analizar:
npm run cortar -- analizar "trabajo\public\gravacao-<slug>.mp4"→cortes\gravacao-<slug>.cortes.jsonycortes\gravacao-<slug>.falas.md(la grabación como tabla de frases con tiempo, pausas y el aviso "parece repetir en la frase N"). - Decidir qué se elimina. Lee la tabla de frases completa y completa la lista
removerdel.cortes.json:- toma repetida: se queda la última toma completa (la persona reinicia cuando se equivoca); las anteriores se eliminan:
{ "falas": [2, 3], "motivo": "errou e recomeçou" }; - la misma frase dicha completa dos veces, con una pausa larga en medio (en la grabación real fue el CTA final): repitió porque no le gustó la primera. Se queda la última, y en el mensaje dile cuál se eliminó, para que pueda intercambiarlas;
- calentamiento antes de empezar ("vamos allá", "vale", conversación) y todo después del CTA: se elimina;
- tartamudeo o palabra suelta en medio de una frase:
npm run cortar -- palavras cortes\gravacao-<slug>.cortes.json <nº>muestra los tiempos palabra por palabra; usa{ "de": 12.30, "ate": 13.10, "motivo": "gaguejou" }; - comentario fuera del guion ("no, espera", "otra vez", "corta"): se elimina;
- pausa que es intencional (suspense antes de un número): ponla en
mantener, ej.:{ "de": 20.1, "ate": 21.4 }; - si existe guion (
roteiros\<slug>.md), compara: la toma que se queda es la que dice el texto del guion, o la más completa si cambió la frase. Ante la duda entre dos tomas buenas que dicen cosas diferentes, no cortes: pregúntale.
- toma repetida: se queda la última toma completa (la persona reinicia cuando se equivoca); las anteriores se eliminan:
- Aplicar:
npm run cortar -- aplicar cortes\gravacao-<slug>.cortes.json→TRABAJO\public\gravacao-<slug>-limpa.mp4ycortes\gravacao-<slug>.relatorio.md(lo eliminado, cuánto tiempo, por qué y el texto que estaba allí). - Verificar sin escuchar: transcribe el vídeo limpio (
npm run legendar -- "<...-limpa.mp4>") y leenpm run falas -- legendas\gravacao-<slug>-limpa.json. Tres cosas:- el texto debe ser lo que quiso decir, sin palabras cortadas por la mitad y sin restos de errores (en la primera pasada real sobró un "Vale." del calentamiento: así se descubrió el defecto);
- la columna "pausa después" no debe tener nada por encima de ~0,8 s: una pausa grande en el vídeo limpio es un trozo sobrante entre dos cortes;
- el inicio y el final: extrae una hoja de fotogramas del limpio (
ffmpeg -i <limpio> -vf "fps=1/2.5,scale=180:-1,tile=7x2" -frames:v 1 <hoja.jpg>) y comprueba que aparece en el cuadro y hablando desde el primer hasta el último fotograma. Si sobra algo, ajustaremovery vuelve a aplicar; si el defecto es del script, corrigecortar.mjsy anótalo aquí.
- Mostrarle el resultado: envía el vídeo limpio con el resumen del informe: duración antes y después, cuántos cortes, las frases que eliminaste por decisión tuya (no las pausas) y el segundo de cada empalme en el vídeo limpio (suma la duración de los fragmentos que se quedan, en
resultado.ficadel.cortes.json). La verificación auditiva es suya.
Ajustes (en el config del .cortes.json, luego vuelve a aplicar)
| Campo | Valor por defecto | Qué hace |
|---|---|---|
pausaMin | 0.5 s | El silencio a partir de ese tamaño se corta. Más alto = más natural, menos cortes. |
folga | 0.12 s | Respiro que queda antes y después de cada corte. Si las frases quedan demasiado pegadas, sube a 0.18. |
folgaFinal | 0.35 s | Silencio que queda al final del vídeo. |
ruidoDb | automático | Límite de lo que se considera silencio. Sala ruidosa: ejecuta analizar de nuevo con un valor más alto al final del comando (ej.: -32). |
Cómo el script encaja los cortes (revisado con la primera grabación real)
- Pausas: mediante el silencio medido en el audio. Trozos de una misma pausa separados por un chasquido de hasta 0.1 s se convierten en una pausa única.
- Inicio y final: se elimina todo antes de la primera palabra y después de la última (ajustes, salida de plano), dejando 0.12 s al inicio y
folgaFinalal final. - Frase marcada en
remover: el corte va desde la primera pausa después de la última palabra que se queda hasta la última pausa antes de la siguiente palabra que se queda. Quien manda es el silencio del audio, no el tiempo de Whisper.
Límites conocidos
- Tiempos de Whisper: en la grabación real, el inicio de una frase después de una pausa larga llegó hasta 0.4 s retrasado y el final de una palabra hasta 0.25 s de más o de menos. El corte de una frase completa roza el silencio y no sufre esto. En cambio, el corte en medio de una frase (tartamudeo, sin silencio a ambos lados) solo tiene el tiempo de Whisper: verifica esos puntos con más cuidado y pídele que lo escuche. Este caso aún no ha aparecido en una grabación real.
- Pausa menor que
pausaMinse queda (es el respiro natural entre frases). - Corte seco en la imagen: en pantalla dividida esto es normal. Si el salto molesta, avísale en lugar de inventar una transición.
- Más de 150 fragmentos en una pasada, el script lo rechaza: aumenta
pausaMin.