PTENES
Fábrica de contenido · persona real

Una foto se convierte en historia de cómic.

Parto de una foto (o una descripción) y una historia. Los artefactos resultantes mantienen la la misma persona de forma consistente: ficha del personaje → página de cómic → motion comic narrado. Todo local.

Ficha de referencia (model sheet) de un personaje generada por inemaref
Qué es

La referencia es el activo central

Crear cómics con personas reales siempre tropieza con el mismo problema: mantener al personaje igual entre cuadros, páginas y episodios. inemaref aborda la referencia (el model sheet de la persona) como el paso 0 que lo define todo — y la reutiliza en cada artefacto siguiente.

🔒 Referencia bloqueada

Una ficha (retrato + bio + rasgos + cuadrícula) se convierte en la fuente de verdad del personaje y se mantiene en la página, el video y los episodios.

🧱 Sin texto + capa

El motor de imagen genera solo el arte sin texto; la narración, los globos y los SFX son una capa HTML/CSS renderizada, editable y nítida.

🖥️ Local y determinista

Imagen con flux2-klein (inemaimg), voz con inemavox, montaje con ffmpeg/Chromium. Sin nube, sin suscripción.

Cómo funciona

El flujo de la fábrica

Tres skills creadas hoy (folder → cómic → motioncomic). La serie y la película vienen después, reutilizando el ecosistema de video de INEMA.

📸 Foto / Historia→ 🪪 Folder→ 🗯️ Cómic→ 🎬 Cómic animado→ 📚 Serie→ 🎞️ Película

🪪 folder

Crea la referencia. La ficha del personaje (retrato + bio + rasgos + cuadrícula) a partir de 1 foto o texto. 2 diseños × 2 artes.

🗯️ cómic

Arma la página. 6 cuadros sin texto (manga en blanco y negro) + globo/SFX/leyenda en capas, con ubicación cuidadosa respecto al rostro. 2 modelos de cuadrícula.

🎬 cómic animado

Se convierte en video. Forma A: slideshow narrado. Forma B: la cámara filma la página de papel real y se sumerge cuadro a cuadro.

Requisitos previos

Qué debe estar listo

Servicios locales del ecosistema INEMA. Las skills se comunican con ellos por HTTP; nada va a la nube.

🖼️ inemaimg (flux2-klein)

Motor de imagen, en localhost:8000. Genera los cuadros sin texto.

# verificar
curl localhost:8000/health

🔊 inemavox

TTS local (voz clonada bella/rachel), en 127.0.0.1:7860. Solo en el motion comic.

# verificar
curl 127.0.0.1:7860/health

🛠️ ffmpeg + Chromium

Renderizado del HTML a PNG y creación del MP4. Python 3 y OpenCV (rostro).

# ejecutar las pruebas
for t in skill/*/tests/test_*.py;
do python3 "$t"; done
Guía de uso · paso a paso

De la foto al motion comic

Cada skill es un pipeline de Python que ejecutas desde la raíz del repo. El resultado se guarda en output/<id>/ (ignorado por git).

1

Crea la referencia (folder)

Arma una ficha.json (nombre, apariencia reutilizable, 5 enfoques) y genera la ficha del personaje.

python3 - <<'PY'
import sys, json
sys.path.insert(0, "skill/folder/scripts")
from build_folder import build_folder
ficha = json.load(open("CAMINHO/ficha.json"))
build_folder(ficha,
    template_dir="skill/folder/templates/editorial-revista",
    arte="cartoon", modo="texto")   # salida: output/<id>/folder.png + referencia.json
PY
2

Arma la página de cómic

Un roteiro.json con exactamente 6 paneles (escena sin texto + narración/diálogo/SFX opcionales). Reutiliza a aparência de la referencia para mantener a la persona.

python3 - <<'PY'
import sys, json
sys.path.insert(0, "skill/quadrinho/scripts")
from build_pagina import build_pagina
rot = json.load(open("CAMINHO/roteiro.json"))
build_pagina(rot,
    template_dir="skill/quadrinho/templates/grade-uniforme",  # o manga-dinamico
    arte="manga")                                    # salida: output/<id>/pagina.png
PY
3

Conviértelo en video: cámara sobre la página (motioncomic, Forma B)

Guion con páginas de 6 cuadros. La cámara se abre en la página, se sumerge en cada cuadro durante la narración, se aleja y encaja en el siguiente. Necesita que inemavox esté funcionando.

python3 - <<'PY'
import sys, json
sys.path.insert(0, "skill/motioncomic/scripts")
from build_travel import build_video_travel
rot = json.load(open("CAMINHO/roteiro.json"))
build_video_travel(rot, voice="bella", arte="manga")   # salida: output/<id>/<id>-travel.mp4
PY
3b

Alternativa — slideshow narrado (Forma A)

Cuando no necesitas la página armada: una imagen a la vez, con zoom y narración en voz en off.

from build_motion import build_video
build_video(rot, voice="bella")             # salida: output/<id>/<id>.mp4
Ejemplos

Qué se obtiene en cada etapa

Fichas y páginas generadas en el pipeline; el frame del motion comic muestra la cámara sumergiéndose en un cuadro de la página de papel.

Ficha de referencia del personaje
folder — la ficha de referencia que fija a la persona.
Página de cómic estilo cartoon
cómic — página montada: viñetas + globos/subtítulos en capas.
Frame del motion comic con la cámara dentro de un cuadro
motioncomic (Forma B) — la cámara se sumerge en una viñeta de la página.
Página de cómic completa en cuadrícula de 2x3
La página de papel real (cuadrícula 2×3) por la que viaja la cámara.
Hoja de ruta

V1 construida; la serie y la película, pendientes

La base (referencia → página → video) está lista y probada. Lo que sigue reutiliza el ecosistema de video existente.

V1 ✅
Referencia → página → motion comicLas 3 skills creadas y validadas: folder, cómic y motioncomic (Forma A slideshow + Forma B cámara sobre la página).
Pendiente
Modo de foto fielFijar el rostro de una persona real en la generación (qwen-edit): hoy es estable solo en el modo de texto/descripción.
V2
Serie / episodiosVarias páginas, un carrusel y episodios de un canal, manteniendo la misma referencia.
V3
PelículaSe convierte en un video largo al reutilizar el videoproductor de INEMA.