Ai-Generating Manga Is Tough
It’s been a while, my last post here was July 2025, and most of what I’ve been doing since is a manga generator that I’m honestly not sure I can finish.
The Manga Machine
The idea is you write a short plot, pick a length and some tags, and a pipeline outlines the story, splits it into pages, expands scenes into panels, and generates the art. You get a book you can read in the browser or export as PDF or CBZ. The software side went fine. It’s eight stages, each one writes a file before the next reads it so a job can resume anywhere without paying twice, and the lettering is drawn by my code as SVG instead of by the model, with two bubbles per page and 60 characters per bubble at most.
The images are where it falls apart, and I think part of that is just me, since I was never good at getting decent output out of an image model and this project has made that very obvious. But the actual wall is consistency. A 25-page book in grid mode is about 125 panels, and if the protagonist’s hair is a different length in panel 60 the whole book is worthless. Faces drift, props change, expressions come out flat.
What I tried was mostly the obvious ladder. I froze each character’s visual description so it’s quoted word for word in every prompt, with a test that fails if anyone rewords it. Then I extracted it into fields like hair, build, outfit, with a fixed clause order because I’m told models lean harder on early tokens. Then one turnaround sheet per character drawn before any panel and attached to every generation they appear in, plus setting sheets, within each model’s limit on reference images. All of it helps a little. None of it makes 125 independent generations agree with each other, and a reference image conditions the model without telling it which part of the reference matters, so sometimes it grabs the wrong part.
I also built a team of agents to run the project, with an orchestrator, an architect, engineers and an escalation protocol so only real decisions reach me. They’re good at software and wrote a lot of docs and tests. They are bad at the one question that matters, which is what’s wrong with this picture.
The one place I got a clean, usable lesson is the text-detection ADR. Models sometimes render gibberish text into a panel, and I wanted QA to catch it for free, so I built three deterministic detectors: high-frequency energy in edge-dense regions, connected-component counts in a size band, and horizontal-run regularity. All three flagged good art as bad (heavy ink and screentone, hatching, panel borders and speed lines respectively). A false positive means a paid re-roll of a perfectly good panel, and that costs more than the defect it prevents, because the defect is rare and the false positive is not. I deleted them, and the rule now is that any deterministic check has to ship with a measured false-positive rate or it doesn’t ship.
Money, at least, isn’t the problem yet. The two live books I measured cost $1.28 for one page and $3.12 for five pages, with no retries on either, and on the small one 73% of the bill was reference sheets.
Right now it produces readable books that I wouldn’t want to read. I don’t know whether the gap is the pipeline, the models, or me, and until I do I’m not going to write the real post on it.
Smaller things
I rebuilt my NixOS and dotfiles setup into a flake that rebuilds a machine from scratch with one command, and I’m speaking about it at Ohio LinuxFest on November 20th and 21st. The write-up is Rebuilding My NixOS Machine With One Command, and I’ll post slides after. The old laptop is becoming a homelab and a host in that same flake, with Docker and Tailscale next, and that’s in The Go-Top Becomes a Homelab.
I also have a playbook repo of markdown files that lets an agent shop auction sites for me, where what finally worked was pulling the whole catalog and filtering it locally instead of guessing search terms.
