Estudio de Video Demo
Convierte una aplicación web en funcionamiento en una película demo pulida: interacción real grabada (ni presentación de diapositivas, ni simulación) + narración TTS local + subtítulos sincronizados por palabra + una banda musical ambiental, compuesta de manera determinista con HyperFrames.
Cuándo usarlo
Al crear cualquier video de demostración / recorrido / producto / lanzamiento / hackathon de una aplicación web, especialmente cuando se deba mostrar el producto real en ejecución con narración y subtítulos. Graba una URL desplegada o un servidor de desarrollo local.
Pipeline
① grabación Playwright maneja tu aplicación en vivo, cursor visible → out/clips/*.webm
② narración escribe VO por escena → Kokoro TTS (local) → narración/*.wav
③ transcripción Whisper marcas de tiempo por palabra → *.transcript.json
④ subtítulos agrupar en frases + corregir nombres de marca → captions.js
⑤ música ffmpeg fondo ambiental (mezclado bajo la voz) → music/bed.wav
⑥ composición HTML de HyperFrames en una sola línea de tiempo: clips+voz+subtítulos+música → MP4
La grabación y la composición son independientes: puedes regrabar una escena o volver a ejecutar la narración sin rehacer la otra. Una pista GIF generada por código (escenas HTML renderizadas directamente a MP4, sin grabación) es una ruta alternativa opcional para páginas de documentación.
Flujo de trabajo
- Entiende el producto primero. Lee su README / documentación de demostración. Escribe un Flujo de Demo antes de tocar las herramientas: problema → recorrido del producto → evidencia → conclusión. Elige la ruta de clic recomendada y el resultado visible que debe alcanzar cada escena. Consulta references/templates.md.
- Graba. Copia
scripts/record.mjs, estableceAPPySIZE, reemplazascenescon tu coreografía (deslizar → pausa → actuar → mantener). Graba a escala de dispositivo 1:1.node scripts/record.mjs [scene]. Motor + ejemplo práctico: references/recording.md. - Narrar → subtitular. Escribe un archivo
assets/narration/NN-*.txtpor escena en voz de narrador (le estás hablando a un espectador, no leyendo un README). Luego:bash scripts/tts.sh && bash scripts/transcribe.sh && node scripts/build-captions.mjs. EditaPHRASE_FIXenbuild-captions.mjspara tus nombres de marca. Guía: references/narration-and-captions.md. - Componer y renderizar. Comienza desde references/composition-skeleton.html (un clip + pista de subtítulos + audio), expande la línea de tiempo, luego
npx hyperframes render . --resolution landscape --fps 30 --crf 17 --quality high. Renderiza 1:1 (1080p creado → 1080p de salida) — nunca escales a 4K, ya que suaviza la interfaz. references/composition.md. - Control de calidad antes de enviar. ffprobe la duración/audio, toma una muestra de 1–2 fotogramas (que no sean negros ni vacíos), subtítulos dentro del marco, narración sin cortes, la página de resultados clave realmente visible. Corrige el flujo/temporización, luego vuelve a renderizar.
Inicio rápido
# dependencias del sistema
brew install node ffmpeg
npx playwright install chromium
# Entorno Python para TTS local + transcripción (una vez)
python3 -m venv .ttsvenv && .ttsvenv/bin/pip install kokoro-onnx soundfile
export PATH="$(pwd)/.ttsvenv/bin:$PATH"
# 1) grabar 2) narrar 3) subtitular 4) componer+renderizar
node scripts/record.mjs
bash scripts/tts.sh && bash scripts/transcribe.sh && node scripts/build-captions.mjs
npx hyperframes render . --resolution landscape --fps 30 --crf 17 --quality high --output out/demo.mp4
La primera ejecución de TTS descarga ~340 MB (Kokoro), la primera transcripción ~466 MB (Whisper small.en); ambos se almacenan en caché en ~/.cache/hyperframes/.
Reglas difíciles de aprender
- La interacción real supera a las diapositivas — graba el producto realmente en ejecución.
- 1:1, nunca escalado 2× — grabar a 2× DPR y renderizar a 4K suaviza cada clip de la interfaz. Crea y renderiza a 1080p.
- Composición determinista — sin
Date.now(),Math.random()ni red en el HTML; HyperFrames busca fotogramas, por lo que el movimiento debe ser reproducible. - Cursor visible + mantener los resultados — desliza deliberadamente, pausa en el momento clave.
- VO, no documentación — la narración sigue la imagen; no es el README leído en voz alta.
- El video es ≥ la narración — añade tiempo al clip para que lo visual nunca termine antes que la voz.
Dependencias
Node 22+, FFmpeg, Playwright (Chromium) y la CLI de HyperFrames (npx hyperframes, instala sus habilidades con npx skills add heygen-com/hyperframes). TTS/Whisper local necesitan Python + kokoro-onnx. Consulta references/composition.md para la configuración de HyperFrames.
Referencias
- references/pipeline.md — las seis etapas y el flujo de datos
- references/recording.md — motor Director + ejemplo práctico + errores comunes de grabación
- references/narration-and-captions.md — escritura de VO, TTS, Whisper, correcciones de subtítulos
- references/composition.md — línea de tiempo de HyperFrames, fundidos, 1080p, renderizado
- references/composition-skeleton.html — composición mínima renderizable para copiar como index.html
- references/templates.md — estructuras de hackathon + demo de producto y esqueletos de VO
- references/troubleshooting.md — subtítulos, pantalla blanca, audio, fuentes