¿Qué hace promo-video?
Una película se crea en seis etapas. Cada etapa termina con algo que el humano revisa. No te adelantes: la etapa costosa (la construcción) solo es barata si las anteriores están resueltas, porque cada evento visual se coloca en relación con la música y la voz.
Dile el plan al humano una vez al inicio (README.md tiene la versión para el humano), luego ejecuta las etapas en
orden. Háblale en su idioma. Mantén todos los archivos del proyecto en un directorio (<project>/: audio/, vo/,
PLAN.md, elevenlabs.md, el proyecto Remotion en video/).
| # | Etapa | Tú haces | Humano hace | Referencia |
|---|---|---|---|---|
| 1 | Música | analiza la pista, encuentra el tempo real y los marcadores duros | elige la pista en Epidemic Sound, usa Create a cut para la duración, te da el archivo | references/01-music.md |
| 2 | Storyboard | haz las preguntas guía, escribe PLAN.md (tabla de tomas sincronizada con la música) | responde, aprueba | references/02-storyboard.md |
| 3 | Guion de voz | escribe las líneas + la toma etiquetada de ElevenLabs | la genera en ElevenLabs, envía el archivo | references/03-voiceover.md |
| 4 | Editar la voz | abre cut_ui.py en la toma, luego divide, nivela, coloca cada línea | hace clic entre las líneas en la página del navegador, presiona Hecho; revisa la tabla de colocación | references/03-voiceover.md |
| 5 | Construcción | proyecto Remotion desde template/, escena por escena, revisa cada una con imágenes fijas | revisa imágenes fijas / un render borrador | references/04-build.md |
| 6 | Revisión y pulido | renderiza, verifica el volumen, abre review_ui.py en el render, lee sus notas y fotogramas, corrige, re-renderiza | mira en la página de revisión, deja notas en la imagen, elige Aprobado / Necesita cambios | references/05-review.md |
Automatización del navegador: ofrécela, nunca la asumas
Las etapas 1 y 3 ocurren en sitios web (Epidemic Sound, ElevenLabs). Si hay disponible una herramienta o skill
de automatización del navegador (ej. ego-browser, una configuración de Playwright, un MCP de navegador), ofrécete
a hacer esas partes tú mismo, y di claramente lo que eso implica antes de pedir un sí:
- Cuentas: ambos sitios requieren una cuenta (Epidemic Sound es una suscripción de pago con prueba; ElevenLabs tiene un nivel gratuito con un límite mensual de caracteres). Si el humano no tiene ninguna, él se registra: tú no creas cuentas.
- Coste: ElevenLabs cobra por caracteres; una película de 40-60 s son ~600-1000 caracteres, y cada regeneración se cobra de nuevo. Las descargas de Epidemic cuentan contra el plan. Indícales el gasto esperado y pregunta primero.
- Inicio de sesión y pago son del humano: entrega el navegador (
task.handOff()en ego-browser) para el inicio de sesión, 2FA, captchas y cualquier pantalla de pago; reanuda después de que digan que han terminado. Nunca escribas su contraseña, nunca introduzcas ni almacenes datos de tarjeta, nunca pegues su clave API en una página o archivo. - Lo que puedes hacer después de un sí: buscar/filtrar pistas por el estado de ánimo y BPM acordados y abrir candidatos para que
las escuchen (ellos eligen), hacer clic en Create a cut con la duración objetivo y descargar el resultado; pegar la
toma de
elevenlabs.md, aplicar la voz y los ajustes que eligieron, generar una vez, descargar el mp3. - Sin dicha herramienta, o si rechazan: dales los pasos exactos (documentos de las etapas 1 y 3) y espera el archivo.
Las decisiones siguen siendo suyas: la pista y la voz nunca se eligen por ellos.
Reglas básicas (aprendidas por las malas)
- Todo lo mostrado es real. Mallas de ejemplo reales (teselar el CAD/STEP real), código y API reales en paneles de código, la interfaz reconstruida a partir de los propios componentes frontend del producto. El contenido de aspecto falso es lo único que los espectadores notan. Si no puedes obtener lo real, dilo y pregunta, no lo inventes.
- La música es el reloj. Mide el tempo real (
scripts/music_analyze.pylo ajusta; un BPM adivinado que está un 1,2 % desviado coloca un empalme a un tercio de un tiempo fuera y el humano oye un tropiezo). Todos los tiempos viven ensrc/marks.ts; las escenas los importan, nunca codifiques segundos. - Confirma los pasos externos o costosos: el archivo de música y la voz los elige el humano; tú nunca los eliges por ellos. Nunca imprimas claves API o tokens de inicio de sesión que aparezcan en el producto que filmas.
- Revisa las imágenes con fotogramas fijos, no por fe: renderiza los fotogramas en los marcadores (golpes de ritmo, cortes, el logotipo) y míralos antes de un render completo. Un render completo lleva minutos; un fotograma fijo lleva segundos.
- Mantén la versión anterior. Cuando el humano pida una versión reducida o variante, copia el directorio del proyecto y
edita la copia (
cp -R video video_short, enlaza simbólicamentenode_modules). - Informa como un editor: qué cambió, la ruta del archivo, qué escuchar/mirar y en qué segundo.
Herramientas de esta skill
Todos los scripts de Python se ejecutan con uv run (las dependencias se declaran en cada archivo; no hay nada que instalar).
| Script | Propósito |
|---|---|
scripts/music_analyze.py track.wav --out beats.json | BPM real (ajustado), cuadrícula de pulsos/compases, secciones, drop, silencios |
scripts/music_splice.py track.wav out.wav --beats beats.json --keep a:b --keep c:d | acorta una pista mediante un salto alineado a compases y con crossfade; verifica la unión |
scripts/cut_ui.py take.mp3 --mode cuts --script elevenlabs.md --out vo/cuts.json | página de corte en navegador (forma de onda, el guion mostrado línea por línea, voz vs pausas, zoom, deshacer/rehacer): el humano lo reproduce y hace clic donde termina una línea, presiona Hecho, la pestaña se cierra y cuts.json queda listo para ti. --mode marks --beats beats.json marca el drop/golpe/breakdown de la música en la cuadrícula de pulsos |
scripts/vo_cut.py take.mp3 --regions vo/cuts.json --out vo/ | divide una toma de ElevenLabs en clips nivelados + clips.json (o --lines N --ends t1,... si el humano prefiere escribir tiempos) |
scripts/review_ui.py out/promo.mp4 --out review/review.json [--overlay overlay.json] | página de revisión en navegador: monitor arriba, tira de línea de tiempo abajo (fotogramas + forma de onda de la mezcla final + pulsos/marcas/líneas de voz opcionales). El humano deja notas en un momento o en un rango; cada nota lleva el fotograma exacto; terminan con Aprobado / Necesita cambios y review.json queda listo para ti |
scripts/new_project.sh <dir> [--link-modules path] | proyecto Remotion desde template/ (escenario de metal, reloj de ritmo, mezcla de VO, cámara virtual) |
template/tools/mesh.py | formas STEP/OCC -> malla compacta + bordes B-rep para three.js |
template/tools/refold.py | borra las enormes cadenas de metadatos STEP que OCC no puede leer |
template/tools/variants.py, stages.py | variantes de parámetros de malla / cada sólido intermedio de un cuaderno CAD (para escenas de "arrastra un deslizador, el modelo sigue" y "célula por célula") |
Necesita: ffmpeg, node 20+, uv. Para three.js en Chrome sin cabeza: playwright's chrome-headless-shell
(new_project.sh lo instala).