PTENES
Content factory · real person

One photo becomes comic book.

I provide a photo (or a description) and a story. The artifacts come out with the same consistent person: character sheet → comic page → narrated motion comic. All local.

Character reference sheet (model sheet) generated by inemaref
What it is

The reference is the central asset

Making comics with real people always runs into the same problem: keeping the character consistent across panels, pages, and episodes. inemaref handles the reference (the person's model sheet) as step 0 that locks everything in — and reuse it in every subsequent artifact.

🔒 Locked reference

One sheet (portrait + bio + traits + grid) becomes the character’s source of truth across pages, video, and episodes.

🧱 Textless + layer

The image engine generates artwork without text; narration, speech bubbles, and SFX are rendered as an HTML/CSS layer — editable and crisp.

🖥️ Local and deterministic

Image with flux2-klein (inemaimg), voice with inemavox, editing with ffmpeg/Chromium. No cloud, no subscription.

How it works

How the factory works

Three skills built so far (folder → comic → motioncomic). Series and film are next, reusing INEMA’s video ecosystem.

📸 Photo / Story→ 🪪 Folder→ 🗯️ Comic→ 🎬 Motion comic→ 📚 Series→ 🎞️ Film

🪪 folder

Create the reference. The character sheet (portrait + bio + traits + grid) from 1 photo or text. 2 layouts × 2 artworks.

🗯️ quadrinho

Build the page. 6 textless panels (black-and-white manga) + speech bubbles/SFX/captions on a layer, with careful face-aware placement. 2 grid templates.

🎬 motioncomic

Becomes a video. Form A: narrated slideshow. Form B: the camera films the real paper page, diving into each panel.

Prerequisites

What needs to be up and running

Local services in the INEMA ecosystem. The skills communicate with them over HTTP; nothing goes to the cloud.

🖼️ inemaimg (flux2-klein)

Image engine, in localhost:8000. Generates textless panels.

# check
curl localhost:8000/health

🔊 inemavox

Local TTS (bella/rachel cloned voice), in 127.0.0.1:7860. Only in the motion comic.

# check
curl 127.0.0.1:7860/health

🛠️ ffmpeg + Chromium

Render the HTML to PNG and assemble the MP4. Python 3 and OpenCV (face).

# run the tests
for t in skill/*/tests/test_*.py;
do python3 "$t"; done
User guide · step by step

From photo to motion comic

Each skill is a Python pipeline you run from the repo root. The output goes to output/<id>/ (gitignored).

1

Create the reference (folder)

Build a ficha.json (name, reusable appearance, 5 focal points) and generate the character sheet.

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")   # output: output/<id>/folder.png + referencia.json
PY
2

Build the comic book page

One roteiro.json with exactly 6 panels (textless scene + optional narration/dialogue/SFX). Reuse a aparência from the reference to keep the person.

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",  # or manga-dinamico
    arte="manga")                                    # output: output/<id>/pagina.png
PY
3

Turn it into a video — camera over the page (motioncomic, Forma B)

Script with pages of 6 panels. The camera opens on the page, dives into each panel during the narration, pulls back, and moves into the next one. Requires inemavox to be running.

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")   # output: output/<id>/<id>-travel.mp4
PY
3b

Alternative — narrated slideshow (Form A)

When you don’t need the assembled page: one image at a time, with zoom and voice-over narration.

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

What each step produces

Sheets and pages generated in the pipeline; the motion comic frame shows the camera diving into a panel on the paper page.

Character reference sheet
folder — the reference sheet that locks in the person.
Cartoon comic page
comic — page assembled: panels + speech bubbles/captions on a layer.
Motion comic frame with the camera inside a panel
motioncomic (Forma B) — the camera dives into a panel on the page.
Complete 2x3 comic page
The real paper page (2×3 grid) that the camera travels across.
Roadmap

V1 built; series and film up next

The foundation (reference → page → video) is ready and tested. What comes next reuses the existing video ecosystem.

V1 ✅
Reference → page → motion comicThe 3 skills built and validated: folder, quadrinho, and motioncomic (Form A slideshow + Form B camera over the page).
Open
Faithful photo modeLock the real person’s face in the generation (qwen-edit) — currently stable only in text/description mode.
V2
Series / episodesMultiple pages, a carousel, and channel episodes, all keeping the same reference.
V3
MovieBecomes a long video by reusing INEMA’s videoprodutor.