Communitygithub.com

Montaje de video: del metraje bruto al video listo para publicar

Monta un video con cámara frontal a partir de metraje bruto: elimina silencios, dudas, «ehs», tomas fallidas, repeticiones e instrucciones dichas en voz alta durante la grabación; luego añade B-rolls, animaciones personalizadas, ilustraciones, efectos de sonido y un reproductor de correcciones al estilo Frame.io, exportando a Final Cut Pro.

¿Qué es Montaje de video: del metraje bruto al video listo para publicar?

Este skill automatiza el montaje de videos con cámara frontal (talking head) a partir de metraje bruto. Se encarga del derush (eliminación de silencios, dudas «eh», tomas fallidas, repeticiones e instrucciones en voz alta), la inserción de B-rolls (primero los de la biblioteca personal del usuario, luego de Pexels y Pixabay sin clave), animaciones de diseñadores según la marca personal del usuario, ilustraciones propias, efectos de sonido sutiles bajo la voz, un reproductor de correcciones al estilo Frame.io y exportación a Final Cut Pro. El skill utiliza el motor de corte y renderizado de `video-use` (un skill público que debe instalarse aparte) y las animaciones se renderizan mediante HyperFrames, evitando duplicar funcionalidades. Se ejecuta completamente en local (sin enviar videos a la nube) y requiere macOS 14+, Apple Silicon y varias herramientas como ffmpeg, uv, CrisperWhisper para detectar «ehs» y Playwright para buscar B-rolls gratuitos. El skill distingue entre tipos de video (YouTube largo, short, formación, entrevista) y se activa automáticamente cuando el usuario proporciona un archivo de grabación o una carpeta de tomas.

Compatible con✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/fredericpuxeddu-lgtm/montage-video/tree/main

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

¿Qué hace Montaje de video: del metraje bruto al video listo para publicar?

La persona graba, entrega sus archivos y recupera un video compacto y bien editado.

Lo que este skill no hace por sí mismo: el motor de corte y renderizado es el de video-use (skill público que debe instalarse aparte), las animaciones las renderiza HyperFrames. Rehacer aquí lo que una de estas herramientas ya hace supondría mantener dos versiones.

Instalación (una vez por máquina)

Este skill funciona en un Mac con chip Apple (M1 o superior), macOS 14 o posterior. Todo permanece en la máquina: ningún video se envía a internet. Se verifica en orden y se instala lo que falte:

  1. El skill en sí: esta carpeta montaje-video colocada en ~/.claude/skills/.
  2. ffmpeg y ffprobe: brew install ffmpeg (Homebrew: https://brew.sh).
  3. uv, que gestiona entornos Python de forma aislada: brew install uv.
  4. Node.js 18 o superior (con npx): brew install node. HyperFrames, que renderiza las ilustraciones, se descarga solo en el primer renderizado (npx [email protected]), junto con su navegador de renderizado.
  5. El skill video-use (motor de corte y renderizado), en esta versión concreta con la que se ha probado:
    git clone https://github.com/browser-use/video-use ~/.claude/skills/video-use
    git -C ~/.claude/skills/video-use checkout 87f00c6
    
    Si está en una ubicación distinta de ~/.claude/skills/video-use, indicarla mediante VIDEO_USE_DIR. Este skill solo usa su helpers/render.py, que solo necesita ffmpeg: no requiere clave ElevenLabs.
  6. CrisperWhisper, el transcriptor que detecta los «ehs»: python3 scripts/derush.py instalar (2,2 GB, fuera del skill, se niega si hay menos de 5 GB libres; ver el paso 0 del derush).
  7. El modelo de visión que clasifica la biblioteca de B-rolls: no hay que hacer nada, se descarga en el primer brolls.py indexar (mlx-vlm, mediante uv).
  8. Final Cut Pro, solo para el botón «Abrir en Final Cut Pro» del reproductor.
  9. Playwright y su navegador WebKit, que buscan B-rolls gratuitos en Pexels y Pixabay, sin clave ni cuenta: npm install -g playwright y luego npx playwright install webkit. Sin ellos, el agente buscará con su propio navegador (ver «B-rolls»).

Se verifica la instalación con un video corto real (basta un minuto): derush.py analizar, luego montar, luego verificar. La instalación se da por completada solo cuando estos tres comandos han funcionado.

Dónde van los archivos

Todo lo que se usa para el montaje de un video va al Escritorio, en una carpeta con su nombre: ~/Desktop/Archivos de montaje <nombre del video> (para eliminar al final); en este nombre, un apóstrofo se escribe ’ (tipográfico), nunca ' : el motor de corte no lee una carpeta que contenga uno recto, el skill se detiene y lo indica (transcripciones, listas de cortes, planos, versiones, proyecto del reproductor de correcciones, proyecto Final Cut). Se crea en el primer paso, no se pregunta dónde colocarlo. Los metrajes originales nunca se mueven ni modifican. La exportación final también va al Escritorio, al lado, con un nombre legible (« montado.mp4»).

Nada se elimina automáticamente: es la persona quien borra la carpeta de trabajo cuando el video le satisface. Mientras esté ahí, se puede retomar una corrección o reabrir el proyecto Final Cut, que apunta a sus archivos. Al final del montaje, se le indica dónde están ambos: la exportación final, y la carpeta de trabajo que podrá enviar a la Papelera cuando ya no tenga correcciones que hacer. Una carpeta del Escritorio sincronizada por iCloud puede rechazar mv: copiarla (cp -Rc), y luego enviar la original a la Papelera.

Estado del skill (decir la verdad a quien lo invoca)

ComponenteEstado al 11/11/2026
1. Derush: silencios, dudas, repeticiones, instrucciones dichasEn servicio, dudas detectadas por CrisperWhisper 2.0 rápido desde el 11/11/2026, probado en cuatro metrajes reales
2. B-rolls de la biblioteca: clasificación local, selección, incrustación, controlEn servicio, probado en una biblioteca de prueba de 12 clips
3. B-rolls gratuitos de Pexels y Pixabay, sin clave ni cuentaEn servicio desde el 11/11/2026: búsqueda mediante Playwright o el navegador del agente (computer use), probado en un montaje real (tres clips insertados)
4. Animaciones de marca: 38 de diseñadores (la forma predeterminada desde el 11/11/2026) y 24 propias, su catálogoEn servicio en 16:9, probado en un montaje real (tres animaciones de diseñadores); el formato vertical no se ha probado
5. Reproductor de correcciones (comentarios al fotograma exacto, un punto por comentario en la línea de tiempo, comentario vinculado a una animación, rangos, dibujo, versiones, comparación)En servicio, probado de principio a fin en un video real (3 correcciones, una V3); estudio en referencias/reproductor-estilo-frame-io.md
6. Efectos de sonido: soplo al entrar una animación, clic por casilla, swoosh por planoEn servicio desde el 11/11/2026, colocados automáticamente al incrustar, probado en un montaje real (ocho efectos)
6 bis. Música según la emociónPor construir (no hay biblioteca de música)
7. Clips verticales, subtítulos, publicación en líneaNo incluido en este skill
8. Memoria de las correccionesManual: una regla con fecha al final de este archivo tras cada revisión
9. Exportación a Final Cut Pro (botón del reproductor, pistas separadas)En servicio: proyecto generado y conforme al formato de Final Cut; efectos en su propia pista; sin corrección de color ni música. Premiere y DaVinci: por construir

Una solicitud que afecte a un componente «por construir» se comunica tal cual en la entrega: se entrega lo que funciona, se nombra lo que falta. No se anuncia «video montado» para un video solo derushado.

Ajustes de la máquina (en el primer uso)

No se escribe nada propio de una persona en este skill: sirve a varias. La carpeta de B-rolls, la caché y la marca de las ilustraciones residen en un archivo de configuración de la máquina, ~/.config/montaje-video/reglajes.json, fuera del skill.

python3 scripts/brolls.py ajuste            # muestra dónde estamos

En el primer uso de B-rolls, si «biblioteca» vale «ninguna», se pregunta una vez a la persona: «¿Tienes una carpeta de B-rolls propia? Dame su ubicación.» Después brolls.py ajuste --biblioteca <carpeta>. Si no tiene, se continúa solo con los bancos gratuitos, sin insistir. La misma lógica para la marca: sin ajuste, las ilustraciones salen en el estilo por defecto, y se le muestra el catálogo para que elija el suyo.

El derush, paso a paso

scripts/derush.py contiene las tres operaciones. Todo se ejecuta en el Mac, nada se envía a internet.

0. Una vez por máquina: instalar el transcriptor. Las dudas son detectadas por CrisperWhisper 2.0 en su versión rápida (turbo), un Whisper reentrenado para escribir los «ehs». Reside fuera del skill, en ~/.local/share/montaje-video/crisper (o $MONTAGE_VILEO_DONNEES):

python3 scripts/derush.py instalar          # 2,2 GB, se niega si hay menos de 5 GB libres

Sin él, analizar se detiene y lo indica: nunca recurre silenciosamente a otro método.

1. Analizar.

python3 scripts/derush.py analizar <video> --dir-edicion <carpeta de trabajo>/edicion

El script transcribe palabra por palabra con CrisperWhisper, detecta los silencios en el audio, y escribe edicion/derush/<nombre>.json (los datos) y edicion/derush/<nombre>.md (el texto palabra por palabra, frase por frase, con marcas de tiempo). La carpeta de trabajo es la del video en el Escritorio (ver «Dónde van los archivos»).

Por qué CrisperWhisper: un transcriptor normal genera texto limpio, por lo tanto sin los «ehs», y no se puede cortar lo que no se ve. Medido el 11/11/2026 en cuatro metrajes reales (296 s de audio, 11 dudas verificadas en el audio): CrisperWhisper rápido encuentra 10, el método antiguo (Whisper iniciado con una frase llena de dudas, con --motor arranque) 5; ninguna palabra real se pierde en ninguno de los dos; aproximadamente 4 veces más lento (152 s frente a 35 s). Solo se corta el intervalo entre la palabra real anterior y la palabra real siguiente: una duda inventada no corta nada.

El modelo rápido a veces fecha mal la palabra que sigue a un «eh» (duración nula, colocada en medio de la duda): en un metraje de prueba, dos «que», y quedaron 0,2 s de «eh» en el renderizado. crisper.py lo refecha según el audio (voz mantenida hasta un descenso, búsqueda limitada a 0,4 s y a la palabra siguiente) y escribe cada corrección en corregido_por_audio de la transcripción.

2. Leer el texto y decidir las repeticiones. Es trabajo del agente, no de un script: leer <nombre>.md completo y escribir un archivo retirar.json, una lista de {"inicio", "fin", "razon"}. Se incluyen:

  • la repetición: una frase comenzada de nuevo. Se conserva la última versión completa, se retiran las anteriores, desde el inicio del primer intento hasta el inicio del correcto;
  • la instrucción dicha en voz alta: «vuelvo a empezar», «corta eso», «la hacemos de nuevo». Se retira la instrucción y lo que designa;
  • la frase abandonada a medio camino, el falso arranque, el comentario fuera de tema («espera», un ruido, alguien que entra).

Los límites se colocan en las marcas de tiempo del texto, con 0,1 s de margen antes de la primera palabra conservada. Ante la duda sobre una repetición (dos versiones que dicen cosas diferentes), se conservan ambas y se señala: cortar una idea es más grave que dejar una repetición.

Las «voces sin palabra» listadas al inicio del texto no se cortan por defecto: es un sonido hablado que ninguna palabra cubre. A menudo una duda que el transcriptor ha pasado por alto, a veces una risa, una palabra mal oída, o un «eh» dicho a propósito (un metraje de prueba contenía uno: «era un eh bastante largo»). El agente mira el contexto y lo añade a retirar.json solo si es material desechable.

3. Montar.

python3 scripts/derush.py montar edicion/derush/<nombre>.json --retirar retirar.json -o <salida>.mp4

El script escribe la lista de cortes en el formato de video-use y la hace renderizar por su motor (extractos, fundido de audio de 30 ms en cada corte, unión sin recodificación). --vista-previa renderiza en 720p, más rápido, para una primera lectura. Se detiene si la duración renderizada se desvía de la duración esperada.

4. Verificar, y solo entonces entregar.

python3 scripts/derush.py verificar <salida>.mp4

El renderizado se vuelve a transcribir con el mismo transcriptor. Se entrega cuando dudas_restantes vale 0, no hay más silencios de más de 0,6 s, y el texto renderizado se lee de corrido, sin frase amputada ni palabra cortada. Una frase amputada se corrige en retirar.json, no ampliando los márgenes para todos. También se revisan dos o tres cortes en el fotograma (video-use, helpers/timeline_view.py): un salto de encuadre demasiado visible requerirá un zoom en la fase 3, mientras tanto se indica.

Los B-rolls, paso a paso

Un B-roll es un plano que muestra lo que la persona dice mientras se sigue escuchando. scripts/brolls.py contiene las operaciones; el renderizado sigue siendo el de video-use.

1. Indexar la biblioteca, una vez.

python3 scripts/brolls.py indexar

Cada plano se describe en la máquina mediante un pequeño modelo de visión (tres imágenes del plano, dos frases), el tema es el nombre de la subcarpeta. Contar 3 segundos por plano; solo los archivos nuevos o modificados se reprocesan, por lo que se puede relanzar sin miedo antes de cada montaje. Un archivo de más de 40 s se divide en planos de 20 s. Las imágenes fijas también cuentan. La biblioteca nunca se modifica: el índice se guarda junto con los ajustes.

El modelo de visión describe bien el sujeto, pero mal el detalle: a veces cuenta «tres relojes» porque ve tres imágenes del mismo plano. La descripción sirve para encontrar, no para decidir: se mira el tablero de control antes de entregar.

2. Leer el video derushado, frase por frase.

python3 scripts/brolls.py frases <video derushado>

3. Elegir: es trabajo del agente, no de un script. Leer la biblioteca entera (brolls.py listar) cuando quepa en unas decenas de planos; más allá, brolls.py buscar "<palabras>" con palabras de lo que se quiere VER («teclado», «reloj», «cámara»), no la frase dicha: «dejo grabar 45 minutos» no contiene ninguna palabra de un reloj, es el agente quien debe hacer el puente entre la idea y la imagen.

El orden: primero la biblioteca de la persona (sus imágenes se le parecen, nadie más las tiene); solo se recurre a un banco gratuito cuando nada encaja:

Los bancos gratuitos se toman sin clave ni cuenta, de dos formas. El agente elige:

OpciónCuándo usarlaComando
Playwright (por defecto)Siempre primero: rápido, sin pantalla, el mismo resultado tanto en Claude como en ChatGPTbrolls.py banco "<palabras>"
Computer use (el navegador del agente: Claude en Chrome, computer use, el agente de ChatGPT)Si Playwright no está en la máquina o no devuelve nada que encaje; o si el plano requiere un vistazo real (una atmósfera, un gesto preciso)el agente busca y elige a imagen, luego brolls.py banco --tomar <dirección de la página>
python3 scripts/brolls.py banco "typing laptop" -n 3            # palabras en INGLÉS, dos o tres, concretas
python3 scripts/brolls.py banco "film camera" -n 2 --cada      # al menos un plano de cada sitio
python3 scripts/brolls.py banco --tomar "https://pixabay.com/videos/keyboard-hands-writing-computer-1046/"

Playwright. El script abre la página de búsqueda de Pexels, y luego de Pixabay, en el navegador WebKit de Playwright, sin ventana, silencioso, perfil desechable cerrado al salir. Un simple programa recibe un rechazo de ambos sitios, y el Chromium de Playwright se queda bloqueado en su página de verificación: WebKit pasa (medido el 11/11/2026). Si falta: npm install -g playwright y luego `npm playwright

… [truncado para la traducción]

Skills relacionados