Communitygithub.com

skillmds/kinetic-multicam

Convierte una toma real de una persona hablando en un prompt de vídeo a vídeo con giros de cámara cinéticos y supers cinéticos (texto animado), sincronizados con el discurso.

¿Qué es kinetic-multicam?

Esta skill transforma una única toma real de una persona hablando (video local) en un prompt optimizado para plataformas de vídeo a vídeo como Seedance 2.0 Fast. Agrega dos elementos clave al metraje original: cambios de cámara rápidos y visibles con desenfoque de movimiento que se estabilizan en fotogramas fijos, y supers cinéticos (texto con gráficos en movimiento, no subtítulos) sincronizados con los picos del discurso. El prompt preserva la cara, la habitación, el audio y la sincronización de labios del video original, sin regenerar la escena. La skill guía al usuario a través de un flujo de trabajo paso a paso que incluye detección de idioma, transcripción con Whisper, segmentación del discurso en bloques, selección de supers y posiciones de cámara, y verificación del prompt generado. Soporta videos de <4s a >15s, con reglas de espaciado y densidad adaptativas. El prompt final debe pegarse en Seedance 2.0 Fast junto con el video fuente. La salida está en inglés, excepto los supers que siguen el idioma del video.

Compatible con~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/skillmds/skillmd/tree/HEAD/plugins/design/skills/kinetic-multicam

Preguntar en tu IA favorita

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

Documentación

/kinetic-multicam: Una Toma → Supers Cinéticos + Cambios de Cámara

Resumen

Convierte UNA toma real de una persona hablando en el prompt comprobado de vídeo a vídeo — funciona mejor en Seedance 2.0 Fast (Google Omni lo ejecuta pero con resultados claramente más débiles; no lo recomendamos) — que añade dos cosas al metraje intacto: giros de cámara visibles en fracciones de segundo — movimientos con desenfoque de movimiento que se bloquean en fotogramas estables al llegar — y supers cinéticos llamativos (texto con gráficos en movimiento, NO subtítulos) sincronizados con los acentos del discurso. El prompt preserva el video fuente subido — cara, habitación, audio, sincronización de labios, todo congelado. NO describe ni regenera la escena.

Principio fundamental: la plantilla está congelada; solo tres zonas cambian — las marcas de tiempo [Xs] (siempre), los supers "[TEXT]" (extraídos de las palabras realmente dichas; no todos los bloques reciben uno — los supers siguen su propia regla de densidad), y las descripciones de posición de cámara (solo si el usuario lo pide).

Skill hermana, no la misma skill: /multicam hace cortes bruscos sin texto. NUNCA mezcles las dos plantillas — esta nunca dice "hard cut", usa rangos De [Xs] a [Xs] (no * A las [Xs]:), y lleva su propia dirección de tipografía. La transición en sí es el diferencial: /multicam CORTA entre ángulos; esta skill VIAJA entre ellos con un giro visible con desenfoque de movimiento.

Entrada

Solo archivo de video local (metraje propio del usuario). Si el usuario solo tiene una URL (un enlace de Instagram, un enlace de Drive), pídele que guarde el video como archivo local primero. Si hay más de un video que podría ser "el video", pregunta — nunca adivines mediante ls -t.

Paso 0 — Verificación previa (primera ejecución, o en cualquier error de herramienta faltante)

python "<directorio base de esta skill>/scripts/check_env.py"

Verifica Python 3.8+, ffmpeg, ffprobe y Whisper, y para cualquier cosa faltante imprime para qué sirve la herramienta más el comando de instalación exacto para el SO del usuario. Nunca instala nada por sí mismo — informa lo que falta, pide permiso al usuario, instala y luego vuelve a ejecutar la verificación. Si todo pasó recientemente en esta sesión, salta directamente al Paso 1.

Paso 1 — Compases

python "<directorio base de esta skill>/scripts/beats.py" "<ruta del video>"

(El directorio base de la skill se anuncia cuando esta skill se carga.)

Informa al usuario del LANGUAGE y DURATION detectados. Banderas: --language <código> si la detección parece incorrecta, --force para retranscribir, --model medium para precisión sobre velocidad, --cuts N para un número diferente de límites (reejecutar es instantáneo una vez que existe el JSON de transcripción).

Paso 2 — Elegir la cantidad de bloques, luego refinar los límites (juicio; el script solo informa hechos)

La cantidad de bloques escala con la duración — pero los giros cuestan tiempo de pantalla (~0.2–0.3s de viaje visible cada uno), por lo que la densidad cinética se mantiene IGUAL o POR DEBAJO de la densidad de cortes de /multicam, nunca por encima: ≤10s → 4 bloques; >10–15s → 5 bloques; >15s → 6 bloques (un movimiento de cámara cada ~1.6–2.2s). El usuario puede anular en el punto de control. Si el número no es 4, vuelve a ejecutar beats.py con --cuts N (instantáneo — la transcripción está en caché).

La línea de tiempo son N bloques que recubren el video después de una retención inicial en la cámara original: [0 → t1] encuadre original (sin super), luego [t1 → t2] … [tN → fin]. Los límites t1–tN son los NAIVE_CUTS — una primera aproximación determinista, nunca la entregues sin refinar. Agrupa WORDS en frases habladas y vuelve a derivar:

  • La retención inicial (cámara original) dura ≥0.8s antes de que comience el bloque 1 — y no mucho más: si un límite de frase limpio está en 0.8–1.0s, ajusta allí en lugar de dejar que la apertura se alargue más allá de ~1.2s. Una apertura estática larga mata el formato. La retención puede llevar el super opcional de gancho (ver punto de control), pero nunca un movimiento de cámara.
  • Los límites caen al inicio de las frases, nunca a mitad de palabra. Whisper puede dividir palabras con guión en dos entradas ("multi" + "-angle") — trátalas como UNA palabra; nunca cortes entre ellas.
  • Cuando una entrada GAPS (respiración/silencio) está junto a un límite de frase, coloca el límite al INICIO del silencio: redondea el final de la palabra anterior a un decimal (la palabra termina en 3.98 → límite en 4.0; termina en 5.68 → 5.7). Nunca al final del espacio.
  • La frase del mensaje clave recibe el bloque más largo.
  • Ritmo: los bloques duran ~1–2.5s. Si un bloque excede ~2.5s mientras hay un límite de frase limpio dentro, divide allí — y distribuye los 4 límites por todo el video, nunca amontonados en un solo tramo.
  • El ÚLTIMO bloque siempre vuelve a la cámara original antes de la frase final — el video cierra en el encuadre de apertura. Su marca de tiempo final es DURATION redondeada a un decimal.
  • Espaciado mínimo ~0.7s; tN ≤ duración − 1s; marcas de tiempo ascendentes, un decimal.
  • Video >15s: advierte que la técnica brilla en ganchos cortos, luego elige los bloques que cubren todo el arco. Video <4s: advierte que 4 bloques no caben en las reglas de espaciado, presenta opciones honestas (menos bloques / 4 forzados frenéticos) en el punto de control — la elección del usuario allí anula el recuento predeterminado. NO_SPEECH: advierte y ofrece la alternativa espaciada uniformemente o abortar.

Paso 2b — Escribir los supers (del discurso — no todos los bloques reciben uno)

Los supers tienen su propia regla de densidad, independiente de la cámara: un super cada ~1.5–2s (toma de 5s → 3 supers; 8s → 4–5), y un super debe GANARSE su sello — la CTA, los sustantivos de la oferta, una negación mantenida, el pago. Las frases de relleno o conectivas ("puedes", "entonces", "y luego") NO reciben super: su bloque se convierte en solo cámara (ver la sección de plantilla). El super de gancho, cuando se opta por él, cuenta para el total.

Para cada bloque que se gane uno, corta el super de las palabras REALMENTE HABLADAS dentro de la ventana de ese bloque en WORDS:

  • Una secuencia contigua de 2–6 palabras habladas — y prefiere el RECORTE MÁS AJUSTADO que mantenga el significado (2–4 palabras): elimina agresivamente artículos iniciales/finales, preposiciones y relleno ("la forma más fácil" → FORMA MÁS FÁCIL, "de un solo video" → SOLO VIDEO). Mantén las negaciones — eliminar "no" invierte el mensaje. Nunca reordenes, sustituyas, traduzcas o agregues palabras que no estén en esa ventana.
  • Idioma = el idioma hablado del video (video en PT → supers en PT). Solo los supers siguen el idioma del video; todo lo demás en el prompt está en inglés.
  • Entrégalo en MAYÚSCULAS. Elimina comas y puntos finales; mantén "?" o "!" si se hablaron así.
  • Un super es un llamado llamativo, no un subtítulo: nunca una oración completa estilo subtítulo, y como máximo un super por bloque — sin tiempos de entrada por palabra, sin guión de animación. El párrafo de tipografía de la plantilla ya lleva la dirección artística.

Paso 3 — Presentar, luego punto de control OBLIGATORIO

Muéstrale al usuario, en este orden:

  1. Dos líneas sobre cómo funciona: el prompt congela identidad/habitación/audio/sincronización de labios; las únicas adiciones son giros de cámara con desenfoque de movimiento en fracciones de segundo que se bloquean y supers cinéticos cortados de sus propias palabras habladas — por eso parece una edición premium de gráficos en movimiento de la misma toma real.
  2. Tabla de frases con ventanas de tiempo.
  3. Los bloques sugeridos, cada uno justificado (qué frase cubre; qué límites caen en respiraciones) — más el super propuesto para cada bloque, o "solo cámara" donde la regla de densidad deja la pantalla limpia.
  4. La plantilla a continuación, aún con [Xs] y [TEXT].

Luego pregunta (AskUserQuestion; preguntas de chat simples si no está disponible) antes de rellenar nada:

  • ¿Aceptas la cantidad de bloques y las marcas de tiempo sugeridas, o ajustas?
  • ¿Aceptas el plan de supers — los textos Y qué bloques se quedan solo cámara — o editas alguno (recorte diferente, mayúsculas diferentes, super añadido/eliminado)?
  • ¿Mantienes las posiciones de cámara predeterminadas, o intercambias alguna (ofrece la tabla de preajustes)?
  • ¿Añades el super de gancho opcional sobre la retención inicial (texto en el fotograma 1, la cámara permanece quieta)? Por defecto DESACTIVADO.
  • Solo cuando la regla de densidad ha fusionado un super valioso: ofrece el bloque estático con super como alternativa a perderlo.

Nunca te saltes este punto de control, incluso si el usuario parece tener prisa o los compases parecen obvios.

Paso 4 — Rellenar y entregar

Muta SOLO:

  • las marcas de tiempo [Xs] — reemplaza solo la X: [Xs] se convierte en [0.8s]. Los corchetes se QUEDAN: De [0.8s] a [2.1s] es correcto, De 0.8s a 2.1s es incorrecto. Los bloques adyacentes comparten el límite (el bloque 1 termina en 2.1 → el bloque 2 comienza en 2.1); el último bloque termina en la duración del video.
  • los tokens [TEXT] — reemplaza el token completo (corchetes incluidos) con el super, MANTENIENDO las comillas circundantes: "[TEXT]" se convierte en "UPLOAD YOUR VIDEO". "[UPLOAD YOUR VIDEO]" (corchetes mantenidos) es incorrecto.
  • cualquier descripción de posición de cámara que el usuario haya pedido intercambiar (preajustes a continuación).

Guárdalo como <nombre base del video>_kinetic_multicam_prompt.txt junto al video, luego autoverifica el archivo guardado:

python "<directorio base de esta skill>/scripts/verify_prompt.py" "<archivo .txt guardado>"

Debe imprimir PASS (byte a byte idéntico a la plantilla, cada bloque bien formado, posiciones del menú canónico, límites encadenados, último bloque de vuelta a la cámara original). En FAIL, corrige y vuelve a ejecutar antes de entregar.

Entrega el prompt terminado en un bloque de código delimitado. Cierra con uso: sube el video fuente a Seedance 2.0 Fast — la plataforma en la que esta plantilla está validada (2026-07; Omni probó peor, no lo sugieras) — selecciónalo como metraje fuente, pega el prompt. El cuerpo del prompt entregado está SIEMPRE en inglés, independientemente del idioma de la conversación o del video — solo los supers siguen el idioma del video.

La plantilla canónica (CONGELADA)

Reprodúcela byte por byte — incluyendo los saltos de línea. Las rarezas son intencionales (la capitalización de "The Supers", "same as original video"). Si se lee extraño, se queda.

Use the uploaded video as the source. The Supers must follow the pace of the audio.
Video timing must be exactly the same as original video.

Preserve the person's face, identity, expression, clothing, body proportions, and lip sync exactly as in the original footage. Preserve the room, lighting, furniture, background, and overall environment. Do not replace, redesign, or hallucinate any part of the scene.

The only changes should be rapid cinematic camera repositioning and the addition of kinetic motion graphics.

Do not add traditional subtitles. Instead, create bold, high-energy kinetic supers that visually reinforce the spoken message. The supers should behave like motion graphics, not captions. Use dynamic typography, scaling, rotation, perspective, masking, tracking, and creative layouts. Vary the style throughout the video so each callout feels intentional and visually engaging. The text must never cover the speaker's face. Place each super in open areas of the frame, or layer it behind the speaker's body so the person partially occludes the text — as if the words physically exist in the room behind them. The text should integrate naturally with the composition.

Camera movement should be extremely fast. Each transition should take only a split second, rapidly snapping to the new viewpoint before immediately locking into a perfectly stable frame. The camera must visibly travel to each new position — a fast, motion-blurred whip move with a speed-ramp feel — never an editing cut and never an invisible instant jump between angles. Do not create long continuous camera moves, floating movement, or handheld motion. Every move should feel like a fast cinematic reposition followed by a freeze.

Follow this timeline:

From [Xs] to [Xs]
Display the kinetic super:
"[TEXT]"
Whip the camera in a fast motion-blurred orbital sweep to the left, landing in a left orbit position, then hold completely still.

From [Xs] to [Xs]
Display the kinetic super:
"[TEXT]"
Whip the camera upward in a fast motion-blurred crane rise to a higher crane angle, then hold completely still.

From [Xs] to [Xs]
Display the kinetic super:
"[TEXT]"
Whip the camera backward in a fast motion-blurred pull-out to a wide position revealing the full room with the speaker centered, then hold completely still.

From [Xs] to [Xs]
Display the kinetic super:
"[TEXT]"
Whip the camera in a fast motion-blurred sweep back to the original camera position and hold until the end.

Important requirements:

* Maintain the exact room and person throughout.
* Do not change facial features, clothing, lighting, or background.
* Preserve perfect lip sync.
* No hard cuts to different scenes.
* Every transition is a visible, motion-blurred camera move — never an editing cut.
* No title cards.
* No subtitle-style captions.
* Supers never cover the speaker's face — open frame areas or layered behind the body, never over it.
* Only rapid split-second camera repositioning followed by locked-off shots.
* Motion graphics should feel premium, modern, energetic, and social-media optimized.

El delimitador muestra el predeterminado de 4 bloques. Para 5 o 6 bloques, inserta bloques adicionales con la misma unidad congelada de 4 líneas — From [Xs] to [Xs] / Display the kinetic super: / "[TEXT]" / una línea de posición tomada TEXTUALMENTE de la tabla de preajustes — separados por líneas en blanco, manteniendo el bloque de vuelta al original al final. Secuencias de posición predeterminadas:

  • 4 bloques: órbita izquierda → grúa más alta → plano general (revelación de la habitación) → vuelta al original
  • 5 bloques: primer plano ajustado → órbita izquierda → grúa más alta → plano general → vuelta al original
  • 6 bloques: primer plano ajustado → órbita izquierda → grúa más alta → órbita derecha → plano general → vuelta al original

La coincidencia semántica vence al orden predeterminado. Antes de decidir, escanea la frase de cada bloque en busca de significado que se asigne a una posición — revelación/espacio/"sin configuración" → plano general; intimidad/secreto → primer plano ajustado; poder/desafío → héroe bajo; visión general/lista → cenital; detalle clave → primer plano de acercamiento. Cuando una frase coincida, asigna a ese bloque la posición coincidente (respetando aún la regla de contraste) y justifica la elección en el punto de control — "DON'T HAVE A FULL SETUP" en la revelación de la habitación amplia es el ejemplo canónico.

Super de gancho opcional (opt-in en el punto de control)

Por defecto, la retención inicial no lleva texto. Si el usuario opta por hacerlo, inserta UN bloque adicional al principio de la línea de tiempo — de [0s] a t1, la cámara NO se mueve; existe solo para poner un super de gancho en el fotograma 1:

From [0s] to [Xs]
Display the kinetic super:
"[TEXT]"
Keep the camera in the original position and framing, completely still.

Su texto NUNCA se superpone con el primer super cinético; el super de gancho desaparece antes de que comience el movimiento. Cuenta para el total de supers (la regla de densidad lo incluye).

Tabla de preajustes de posición de cámara (canónica, 2026-07)

Nombre del preajusteLínea de prompt (cópiala textualmente)Cuándo usarla
órbita izquierdaWhip the camera in a fast motion-blurred orbital sweep to the left, landing in a left orbit position, then hold completely still.Primer bloque que se aleja de la cámara original — transición sentida.
órbita derechaWhip the camera in a fast motion-blurred orbital sweep to the right, landing in a right orbit position, then hold completely still.Útil para un cambio de dirección después de la órbita izquierda.
grúa más altaWhip the camera upward in a fast motion-blurred crane rise to a higher crane angle, then hold completely still.Cambio de altura — mirada hacia abajo al orador.
grúa bajaWhip the camera downward in a fast motion-blurred crane drop to a low angle looking up at the speaker, then hold completely still.Poder, autoridad, intensidad.
plano generalWhip the camera backward in a fast motion-blurred pull-out to a wide position revealing the full room with the speaker centered, then hold completely still.Revelación, espacio, "sin configuración".
primer plano ajustadoWhip the camera forward in a fast motion-blurred punch-in to a tight close-up on the speaker's face, then hold completely still.Intimidad, secreto, momento clave.
héroe bajoWhip the camera downward in a fast motion-blurred drop to a low angle position aimed slightly upward at the speaker, then hold completely still.Afirmación contundente, desafío, poder.
cenitalWhip the camera upward in a fast motion-blurred rise to an overhead top-down position looking straight down at the speaker and their setup, then hold completely still.Listas, demostraciones, "aquí está todo".
retroceso originalWhip the camera in a fast motion-blurred sweep back to the original camera position and hold until the end.Último bloque — cierra en el encuadre de apertura.

Regla de contraste: no dos bloques consecutivos con el mismo preajuste. Si la puntuación semántica empuja hacia un duplicado, difiere una posición hacia la siguiente coincidencia más cercana.

Notas técnicas

  • Seedance 2.0 Fast es la plataforma objetivo validada. Google Omni ejecuta prompts similares pero produce resultados de calidad significativamente menor — no lo recomiendes.
  • El cuerpo del prompt entregado está SIEMPRE en inglés. Solo los supers (el texto entre comillas después de "[TEXT]") siguen el idioma del video.
  • La skill requiere Python 3.8+, ffmpeg, ffprobe y Whisper (instalado a través de pip install openai-whisper).
  • El script verify_prompt.py comprueba que el prompt guardado coincida exactamente con la plantilla congelada en estructura, posiciones y encadenamiento de límites.
  • Si la transcripción ya existe (del mismo archivo de video y los mismos parámetros), beats.py la reutiliza instantáneamente. Usa --force para forzar una retranscripción.

Flujo de trabajo de ejemplo

  1. El usuario suelta un archivo entrevista.mp4. La skill ejecuta check_env.py, luego beats.py "entrevista.mp4".
  2. beats.py informa: LANGUAGE: es, DURATION: 12.3s. La skill determina 5 bloques (>10–15s). Ejecuta beats.py --cuts 5 "entrevista.mp4".
  3. La skill agrupa palabras en frases, refina los límites y escribe supers candidatos.
  4. Punto de control: la skill presenta la tabla de frases, los bloques sugeridos con supers y la plantilla. Pregunta sobre ajustes.
  5. El usuario acepta todo. La skill rellena las marcas de tiempo y los supers, guarda entrevista_kinetic_multicam_prompt.txt y ejecuta verify_prompt.py.
  6. PASS. La skill entrega el prompt en un bloque de código y recuerda al usuario que lo pegue en Seedance 2.0 Fast con entrevista.mp4 como metraje fuente.

Individual skills in this repo

This repo contains 1 individual skill — each has its own dedicated page.

Skills relacionados