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 usuario | Qué sucede | Costo |
|---|---|---|
| Videos (con o sin fotos, música, una grabación de voz) | Esta habilidad | Gratis |
| Solo fotos, y puede grabar algunos clips | Pide los clips, luego esta habilidad | Gratis |
| Solo fotos, sin posibilidad de clips | montage-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 primero | Cré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.
-
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 aCONFIGUREDcon 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á. -
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 (omiteclient:). Los perfiles viven en${CLAUDE_PLUGIN_ROOT}/state/clients/y no se incluyen en git. -
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). Ejecutanode VIDEO/reference.js <video>, lee sureference.mdy 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" demontage-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.
- 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
-
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 astate/videos/assets/<slug>-vo.<ext>.
- Copia cada clip en
-
Mira cada clip. No puedes reproducir video, así que mira los fotogramas:
- Ejecuta
node VIDEO/montage.js frames <clip> --every 1para cada clip (--every 0.5para 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.
- Ejecuta
-
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.
-
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:]). Usapace: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.m4ayvoiceover-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 conbeats.jsy los cortes caen en él.music: nonedeja espacio para un sonido de tendencia agregado en la aplicación. - Movimientos: un clip mantiene su propio movimiento.
[move: push-in],pull-outodriftagregan 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>.htmljunto 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 ejecutarender.js --check. Arregla lo que enumera la verificación, generalmente acortando una etiqueta, y ejecútalo de nuevo hasta que esté limpio. - Tramos del clip:
-
Primer corte. Mira cada fotograma de
node VIDEO/render.js <page> --slidestú 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.--drafthace 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.
-
Edita hasta que esté bien. Cada solicitud se convierte en una edición del guion, nunca de la página, porque
montage.jsrecalcula toda la sincronización:El usuario dice Cambio 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), olength:"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:yvoiceover-text:"canción diferente" / "sin música" music:otro archivo, un género, onone"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, ocut,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.jsde nuevo, luego usa--draftpara un cambio de sincronización o--slidespara 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. -
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á enstate/videos/<slug>-v<n>.mp4, y los subtítulos en<slug>-v<n>.srt; sube el video a la plataforma que el usuario quiera.