Historia original, narración por escena, ilustraciones stick-figure consistentes y un MP4 16:9 montado con FFmpeg. Sin pagar por un generador de imágenes ni de videos.

Formato sencillo y repetible: una historia motivacional, una voz, ilustraciones que cambian a medida que avanza la narración. videomotival automatiza todo el formato, desde la idea hasta el MP4, con todo funcionando en tu máquina.
Un LLM (OpenRouter, Groq u Ollama local) escribe una historia original con un arco de seis movimientos y la divide en escenas: narración, descripción visual y prompt de imagen.
Cada escena se convierte en un MP3 separado (inemavox, voz clonada rachel). La duración del audio determina cuánto tiempo permanece la imagen en pantalla: sin Whisper ni timestamps.
flux2-klein en la GPU local genera una ilustración 16:9 por escena, con el mismo estilo y el mismo personaje. FFmpeg aplica un zoom lento, incorpora el título y concatena el video final.
El pipeline es determinista y se puede retomar: cada etapa guarda sus archivos en la carpeta de la ejecución y omite lo que ya existe. Puedes parar para revisar el guion antes de usar la GPU o ejecutar todo de una vez.
Interfaz web local (revisión visual de las escenas, regenerar una ilustración, rehacer la voz), CLI por etapa y una skill de Claude Code que orquesta todo a partir de "haz un video de 90 s sobre X".
El pipeline agrega el estilo visual, la biblia del personaje y el bloque "sin texto" a cada prompt; no lo hace el modelo. Solo la escena 1 recibe un título, que se graba con FFmpeg con el texto exacto.
~/projetos/output/videomotival/<run>/
├── final.mp4
├── manifest.json
└── work/
├── story.md · transcript.md · scenes.json
├── audio/001.mp3 …
├── images/001.png …
└── video/001.mp4 …Todo local. Ninguna clave llega al repositorio: las claves de LLM se leen en tiempo de ejecución desde los archivos secretos de la máquina.
ffmpeg/ffprobe para medir, renderizar y concatenar; Pillow para el título; FastAPI solo para la interfaz web.
pip install -r requirements.txt python3 -m videomotival check
Daemon de TTS en localhost:8010. Predeterminado: engine chatterbox con la voz clonada rachel. Para pruebas rápidas sin GPU, engine edge.
# voz de prueba, sin GPU
--engine edge --voice pt-BR-FranciscaNeuralServidor en localhost:8000 con el modelo flux2-klein cargado. Genera imágenes de 1920x1080 en unos 12 segundos por escena.
# proveedores de historias, en orden STORY_PROVIDER=auto # openrouter → groq → ollama
El mismo flujo del tutorial original, etapa por etapa, para que revises lo que quieras durante el proceso. Al final, el paso único que lo hace todo.
Verifica ffmpeg, los dos servicios locales y qué proveedor de historias tiene una clave disponible. Nunca imprime secretos.
cd ~/projetos/videomotival python3 -m videomotival check # OK ffmpeg · historia: auto · inemavox ok · inemaimg ok
Escribe la historia, la divide en escenas y se detiene en "revisión". Los archivos quedan en work/ dentro de la carpeta de la ejecución.
python3 -m videomotival create --topic "Pare de esperar a motivação" --duration 75 # → ~/projetos/output/videomotival/<run-id>/work/{story.md, transcript.md, scenes.json}
Edita la narración o la descripción visual directamente en scenes.json. O recompose recompone los prompts e invalida solo las escenas modificadas.
python3 -m videomotival recompose --run <run-id>
Un MP3 por escena (001.mp3, 002.mp3…), medido con ffprobe. El ritmo real en palabras por minuto queda registrado y se usa para orientar al guionista en las próximas ejecuciones.
python3 -m videomotival tts --run <run-id> # [probe] 5 narraciones: 58.3s medidos para un objetivo de 60s
Una imagen 16:9 por escena, la misma seed y la misma biblia del personaje en cada prompt. ¿Una escena salió mal? Regénérala solo a ella con otra seed.
python3 -m videomotival images --run <run-id> python3 -m videomotival regen-image --run <run-id> --scene 3 # nueva seed solo para la escena 3
Cada par de imagen + audio se convierte en un clip con zoom lento alternado; la escena 1 recibe el título; los clips se concatenan y se verifica el resultado (1920x1080, audio, duración).
python3 -m videomotival render --run <run-id> [--music trilha.mp3] # → ~/projetos/output/videomotival/<run-id>/final.mp4 + manifest.json
Una vez ajustado el formato, solo cambia el tema. Este comando ejecuta las siete etapas sin detenerse.
python3 -m videomotival create --topic "Por que o progresso pequeno vence a motivação grande" --duration 90 --auto
La web muestra las etapas, las escenas con audio e imagen, permite editar el guion y volver a generar. La skill de Claude Code hace lo mismo mediante conversación.
./run.sh web # → http://127.0.0.1:8030 # en Claude Code, dentro del proyecto: "Use a skill motivational-story-video: vídeo de 90 s sobre 'Como parar de se comparar'"
Tema "Por qué el progreso pequeño vence a la motivación grande": 5 escenas, voz rachel, 58 s medidos, producido de principio a fin en unos cuatro minutos.




La arquitectura es la misma para cualquier nicho: historia de negocios, cuento infantil, hecho histórico. Cambia el guionista y el estilo visual.