Communitygithub.com

Clip Montage

Edita los videoclips del usuario en un reel vertical listo para TikTok, Reels y Shorts: el mejor momento de cada clip, cortes al ritmo, subtítulos, etiquetas y una tarjeta final. Úsalo cuando alguien tenga videos, clips o material de archivo y quiera un montaje, reel, resumen, recorrido o lo más destacado, incluso antes de que hayan enviado los archivos. Solo fotos: eso es montage-video.

¿Qué es Clip Montage?

Clip Montage es una habilidad gratuita para agentes de IA (como Claude Code, Cursor o Codex) que transforma clips de video cortos grabados por el usuario en un montaje vertical listo para publicar en plataformas como TikTok, Instagram Reels o YouTube Shorts. El agente se encarga de seleccionar el mejor momento de cada clip, ordenarlos narrativamente, sincronizar los cortes con el ritmo de la música, añadir un gancho inicial, etiquetas por escena, subtítulos sincronizados y una llamada a la acción final. Soporta la inclusión de música, voz en off y sonidos originales de los clips, todo gestionado localmente sin necesidad de cuentas externas ni créditos. El proceso sigue pasos claros: verificar la configuración de la marca, seleccionar o crear un perfil de cliente, solicitar el material multimedia, inspeccionar y analizar los fotogramas de cada clip, proponer un alcance al usuario, escribir un guion técnico, generar una página HTML, renderizar el video MP4 y permitir ediciones iterativas sin perder versiones anteriores. La habilidad está documentada en un archivo SKILL.md detallado que incluye referencias a herramientas de línea de comandos, etiquetas de guion y tablas de edición.

Compatible con✓Claude Code✓Codex CLI~Cursor
npx skills add https://github.com/GreyCatVP/marketing-skill/tree/main/skills/clip-montage

Preguntar en tu IA favorita

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

Documentación

Clip Montage (Montaje de Clip)

Propósito

Toma los videos cortos que el usuario graba con su teléfono, y cualquier música o grabación de voz que tenga, y edítalos en un montaje 9:16 terminado y listo para publicar:

  • el mejor momento de cada clip, en un orden que cuente la historia;
  • cortes al ritmo;
  • un gancho en la primera toma, una etiqueta en cada una y la llamada a la acción (CTA) al final;
  • el sonido propio del clip donde sea importante (alguien hablando, un chisporroteo, un aplauso), subtitulado palabra por palabra;
  • la voz en off del usuario debajo de todo el video, con subtítulos sincronizados.

Luego sigue editándolo con el usuario hasta que esté satisfecho ("usa la parte donde se ríe", "primero la cocina", "clip más fuerte, sin música") una versión a la vez, sin perder las anteriores.

Este es el montaje predeterminado y es gratuito. Todo se renderiza en esta máquina con las herramientas scripts/video/ del plugin (montage.js construye la página a partir de un guion corto, render.js crea el MP4). No hay cuenta, ni créditos, y nada sale de la máquina. Las imágenes reales también son la representación más fiel de un lugar o producto: ninguna IA inventa nada.

Qué cuesta dinero y cuándo mencionarlo:

Qué tiene el usuarioQué sucedeCosto
Videos (con o sin fotos, música, una grabación de voz)Esta habilidadGratis
Solo fotos, y puede grabar algunos clipsPide los clips, luego esta habilidadGratis
Solo fotos, sin posibilidad de clipsmontage-video con movimientos locales (paneos, zoom suave, movimientos 3D)Gratis
Solo fotos, y quiere que la cámara realmente se mueva (nuevos ángulos)"Movimientos de cámara con IA" de montage-video, solo si el usuario dice que tiene un plan de pago con un modelo de video (Figma Weave en un plan de Figma de pago, Higgsfield), cotizado y aprobado primeroCréditos de pago

Nunca ejecutes un modelo de video de pago desde esta habilidad. Nunca cotices uno a menos que el usuario haya dicho que tiene un plan de pago y lo quiera.

Proceso paso a paso

Raíz del plugin: si una ruta a continuación aún muestra un marcador de posición CLAUDE_PLUGIN_ROOT sin expandir (Claude Code lo completa; otros agentes como Codex no), resuélvelo antes de usar cualquiera de ellos: toma la salida de printenv CLAUDE_PLUGIN_ROOT si imprime una ruta; de lo contrario, sube desde la carpeta de este archivo hasta la primera carpeta que contenga references/brand-voice.md, y si nada funciona, pregúntale al usuario dónde vive este plugin. Usa esa ruta absoluta en cada ruta de archivo y comando de shell a continuación. VIDEO debajo significa ${CLAUDE_PLUGIN_ROOT}/scripts/video.

  1. Verifica el estado de configuración. Lee ${CLAUDE_PLUGIN_ROOT}/references/brand-voice.md. Si no existe, o su primera línea es <!-- MARKETING-SKILL:UNCONFIGURED -->, pausa y pregúntale al usuario las 4 preguntas de configuración de este plugin (tarea prioritaria; tipos de contenido a producir; audiencia objetivo + tono; formato de salida predeterminado — igual que /marketing-skill:marketing-setup) antes de continuar, luego guarda las respuestas en ese archivo y cambia el marcador a CONFIGURED con la fecha de hoy. Si el archivo no está configurado pero el usuario ya dijo que omita la configuración o use los valores predeterminados, no preguntes: usa sus valores predeterminados para esta ejecución, dilo en una línea y deja el marcador como está.

  2. Elige el cliente. Exactamente como el paso 2 de montage-video (${CLAUDE_PLUGIN_ROOT}/skills/montage-video/SKILL.md): un cliente guardado (lee el perfil y sus ## Notes), uno nuevo (nombre del negocio, líneas de contacto, letra pequeña requerida, logotipo, colores, la música que le gusta), o el propio negocio del usuario (omite client:). Los perfiles viven en ${CLAUDE_PLUGIN_ROOT}/state/clients/ y no se incluyen en git.

  3. Pide el material, la música y la voz. Un mensaje:

    • Los clips (la solicitud predeterminada). Videos cortos de teléfono, de 3 a 15 segundos cada uno, uno por habitación, ángulo o momento. Si aún no han grabado, dales los "Consejos de grabación para clips" de montage-guide.md: vertical, mantén cada toma firme durante 3 a 5 segundos, muévete lentamente, buena luz y los detalles de cerca.
    • Música, si la tienen. Una pista para la que tengan derechos de uso en un anuncio. Una canción de una aplicación de streaming o la radio no lo es. De lo contrario: el sonido guardado del cliente (una pista generada gratuita), una pista Creative Commons (node VIDEO/media.js search "<mood>" --type music --out state/videos/assets --count 3), o sin música, para que agreguen un sonido de tendencia en la aplicación al publicar (las cuentas comerciales de TikTok e Instagram tienen una biblioteca de uso comercial).
    • Una voz, si la tienen. Una voz en off que hayan grabado (un archivo está bien, una nota de voz del teléfono funciona), con lo que dijeron palabra por palabra para los subtítulos. O clips donde alguien hable a la cámara. O ninguna: la mayoría de los montajes son solo música.
    • Un montaje al que les gustaría que se parezca, si lo hay: un video que envíen (o la referencia de estilo en la Configuración de Video de brand-voice.md). Ejecuta node VIDEO/reference.js <video>, lee su reference.md y mira sus hojas; luego iguala su ritmo (pace: su duración típica de toma, en tiempos cuando sus cortes caen al ritmo), sus ráfagas de cortes rápidos, sus subtítulos y su sensación, y di en una línea lo que estás igualando. Copia la edición, nunca su material, música o palabras; pide el archivo en lugar de descargar la publicación de alguien de la aplicación.
    • ¿Solo fotos? Pregunta si pueden grabar algunos clips en su lugar (es gratis y la imagen más fiel). Si no pueden, transfiere a montage-video, que mueve las fotos con movimientos locales gratuitos. Menciona la IA de foto a video solo si piden movimientos reales de cámara o nuevos ángulos, y di que necesita un plan de pago (los modelos de video de Figma Weave se ejecutan solo en planes de Figma de pago). Ejecútalo solo después de que digan que tienen uno y aprueben el presupuesto, siguiendo los "Movimientos de cámara con IA" de montage-video.
    • Obtén los archivos en el disco. El renderizador necesita archivos: pide la carpeta (o las rutas de los archivos). Los videos pegados en un chat no se pueden leer con el renderizador. Si están en Google Drive y un conector de Drive está disponible, descárgalos en una nueva carpeta.
    • Usa solo material que el usuario o cliente haya grabado o tenga una licencia para usar, y solo personas que aceptaron aparecer.
  4. Tráelos. Ejecuta node VIDEO/montage.js inspect <folder> --slug <slug>, donde el slug es corto y nombrea el video (maple, taco-night).

    • Copia cada clip en state/videos/assets/<slug>-01.mp4, y así sucesivamente, con la imagen y el sonido tal como están y los metadatos eliminados (incluida la ubicación de un clip de teléfono). Los originales no se tocan.
    • Imprime el tamaño, la forma, la duración de cada clip y si tiene sonido, y marca clips largos, apaisados y de baja resolución.
    • Escribe una hoja de contactos numerada, <slug>-contact.png, y un guion inicial, state/videos/<date>-<slug>.md, una toma por archivo.
    • Copia la música del usuario a state/videos/assets/<slug>-music.<ext> y su voz en off a state/videos/assets/<slug>-vo.<ext>.
  5. Mira cada clip. No puedes reproducir video, así que mira los fotogramas:

    • Ejecuta node VIDEO/montage.js frames <clip> --every 1 para cada clip (--every 0.5 para uno corto y ocupado). Organiza un fotograma cada segundo con su tiempo, e imprime cuando el sonido del clip es fuerte (alguien hablando o un sonido que vale la pena conservar). Lee cada hoja.
    • Nombra lo que muestra cada clip y elige su mejor momento: firme, nítido, bien iluminado, el sujeto claro. Omite el inicio tembloroso, el teléfono bajándose, el desenfoque y cualquier persona que no haya aceptado aparecer. Cada elección es un tramo, [from: 3.5] [to: 6.5]: 1.5 a 4 segundos es adecuado para la mayoría de las tomas. Un clip largo puede dar dos o tres tomas de diferentes momentos.
    • Un clip apaisado se corta a 9:16. Anota qué mantener en el encuadre como [focus: x%,y%] (la persona, el producto, la chimenea).
    • Anota los clips cuyo sonido debe permanecer ([sound]): alguien hablando a la cámara, una risa, el chisporroteo en la parrilla. No puedes escucharlos, así que pregunta al usuario qué se dice, palabra por palabra, para los subtítulos, y di qué clips conservarías el sonido para que puedan comprobarlo.
    • Di qué clips o momentos excluiste y por qué, para que el usuario pueda anularte.
    • Ordena las tomas con ${CLAUDE_PLUGIN_ROOT}/references/montage-guide.md ("Clips: el orden"): el momento más fuerte primero, luego una ruta a través del lugar o evento, terminando en la CTA.
  6. Confirma el alcance en un mensaje. Propón y deja que el usuario corrija:

    • Duración y tomas: aproximadamente 15, 30 o 60 segundos, y qué momentos lo llenan.
    • Música: su pista, el sonido del cliente, otro género, una pista Creative Commons (envíala para escucharla primero) o ninguna.
    • Voz: su voz en off, los clips que mantienen su propio sonido o ninguna.
    • Las palabras en pantalla: el gancho (tres opciones de ${CLAUDE_PLUGIN_ROOT}/references/hooks.md, cada una de un patrón diferente), una etiqueta para cada toma, una pegatina de estado si la hay, y la CTA, más el precio y las especificaciones para un listado o producto. Cada hecho proviene del usuario o del cliente. Si falta uno, pregunta u omítelo.
  7. Escribe el guion y construye la página. Edita el guion inicial. El formato y cada etiqueta están documentados al principio de VIDEO/montage.js:

    ---
    title: taco night
    client: casa-lupe
    hook: tuesday is taco night
    cta: book a table · link in bio
    music: assets/taco-night-music.mp3
    pace: 4 beats
    ---
    3. assets/taco-night-03.mp4  Fresh off the grill  [from: 1.2] [to: 4] [sound]
    1. assets/taco-night-01.mp4  Handmade tortillas  [from: 0.5] [to: 3] [focus: 40%,60%]
    2. assets/taco-night-02.mp4  Meet chef Lupe  [from: 6] [to: 10.5] [sound] [say: Every tortilla is pressed by hand, every morning.]
    4. assets/taco-night-04.mp4  The patio  [from: 2] [to: 5] [move: push-in]
    
    • Tramos del clip: [from:] y [to:] establecen el tramo. La toma luego se ajusta al ritmo (redondeado hacia arriba, por lo que se reproduce un momento después de [to:]). Usa pace: en tiempos, no compases, para los clips: un compás redondea un tramo de 3 segundos a 5 segundos a 96 BPM.
    • Sonido propio del clip: [sound] lo reproduce en sincronía, con la música bajada debajo. Un [say: ...] en ese clip es lo que se dice en él, subtitulado palabra por palabra. No se vuelve a expresar.
    • Voz en off del usuario: voiceover: assets/<slug>-vo.m4a y voiceover-text: <sus palabras, palabra por palabra>. Se reproduce desde 0.3 segundos (voiceover-at: para cambiarlo), la música baja debajo, los subtítulos se ejecutan bajos en cada toma y las tomas se estiran para cubrirlo. No uses también líneas de voz [say: ...].
    • Su música: music: assets/<slug>-music.mp3. Su ritmo se lee con beats.js y los cortes caen en él. music: none deja espacio para un sonido de tendencia agregado en la aplicación.
    • Movimientos: un clip mantiene su propio movimiento. [move: push-in], pull-out o drift agregan un zoom lento encima. Un paneo desliza el clip con zoom, ya que no hay nada al lado del encuadre para panear.
    • Fotos mezcladas se mueven como en montage-video (paneos, zoom suave, movimientos 3D).

    Luego ejecuta node VIDEO/montage.js state/videos/<date>-<slug>.md. Escribe <date>-<slug>.html junto al guion, imprime la tabla de tomas, el sonido, la voz y cualquier nota (un clip más corto que su toma, una toma sostenida para que su etiqueta pueda leerse), y ejecuta render.js --check. Arregla lo que enumera la verificación, generalmente acortando una etiqueta, y ejecútalo de nuevo hasta que esté limpio.

  8. Primer corte. Mira cada fotograma de node VIDEO/render.js <page> --slides tú mismo: el sujeto en el encuadre (no recortado de un clip apaisado), etiquetas legibles, subtítulos claros de las etiquetas, el orden que cuenta la historia. Luego:

    • Envía al usuario las diapositivas para que apruebe el orden y las palabras.
    • Renderiza: node VIDEO/render.js <page> state/videos/<slug>-v1.mp4 --cover 0. Escribe el MP4 (1080×1920, 30fps), una imagen de portada y, cuando haya voz o sonido de clip subtitulado, un archivo de subtítulos .srt. --draft hace una versión rápida de medio tamaño para verificar el tiempo primero. Nunca publiques un borrador.
    • No puedes escuchar el resultado. Pide al usuario que escuche: la música, cada sonido de clip conservado y la voz en off contra los subtítulos.
  9. Edita hasta que esté bien. Cada solicitud se convierte en una edición del guion, nunca de la página, porque montage.js recalcula toda la sincronización:

    El usuario diceCambio en el guion
    "usa la parte donde se ríe"el [from:] / [to:] de esa toma (encuéntralo en la hoja --every)
    "corta la parte temblorosa"un [from:] posterior, o un [to:] anterior
    "más tiempo en la cocina"un [to:] posterior, o [hold: 4s]
    "más rápido" / "más lento"tramos más cortos, pace: (ej. 3 beats), o length:
    "hazlo de 15 segundos"length: 15, y elimina los momentos más débiles (di cuáles)
    "primero la cocina", "intercambia 3 y 5"reordena las líneas numeradas
    "mantén el sonido en ese" / "silencio"agrega o elimina [sound]
    "agrega subtítulos a lo que dice"[say: <sus palabras, exactamente>] en ese clip [sound]
    "agrega mi voz en off"voiceover: y voiceover-text:
    "canción diferente" / "sin música"music: otro archivo, un género, o none
    "muestra el lado izquierdo", "mantenla en el encuadre"[focus: 25%,50%]
    "acerca el zoom"[move: push-in] (con [focus:] en el lugar)
    "cortes más suaves" / "contundentes"transition: fade, o cut, slide, zoom, wipe, flash
    "cambia el texto"la etiqueta, hook:, cta:, price:, specs:
    "cámara lenta"no compatible: sin cambios de velocidad. Un clip grabado en cámara lenta del teléfono se reproduce como se grabó
    "otro color / logotipo / número de teléfono"el perfil del cliente, no el guion

    Cada ronda: edita el guion, ejecuta montage.js de nuevo, luego usa --draft para un cambio de sincronización o --slides para un cambio de apariencia. Renderiza la siguiente versión como <slug>-v2.mp4, -v3.mp4, y así sucesivamente. Nunca sobrescribas una versión anterior, para que el usuario pueda volver atrás y elegir entre ellas.

  10. Termina. El video está listo cuando el usuario diga que lo está. Borra los fotogramas intermedios (state/videos/assets/*.jpg), no los guiones. Di: el archivo está en state/videos/<slug>-v<n>.mp4, y los subtítulos en <slug>-v<n>.srt; sube el video a la plataforma que el usuario quiera.

Individual skills in this repo

This repo contains 2 individual skills — each has its own dedicated page.

Skills relacionados