July 28, 2026 · 4 min read
Building Tsuyu in Public: The Week My AI Video Machine Fought Back
TL;DR — I collapsed tsuyu's manga-video flow into a single button: pick a story → it scripts, draws the panels, voices, and renders itself. Getting there meant fixing an AI panel generator that only ever finished the first panel (throttling — solved with pacing + retries), surviving a mid-week image-bot token death, and shipping a per-user asset library so nothing generated is wasted. Also: I caused a 2.5-minute outage with a database migration collision, recovered it, and wrote the postmortem. The video below was generated by tsuyu itself.
I made a 60-second version of this story. Fittingly, tsuyu generated the video itself — script, voice, panels, and all.
This is the longer, messier version.
The goal: one button
tsuyu turns a story into a finished video. But until recently, "turn a story into a video with AI-drawn comic panels" meant clicking through a handful of separate steps — generate the panels over here, wait, then go start the video over there. It worked, but it was the kind of flow you have to explain. That's a bug, not a feature.
So this cycle I collapsed it into a single button. You pick a story, hit Generate, and the machine does the rest on its own: it writes the script, draws the panels straight from that script, voices the narration, stitches it into motion, and renders. No wizard. Just go. Simple to describe. Not simple to build.
The panel that wouldn't stop being the only panel
The comic panels are drawn by an AI image model, one at a time. My first version had a maddening bug: it would draw the first panel beautifully… and then quietly give up on the rest. The root cause wasn't the code I was staring at — it was the image service throttling me. Fire six requests in a row and it starts refusing. My generator took the first refusal as "done." The fix was to teach it patience: pace the requests, and when one gets throttled, back off and try again — a little longer each time — until it lands. Now it draws all six, every time. It's slower, but "slower and complete" beats "instant and broken" every single day.
The morning the bot died
Then, mid-week, the thing that talks to the image model just… stopped working. No warning, no deploy, nothing I changed. Every render broke at once. Turns out the login token it uses had been invalidated upstream. Ten minutes of confusion, one rotated key, and it came back to life. Not glamorous — but this is the tax you pay for wiring together services that were never meant to be wired together. I wrote down how to spot it faster next time.
Nothing gets thrown away
The other big piece: every creator now has their own asset library. Before, the images the machine generated were used once and effectively lost. Now they're catalogued — you can browse them, reuse them in your next video for free, and (if you're on the paid tier) upload your own images, GIFs, and short clips into the same library. Reuse is the strongest lever against the exact throttling problem above: the cheapest render is the one you don't have to make.
The humbling part
I'll be honest about the low point. I pushed a database change, and — because two of my updates got assigned the same version number in a race I didn't see coming — the migration step blew up after the old services had already shut down. The whole site went dark for two and a half minutes. I got it back, but the real fix wasn't the two-minute recovery. It was writing down exactly why it happened so it can never bite me the same way twice. In solo building, a postmortem you actually keep is worth more than the uptime you lost.
A few smaller wins, too
- A public "What's New" page so the product visibly evolves in the open.
- Quick-publish straight from a video card, with sane defaults (public, not private — the way you'd expect).
- A fix I only found by dogfooding: the Discover page happily accepted any typed subreddit and then forgot it on reload. Now it remembers your list and checks that the subreddit is actually real before saving.
The takeaway
That's the honest rhythm of building alone. Some days you ship something that genuinely feels like magic. Some days the thing you built breaks the thing you built. You fix it, you write down the lesson, and you ship again. And the proof is the video at the top of this post. If the machine can tell this story on its own… imagine what it'll do with yours.
See what the machine builds next
Pick a story, hit Generate, watch it script, draw, voice, and render itself.
Try it at tsuyu.io