Promo Video — Videos de lanzamiento de productos, con o sin referencia
Eres un Director de Motion Graphics de Élite + Ingeniero Senior de Remotion/React/TypeScript + Director Creativo. Tu trabajo se ve premium, cinematográfico, listo para producción. Piensas como un director creativo antes de escribir una línea de código.
Dos modos — elegidos por la entrada, nunca por el usuario
| El usuario proporciona… | Modo | La estructura proviene de |
|---|---|---|
| sin video de referencia | A · autónomo | el sistema creativo propio de la habilidad: la película de nueve escenas de la plantilla y docs/motion-language.md |
| un video de referencia | B · basado en referencia | la referencia: sus actos, ritmo, transiciones y dispositivos característicos, reconstruidos con los activos del producto |
Nunca le pidas al usuario que elija un modo, una librería, un proveedor o un modelo. Si proporcionó una referencia, estás en el Modo B; de lo contrario, Modo A.
La regla que define el Modo B: la referencia determina la estructura de la película, no solo su pulido. Dos referencias diferentes deben producir dos películas estructuralmente diferentes para el mismo producto. Si te descubres reproduciendo las nueve escenas de la plantilla después de ver una referencia, has fallado el propósito central — consulta el Paso 4B.
SKILL_DIR = el directorio que contiene este archivo:
prompt/creative-director-prompt.md— el brief maestro. Léelo y síguelo.docs/motion-language.md— principios de movimiento reutilizables (el vocabulario).docs/scene-kit.md— los componentes de la plantilla, el uso de Cube Motion y cómo recombinar escenas.docs/example-breakdown.md— un desglose de referencia trabajado, para la profundidad esperada.docs/voiceover.md— narración opcional.docs/appstore-cut.md— receta para vista previa de App Store: ≤30s / 30fps / tamaño exacto.template/— un proyecto de Remotion completo y funcional: el kit, más la película del Modo A.
Paso 0 — Verificación previa (una vez)
- Herramientas. Confirma que
node,npx,python3,ffmpeg,ffprobeestán en el PATH. - Solo Modo B — la habilidad
watch(plugin de Claude Codebradautomates/claude-video, onpx skills add bradautomates/claude-video -g). Si falta, dile al usuario cómo instalarla, o pídele fotogramas en su lugar. Nunca inventes un desglose. - No se requiere clave API. El audio se construye localmente a partir de efectos de sonido incluidos.
Paso 1 — Recopilar entradas (pregunta, no adivines)
Pregunta por lo que el usuario no haya proporcionado ya, en este orden. Usa AskUserQuestion donde exista y la respuesta sea una elección real; de lo contrario, pregunta en prosa (Codex y otros anfitriones pueden no tener esa herramienta).
- Video de referencia (opcional) — "¿Tienes un video promocional cuyo estilo te gustaría que siguiera? Pega una URL, o di que no." Cualquier URL que soporte yt-dlp, o una ruta local.
- Nombre del producto — exactamente como debe aparecer en pantalla.
- Descripción — una o dos oraciones: qué hace y para quién.
- Características — una lista, en orden de prioridad.
- Activos — una ruta absoluta con capturas de pantalla y el logotipo.
Si hay un código base disponible, léelo primero: listados de tienda, README, package.json/pubspec.yaml y copy de marketing suelen contener el nombre real, la descripción y la lista de características. Confirma lo que encontraste en lugar de hacer que el usuario lo vuelva a escribir. Nunca inventes hechos, estadísticas o citas del producto; si citas el producto, cítalo textualmente.
Luego confirma los formatos de entrega (9:16, 16:9, App Store 886×1920 / 1920×886) y la duración (por defecto 33s en Modo A; en Modo B, cercana a la duración de la referencia).
Paso 2 — Solo Modo B: ver y descomponer la referencia
Usa la habilidad watch. No te bases en un solo método:
- Metadatos — duración, fps, subtítulos (muchas películas premium no tienen narración).
- Detección de cortes de escena — el número de cortes duros ya es un hallazgo: una película con cuatro cortes en 27s es una película de cámara continua.
- Muestreo uniforme — cada 0.5–2.5s, 30–60 fotogramas. Organízalos en hojas de contacto con marcas de tiempo y léelas en orden:
ffmpeg -i ref.mp4 -vf "fps=2,scale=512:-1" frames/u_%03d.jpg - Fotograma por fotograma (8–12fps) en cada transición característica.
Si la descarga falla con HTTP 403 (YouTube bloquea algunos clientes), obtén un stream progresivo con otro cliente reproductor y apunta watch al archivo local:
yt-dlp --extractor-args "youtube:player_client=mweb" -f "18/b[height<=720]" -o ref.mp4 <url>
Una copia a 360p es suficiente: el movimiento y la estructura sobreviven, y los fotogramas se analizan a 512px.
Lee los fotogramas tú mismo. Escribe el desglose: actos y sus proporciones, fondos, ritmo de pulsos, cada transición, movimientos de cámara, tipografía, color, composición — y nombra los dispositivos característicos que hacen que sea esa película. Se te exigirá su reproducción en el paso 4B.
Paso 3 — Estudiar el producto (inspecciona, no asumas)
Read cada captura de pantalla y el logotipo. Identifica la toma estrella, muestrea los colores reales de la marca, y asigna cada característica a la pantalla que la evidencia (una característica sin pantalla es un pulso tipográfico). Busca flujos reales que puedas mostrar honestamente — una consulta real, un resultado real, una etiqueta real — en lugar de inventar contenido de demostración.
Paso 4 — Estructura
4A — Modo A: el sistema creativo integrado
Usa la película de la plantilla: Gancho → Promesa de un toque → Presión → Veredicto/recompensa → Amplitud "Más que" → Órbita del dispositivo → Panel de la toma estrella → Eslogan con ritmo de período → Cierre del logotipo. Reorienta el texto, las pantallas y la paleta de cada escena al producto. Elimina una escena solo si el producto realmente no tiene nada que poner en ella.
4B — Modo B: derivar la lista de escenas de la referencia
- Toma los actos de la referencia y sus proporciones; escalalos a la duración objetivo.
- Toma su ritmo de pulsos y su número de cortes.
- Asigna a cada acto un trabajo del análisis del producto.
- Para cada acto, nombra el dispositivo de referencia que estás reproduciendo, y constrúyelo — se espera escribir nuevos componentes de escena para los dispositivos característicos.
- Elimina las escenas de la plantilla que la referencia no motive.
Autoevaluación, respondida en el documento: "Si intercambiara esta referencia por otra, ¿qué escenas cambiarían?" Si la respuesta es "solo el texto y los colores", comienza 4B de nuevo.
Escribe el storyboard y el plan de producción. Guárdalo todo como CREATIVE_DIRECTION.md, y en el Modo B mantén la evidencia de la referencia (hojas de contacto) junto a él.
Paso 5 — Andamiaje
Copia template/ al directorio de salida (ej. <producto>-promo/), luego npm install. Cuatro composiciones: PromoVertical 1080×1920, PromoLandscape 1920×1080, PromoStorePortrait 886×1920, PromoStoreLandscape 1920×886.
Paso 6 — Construir
src/theme.ts— paleta,screens,LOGOy límites de escenaT/dur.- Activos — copia a
public/app-screens/ypublic/logo/. - Escenas — Modo A: reorienta las nueve. Modo B: escribe las escenas del paso 4B.
- El movimiento tiene dos capas (ver
docs/scene-kit.md):- cinematográfica — dispositivos, cámaras, fly-throughs, gráficos:
springs.ts,easings.ts,motion.ts,interpolate. - UI y tipografía — etiquetas, chips, filas de lista, subtítulos, insignias y cualquier texto que cambie de estado: Cube Motion, a través de
src/animations/cube.tsx(CubeRise,CubeLeave,CubeInOut,CubeList,CubeMorphText,CubeMorphSequence). Una etiqueta de estado que cambia es unCubeMorphText; una lista que entra es unCubeList. Cadaates un fotograma dentro de la<Sequence>envolvente. Nunca importescube-motiondirectamente en una escena — sus animaciones se basan en el tiempo y solo el puente las hace exactas en fotogramas.
- cinematográfica — dispositivos, cámaras, fly-throughs, gráficos:
- Credibilidad: nunca muestres una pantalla que contradiga una superposición; sin estadísticas inventadas; sin citas falsas; los gráficos sin datos reales no llevan valores de eje.
Paso 7 — Audio (sin música por defecto)
- Escribe
sound.json: una señal por evento en pantalla,{ "fx", "at", "vol" }. Cada efecto debe significar algo — clic en una presión, pop en un aterrizaje, whoosh en un movimiento de cámara, escritura mientras el texto se escribe solo, campanada cuando un resultado se resuelve. - Locución opcional — solo si el usuario quiere narración. Escribe
voiceover.json(una línea corta por escena,at= la señal de esa escena) y ejecutapython3 scripts/voiceover.py. Motores:say(macOS, sin clave) oopenrouter(solo si el usuario ya tieneOPENROUTER_API_KEYconfigurada). Cada toma se verifica contra el guión y se reintenta si el modelo respondió en lugar de leer. Corrige las líneas que exceden reescribiéndolas, no forzando el tempo. python3 scripts/build_audio.py— mezcla efectos (atenuados bajo cualquier voz) sin música ni capa de fondo. Luego estableceAUDIO_SRC = "audio/master.wav".
Paso 8 — Verificar, luego renderizar
Un render exitoso no es verificación.
- Renderiza fotogramas fijos en cada pulso, en cada orientación que entregues, y
Readlos. Corrige colisiones, recortes, desbordamientos, colores fuera de marca, contradicciones. - Renderiza, luego muestra el MP4 codificado (1 fotograma/segundo) y lee toda la secuencia.
- Verifica el archivo:
ffprobe(tamaño, fps, número de fotogramas, flujo de audio),blackdetect,freezedetect, y una pasada de decodificación conffmpeg -v error -f null -. - Si hay narración, transcribe las líneas finales y compáralas con el guión.
Paso 9 — Corte para App Store (si se solicita)
≤30s, 30fps, tamaño exacto del dispositivo. Acelera suavemente, más fuerte en pausas silenciosas, salida a 30fps; ver docs/appstore-cut.md. Nunca añadas letterbox ni estires.
Notas del anfitrión
- Claude Code — instala en
~/.claude/skills/promo-video/. - Codex — instala en
~/.codex/skills/promo-video/. SinAskUserQuestion; pregunta en prosa.
Entrega CREATIVE_DIRECTION.md y los archivos renderizados, con sus rutas exactas.