Procesamiento de A-roll
El objetivo: una grabación larga, o varias grabaciones del mismo guion, entran y sale un rough cut ajustado, construido a partir de la mejor toma de cada línea. El habla fluye directamente en habla, cada palabra está completa, y el corte suena como una sola toma limpia, al primer intento.
Este skill está diseñado para Claude Code y Runneth. Necesita:
- ffmpeg para medir el audio, capturar fotogramas fijos y cortar el video.
- Marcas de tiempo para todo lo dicho: una herramienta de voz a texto que dé el tiempo de cada palabra (Whisper, faster-whisper, whisper.cpp).
- Una forma de evaluar la imagen: consulte "Cómo evaluar una toma" más abajo.
- El script de verificación en
scripts/cut_check.py(python3 con numpy y ffmpeg).
Hable con el editor en lenguaje cotidiano, una idea a la vez.
Antes de empezar: las herramientas
En Runneth, todo ya está instalado: omita esta sección.
En Claude Code, este skill necesita las herramientas de video gratuitas que instala el skill video-editing-setup. Verifique silenciosamente que ~/.video-editing-tools/bin/ffmpeg -version funcione. Si funciona, use las herramientas en ~/.video-editing-tools/bin (ffmpeg, ffprobe, python) donde este skill diga ffmpeg, ffprobe o python3, y continúe. Si no funciona, primero siga el skill video-editing-setup y luego vuelva aquí.
Paso 0: Dos verificaciones rápidas antes de cualquier trabajo
-
El archivo es el que el editor quería. Si dijo que es una regrabación o un clip nuevo y tiene la misma duración o configuración que uno anterior, pregunte en una línea antes de empezar.
-
Pregunte exactamente esto, como una sola pregunta con dos opciones:
"¿Quieres que te muestre primero las tomas que conservaría, o que siga adelante y haga la edición?"
- Muéstrame primero → siga cada paso a continuación y deténgase en el Paso 4 para la aprobación del editor.
- Solo haz la edición → ejecute todos los pasos de principio a fin sin detenerse. Mencione cualquier cosa de la que no estuviera seguro una vez, al final.
Omita la pregunta si el editor ya dijo cuál opción prefiere ("solo córtalo", "muéstrame las tomas primero"). Si no hay nadie para responder, trátelo como "solo haz la edición".
Paso 1: Obtener las palabras
- Verifique la duración, orientación y velocidad de fotogramas de cada grabación (
ffprobe). Cuando haya varias grabaciones, asígneles una etiqueta sencilla (Video A, Video B, Video C) y ejecute cada paso a continuación en todas ellas. - Extraiga el audio de cada grabación:
ffmpeg -i IN.mov -vn -ac 1 -ar 16000 audio.wav. - Marque cada tramo de habla:
ffmpeg -i audio.wav -af silencedetect=n=-35dB:d=0.3 -f null -. Los tramos entre silencios son las islas de habla. Cada palabra vive dentro de una, y son más exactas que cualquier tiempo de transcripción. - Transcriba con marcas de tiempo por palabra. Con faster-whisper: modelo
base,word_timestamps=True,condition_on_previous_text=False, y uninitial_promptque enumere nombres y palabras de marca probables en el video. Los modelos más grandes solo en inglés limpian silenciosamente los reinicios, lo que oculta los falsos comienzos que este skill necesita ver. - Las transcripciones se desvían o saltan en tramos largos. Cada isla de habla necesita palabras. Cuando una no tenga ninguna, o falten palabras entre silencios, transcriba solo ese tramo nuevamente: inicie la ventana aproximadamente 1 segundo antes de la isla, termine aproximadamente 1 segundo después, y desactive cualquier filtro de voz (
vad_filter=False). - Las ventanas cortas retranscritas pueden inventar palabras al final que no se dijeron ("Muchas gracias", "Gracias por ver"). Conserve solo las palabras que caen dentro de la isla y que se ajustan a la línea; las palabras apiladas en la misma marca de tiempo son inventadas.
- Corrija claros errores de transcripción de nombres y palabras de marca. Si hay un guion, úselo como mapa de líneas; si no, la transcripción es el mapa.
Paso 2: Agrupar las tomas
- Divida el metraje en líneas (una oración o idea cada una) y agrupe cada intento de la misma línea, en todas las grabaciones. Varias grabaciones de un solo guion son un grupo de tomas: la línea 1 obtiene cada toma de la línea 1 del Video A, B y C una al lado de la otra, y cada toma se etiqueta con su grabación ("Video B, toma 3"). Los intentos generalmente comienzan con las mismas primeras palabras.
- Una toma va desde el inicio de un intento hasta el final de su última palabra, antes de que comience el siguiente intento.
- Marque cada toma como completa (dice toda la línea) o falso inicio (se detiene a medio camino).
- Cada frase dentro de una línea cuenta como una pieza propia. Una línea puede construirse a partir de las mejores piezas de diferentes tomas (la primera oración de la toma 4, la segunda de la toma 2), incluyendo piezas limpias de falsos inicios.
Paso 3: Evaluar cada toma
Cada toma de cada línea se evalúa, incluyendo las líneas dichas solo una vez. La mejor versión de cada frase gana, independientemente de la toma o el orden en que apareció. Construya cada línea a partir de esas mejores piezas cuando la unión entre ellas sea limpia (consulte la regla 7 a continuación). Use "Qué hace que una toma sea la ganadora" a continuación, y escriba una fila por toma en el archivo de tomas (plantilla: templates/takes.md): línea, toma, tiempo, lo que vio, conservar o no, y una razón breve.
Cómo evaluar una toma
Lo que se evalúa sigue siendo el mismo en ambos casos. Cómo verlo depende de la herramienta:
- En Runneth (o cualquier configuración que pueda enviar video a un modelo que lo observe, como Gemini), haga que ese modelo observe cada grabación y evalúe cada línea repetida según "Qué hace que una toma sea la ganadora", más tono, énfasis, sincronización del chiste y dudas. Mantenga sus propias selecciones fuera de lo que le envía, para que las dos lecturas sean independientes. Cuando el modelo elija una toma diferente a la suya, su selección prevalece. Tome siempre los tiempos de la transcripción y las islas de habla, nunca del modelo de video: sus marcas de tiempo se desvían y a veces se salta líneas.
- En Claude, que no puede ver video, evalúe a partir de tres cosas que puede verificar por sí mismo:
- Las palabras (transcripción): la línea completa, sin tropiezos, sin muletillas, sin reinicios en medio.
- El sonido (
astatsen cada toma): volumen constante, sin clipping, sin picos ni ráfagas de ruido. - La imagen (fotogramas fijos): una hoja por línea repetida con cada toma apilada, 2 fotogramas por segundo:
ffmpeg -nostdin -ss INICIO -t DURACIÓN -i IN.mov -vf fps=2,scale=160:-2,tile=10xN toma.jpg, una por toma, apiladas en una sola imagen. Mire las hojas para todo lo que aparece en "Qué hace que una toma sea la ganadora".
- Grabaciones de pantalla con voz: evalúe la redacción, la voz, y si los gestos de señalar o hacer clic coinciden con lo que se dice.
Paso 4: Mostrar las selecciones (solo si el editor pidió verlas primero)
- Muestre la lista de cortes: una línea numerada por pieza conservada,
inicio-finy las palabras exactas conservadas. Marque las decisiones reñidas con "(decisión reñida: la toma 2 es igual de limpia)" en esa línea, para que el editor sepa dónde mirar; las selecciones claras no llevan nota. Agregue una línea breve al final solo si algo bloquea la edición (una palabra que no puede entender). - El editor aprueba, cambia una toma ("usa la toma 2 para la línea 4") o elimina una línea. Sus cambios prevalecen, incluso si un modelo de video luego está en desacuerdo. Cuando cambie una toma, pregunte por qué en una pregunta breve si no lo dijo. Su razón es cómo aprende el skill (Paso 7).
Paso 5: Construir el corte
El corte es realmente ajustado: el habla fluye directamente en habla en todas partes, incluso dentro de las tomas conservadas. Las pausas de pensamiento y los respiros entre frases se eliminan. El único momento sostenido es de aproximadamente 0,5 s en el último fotograma.
- Los bordes provienen de las islas de habla, no de la transcripción. Cada pieza conservada comienza en el primer sonido de su isla y termina en el último. Los respiros, chasquidos de labios y ruidos de manipulación antes de la primera palabra pueden superar los -30 dB y coserse dentro de la isla, por lo que una pieza comienza en el inicio de su primera palabra (donde el nivel sube al habla, generalmente -25 dB o más fuerte), no en el primer parpadeo. Cualquier tramo de respiro o ruido al inicio o final de una pieza se elimina. Los finales funcionan al revés: una línea a menudo se desvanece silenciosamente ("dormido por la noche" dicho suavemente), por lo que una pieza termina después de su última palabra incluso cuando esa palabra es más silenciosa que el resto. Verifique que la última palabra de cada línea esté en la transcripción del corte.
- Las pausas dentro de una toma conservada se encuentran con un pase más sensible,
silencedetect=n=-30dB:d=0.2, y cada una de 0,25 s o más se elimina. Los reinicios y las palabras repetidas dentro de una toma también se eliminan, conservando solo la redacción final limpia. - Acolchone cada pieza aproximadamente 0,05 s en cada lado. Más deja una pausa; menos corta una palabra. Luego ajuste cada borde a un fotograma completo (el inicio redondea hacia abajo al fotograma anterior, el final redondea hacia arriba al fotograma siguiente). Los bordes entre fotogramas hacen que la unión duplique o elimine fotogramas, lo que mueve cada corte posterior uno o dos fotogramas y permite que pasen fotogramas extraviados cuando se coloca b-roll en los cortes.
- Las piezas de menos de aproximadamente 0,3 s son casi siempre sobras (una sílaba suelta). Descártelas a menos que contengan una palabra completa.
- Agregue un fundido de audio de 20 ms en cada unión y una todo en una recodificación a partir de una copia de trabajo. El archivo original permanece intacto.
- Guarde la lista de piezas (
[[inicio, fin], ...]en segundos) comoclips.json; el script de verificación lo lee.
Paso 6: Verificar el corte antes de que el editor lo vea
Cada versión que ve el editor ha pasado todas las verificaciones en ese archivo exacto. Una verificación que no se ejecutó cuenta como fallo.
- Ejecute el script de verificación:
python3 scripts/cut_check.py --voice audio.wav --clips clips.json --out CORTE.mp4. Verifica tres cosas e imprimeRESULTADO PASAoFALLA:- Finales: los últimos 50 ms de cada pieza están por debajo del nivel de habla (-30 dB). Si no es así, una palabra se cortó: mueva ese final más tarde hasta donde el nivel baje.
- Inicios: los 30 ms antes del inicio de cada pieza están en silencio, por lo que ninguna pieza comienza en medio de una palabra.
- Huecos: no hay pausas de 0,25 s o más en ningún lugar del corte, excepto la espera final.
Con varias grabaciones, ejecútelo una vez por grabación: el audio de esa grabación como
--voicey solo sus piezas enclips.json, cada vez con el mismo corte como--out. Si el sonido proviene de un archivo diferente al de la imagen (un micrófono separado), también corte el audio de la cámara con los mismos recortes y páselo como--camlock, para que el script verifique también la sincronización (cada 3 segundos dentro de 40 ms).
- Cada palabra, completa, una vez: transcriba el corte con marcas de tiempo por palabra y compárelo con la lista de cortes palabra por palabra. Una media palabra en una unión significa que ese borde está demasiado ajustado. Una palabra o frase repetida en una unión significa un reinicio sobrante. Sin aire muerto entre palabras: en esa transcripción, ningún espacio entre el final de una palabra y el inicio de la siguiente es más largo de aproximadamente 0,3 s (excepto la espera final). La verificación de huecos en el script solo encuentra pausas silenciosas; una pausa llena de respiración es lo suficientemente fuerte como para pasarla, por lo que esta verificación de huecos de palabras es la que lo detecta. Recorte la pieza a su primera palabra y ejecute todas las verificaciones nuevamente.
- Cada unión, una por una: para cada corte, nombre la última palabra antes de él y la primera palabra después de él, y confirme que ambas se dicen por completo. Transcriba una ventana de 2 segundos alrededor de cada unión para verificar (un "¿algún problema?" general permite que una palabra cortada se cuele). En Runneth, también haga que el modelo de video observe el corte como un espectador exigente en su primera visualización y enumere problemas con tiempos: palabras cortadas o sueltas, fallos, fotogramas congelados, saltos bruscos.
- Duración: la duración del corte coincide con el total de la lista de cortes.
Arregle todo lo que falle, corte de nuevo y vuelva a ejecutar todas las verificaciones.
Paso 7: Aprender del editor
Cada vez que el editor cambie una toma, modifique un borde o diga por qué una toma es mejor, convierta esa razón en una regla general y fusiónela en "Qué hace que una toma sea la ganadora" a continuación (o en el Paso 5 cuando se trate de qué tan ajustado está el corte). Mantenga la lista breve: reescriba y combine reglas en lugar de acumular nuevas. Solo las razones del editor cambian las reglas.
Qué hace que una toma sea la ganadora
Estas reglas provienen de las selecciones reales de una editora en sus propios videos de talking-head. Aplíquelas en orden, luego reemplácelas con las reglas de su propio editor a medida que lleguen sus razones.
- La línea completa, dicha limpiamente. Una toma con un tropiezo o una palabra faltante pierde frente a una limpia, por muy buena que se vea.
- Nada cubriendo la cara. Una mano o un micrófono frente a la boca descarta una toma.
- Energía. Los gestos, el movimiento y una entrega animada superan a una lectura estática y plana.
- La cara más feliz. Una sonrisa real y ojos brillantes ganan entre dos tomas limpias.
- La cara se ajusta a la línea. Ojos abiertos en un remate, una sonrisa real en una línea feliz.
- Ritmo natural y uniforme. No apresurado, sin pausas largas.
- Mejores piezas, unidas limpiamente. La mejor toma gana independientemente de en qué grabación esté, y una línea hecha de partes de dos tomas supera a una toma completa cuando cada parte es la mejor versión. La unión es limpia cuando la cabeza y las manos del hablante están aproximadamente en el mismo lugar en ambos lados (verifique el fotograma anterior y posterior), o cuando la unión se cubre más tarde con b-roll. Un cambio entre grabaciones también necesita la misma apariencia en ambos lados (cabello, luz, encuadre, producto en mano); cuando la apariencia cambia, el cambio cae entre líneas y se cubre con b-roll o un cambio de zoom.
- Más corto cuando impacta más fuerte. Corte una línea hasta su parte más fuerte cuando el resto repite lo que ya se ha dicho o ralentiza el video ("hasta que me quedé sin" en lugar de "No me di cuenta de cuánto estaba ayudando hasta que me quedé sin").
- Las decisiones reñidas siguen siendo reñidas. Cuando dos tomas son igualmente limpias y los fotogramas no muestran una diferencia real, elija una y márquela como decisión reñida. Los fotogramas fijos no pueden mostrar tono, así que no finja que una es claramente mejor.
Reglas para cada corte
- Cada palabra en el corte proviene del audio. Las palabras que no pueda distinguir se marcan como poco claras, nunca se adivinan.
- Los tiempos provienen de la línea de tiempo de la grabación original, y cada pieza en la lista de cortes nombra su grabación.
- Los tiempos de IA son aproximados, no exactos. Cada borde se establece a partir de las islas de habla y se verifica en el audio.