generate-footage
El otro punto de entrada del plugin. video-use edita metraje que YA TIENES. Este skill
construye videos a partir de metraje que AÚN NO TIENES: narración más fotogramas clave estáticos,
compuestos y animados por HyperFrames, renderizados de forma determinista.
Pipeline (probado en producción; consulta docs/rca/ para saber por qué el paso de movimiento es
determinista):
guión (con etiquetas de audio v3)
→ narración eleven_v3 (scripts/tts_v3.py)
→ transcripción (npx hyperframes transcribe narration.mp3)
→ bloquear ventanas de escena a límites de oración (marcas de tiempo a nivel de palabra)
→ IMÁGENES DE CUALQUIER LUGAR (un fotograma clave por escena — ver más abajo)
→ composición animate-stills (recipes/04-animate-stills.md, build_scenes.py)
→ lint → render → QA de movimiento + audio (scripts/motion_check.py, hoja de contactos)
El orden importa: la voz PRIMERO, las imágenes después
Genera y transcribe la narración ANTES de construir cualquier composición o recolectar fotogramas clave. Los límites de las oraciones habladas son las ventanas de escena. Las lecturas v3 no son deterministas en su ritmo — una estimación de 120s puede resultar en 100s o 166s — por lo que las imágenes construidas primero siempre se reajustan.
Voz en off — ElevenLabs v3 con etiquetas de audio
scripts/tts_v3.py — solo biblioteca estándar, sin dependencias pip. Clave de $ELEVENLABS_API_KEY
o del archivo skills/video-use/.env del plugin.
python3 scripts/tts_v3.py --probe # verificar eleven_v3 + listar voces
python3 scripts/tts_v3.py --voice <id> --stability 0.0 --script SCRIPT.md --out narration.mp3
- Las etiquetas de audio van en el texto del guión:
[excited],[whispers],[softly],[dramatic tone],[warmly]. v3 las interpreta; v2 las ignora. - Estabilidad:
0.0= Creativo (máxima expresividad),0.5= Natural,1.0= Robusto. Una lectura "plana" se corrige bajando la estabilidad y reetiquetando el guión, no con palabras más fuertes. - Palancas de entrega: MAYÚSCULAS en palabras poderosas,
...para pausas dramáticas, contraste (bajar a[whispers]justo antes de una línea importante). - Audiciona 2-3 voces en la primera oración antes de comprometerte. La primera voz nunca es la elección.
- v3 puede parafrasear ligeramente. Transcribe y LEE el resultado; regenera si una línea clave se desvió.
Imágenes de cualquier lugar
Un fotograma clave es solo un PNG. Al pipeline no le importa de dónde vino.
Una imagen por escena, nombrada kf-NN.png, listada en el manifiesto de escena
(recipes/04-animate-stills.md documenta el esquema). Fuentes que funcionan:
- Herramientas de imagen por IA — cualquier herramienta de texto a imagen que ya tengas (Gemini, GPT image, Midjourney, SD local, o un actor alojado — ver la sección opcional al final). Genera a partir de instrucciones por escena con un sufijo de estilo fijo.
- Capturas de pantalla y fotos — capturas de IU de productos, material de archivo, escaneos, fotografía real. El tratamiento Ken Burns fue inventado para esto.
- HTML renderizado con HyperFrames — construye un marco HTML estilizado y captúralo; el motor produce sus propias imágenes.
Reglas de artesanía que aplican independientemente de la fuente:
- Fija UN estilo en DESIGN.md y aplícalo a cada fotograma. La deriva entre fotogramas se lee como tomas diferentes una vez que hay movimiento y gradación.
- Verifica el tipo de archivo. Algunas herramientas sirven JPEG con nombres .png;
comprueba los bytes mágicos antes de componer (
file kf-01.png). - QA de cada fotograma (lee la imagen). Un fotograma fuera de estilo es una regeneración, no una conservación. Verifica: artefactos de texto, marcas de agua, anacronismos, rostros en primer plano (riesgo de deriva), paleta incorrecta.
- Sin IP nombrada, sin semejanza de persona real viva en fotogramas generados para cualquier cosa publicada públicamente.
Animación — determinista, en el repositorio
Las imágenes se convierten en movimiento con la receta animate-stills
(recipes/04-animate-stills.md): una composición HyperFrames basada en manifiesto
aplicando lenguaje de cámara (push-ins, deriva, planos fijos) y atmósfera GSAP
(niebla, lluvia, cambios de luz, viñeta) sobre cada imagen, con ventanas de escena
bloqueadas en la transcripción. scripts/build_scenes.py genera las capas de escena a partir
del manifiesto; scripts/motion_check.py prueba el movimiento real mediante diferencia de píxeles
en la salida renderizada. Se renderiza idénticamente en cada ejecución, no cuesta nada, funciona
sin conexión.
Requiere Node >= 22 para el CLI de HyperFrames.
Subtítulos y ensamblaje
- Subtítulos incrustados (reproducción automática silenciada en Reddit/X), a nivel de frase, sincronizados con las palabras de la transcripción.
- Destello blanco (0.28s) en giros narrativos; fundidos suaves en otros lugares; viñeta oscura unifica imágenes de fuentes mixtas y hace que los subtítulos se lean bien.
- Verifica el movimiento en el renderizado: diferencia de píxeles en dos fotogramas separados por 4s
dentro de una misma escena (
scripts/motion_check.py— diferencia media en grises > 3 = movimiento real). - QA de audio:
ffmpeg -af volumedetect— el habla documental se sitúa cerca de -26 dB de media.
Opcional: herramientas generativas alojadas
NO son dependencias. Son una forma entre varias de obtener imágenes o clips, y pueden desaparecer sin previo aviso — planifica en consecuencia.
- Actores de texto a imagen de Apify (por ejemplo,
akash9078/ai-image-generator, ~$0.01/imagen) funcionaron bien para la generación por lotes de fotogramas clave. Vigila fallos silenciosos (ok:truecon una URL nula) y tipos de archivo mal etiquetados. - Los actores de imagen a video alojados son donde este pipeline tenía anteriormente su
paso de movimiento. El 2026-06-11 el actor
danitn11/wan22-lightning-image-to-video(2 usuarios totales) murió aguas arriba en medio de la producción y cada ejecución falló instantáneamente; el análisis completo está endocs/rca/rca-generate-footage-animation-2026-06-11.md. La generación de imagen a video ahora vive en un repositorio complementario separado con un backend BYO-key conectable; el paso de movimiento de este plugin es determinista y local.