cd /news/artificial-intelligence/compiling-a-screenplay-into-a-limite… · home › topics › artificial-intelligence › article
[ARTICLE · art-166295] src=dev.to ↗ pub= topic=artificial-intelligence verified=true sentiment=↑ positive

Compiling a screenplay into a limited-animation series, checked shot by shot, rendered on one Mac

A developer built a pipeline that compiles a screenplay into a three-episode limited-animation series, The Brightwater Family — Picture Day, drawing every shot from a fixed library of character and location designs rather than generating each clip fresh. Every frame passes eight hard gates that block delivery on any failure, and a vision-language judge reviews each shot with flags routed to human review; the shipped episodes totaled roughly 40,000 frames with zero hard-gate failures, while 27, 15 and 39 judge flags remained after review in parts 1–3 respectively. In an earlier test of 162 candidate clips across 24 segments, the automated judge flagged 57% for background changes, camera drift or an impossible dog pose, and the render is deterministic so the same script, library version and seeds reproduce dialogue cuts frame for frame.

by read6 min views1 publishedNov 9, 2026

A screenplay compiled into a three-episode limited-animation series, with the same faces and rooms in every shot, every shot checked, rendered on one Mac.

Watch the series: [https://www.youtube.com/playlist?list=PLZOx3V-lNQb0](https://www.youtube.com/playlist?list=PLZOx3V-lNQb0) 

· Series page: [https://atveanimation.com/brightwater](https://atveanimation.com/brightwater)

I made The Brightwater Family — Picture Day on evenings and weekends: three episodes of about nine minutes each, about a family trying to get everyone ready for a photo appointment. For the last few months I have been working on one problem in AI video: keeping the same characters and the same world consistent across a whole

series, not just a clip. This is the solution I built for it, for limited animation.

Instead of generating each shot as a new video, I built a pipeline that turns the screenplay into animation from a fixed library of drawings and checks every shot before it ships. The series starts with a bible, the fixed designs of every character and place. New episodes reuse the drawings, locations, voices, music, and checks, so

I do not start from scratch each time; how much hand work a new episode still needs is the next thing I will measure. This page explains how it works, what the checks catch, and what still needs work. It describes the method rather than giving instructions; the code, the drawings, and the bible are private.

Long AI video has a consistency problem. Ask a video model for a shot and the characters will look roughly right; ask it for the next shot and the room has been repainted, the shirt has changed color, the dog has a different face. For a 30-second clip that is a nuisance. For a 28-minute series with a recurring cast it is the whole problem. I tested a video generator before building this pipeline. In an early test of 162 candidate clips across 24 segments, the automated judge flagged 57% of them for background changes, camera drift, or an impossible dog pose, while the anchored characters never went missing.

The pipeline treats the screenplay as source code.

The story controls the pictures. A video model is not asked to remember what the room looked like, because the room is a file.

A drawing that cannot change is not the same as a shot that is right, so every frame passes eight hard checks and an AI judge (a vision-language model) reviews every shot.

The eight hard gates run on every frame, and a single failing frame blocks delivery: no two characters overlap unless the staging says they touch (a hug, a hand on a shoulder); every background resolves to one registered drawing per location, series-wide (title card, end card, and thumbnails included); every mouth is a shape from a finite, eye-approved set; one body drawing per character per frame and at most two hands; a mouth on every speaking frame; every held object at the hand that holds it; everyone listed for a car or photo shot is in frame, head and shoulders inside the edges; music runs to the end.

Separately, the AI judge reviews every shot, and its flags go to human review rather than blocking:

After the automated checks, two reviewers who had not watched the series being made went through every scene with a written checklist and a yes/no sheet: a separate AI session with no access to the pipeline, and a family member. Then I watched it. The render is deterministic: in my render tests, the same script, library version, and seeds reproduce the dialogue cuts frame for frame, which is what makes the checks meaningful.

| | Part 1 | Part 2 | Part 3 |

|---|---|---|---|
| Running time | 9:44 | 8:49 | 9:29 | 

| Frames | 14,032 | 12,718 | 13,658 | | Hard-gate failures on the shipped file | 0 | 0 | 0 | | Judge flags remaining after review | 27 | 15 | 39 | | of which "the line is shown" | 16 of 188 lines | 12 of 171 | 28 of 192 | | Beats verified as performed | 12 of 25 | 7 of 24 | 6 of 37 | | Judge flags overridden by eye (frame on record) | 4 | 4 | 4 |

Delivered at 1920×1080, 24 fps, rendered on one Mac with no rented GPU for the final cuts. The drawings were made at 1344×768 (backgrounds) and about 1,024 px tall (characters) and upscaled, so "1080p" is the delivery size, not the native drawing size. Most of the judge flags that are not "line is shown" are camera drift on authored camera moves. The beats not verified are held drawings a human accepted. Every number here is read from the release manifest of the shipped files; the rubric version and gate definitions are recorded there.

This is limited animation by design: held drawings, cut-out movement, two-drawing action beats. Sustained character motion, a run or a dance, is not attempted in this version. A viewer who had not seen the series being made pointed out where it still falls short, and they were right: the synthesized voices sometimes sound flat,

and the s do not always feel natural; walking uses only two drawings, so the movement looks choppy; now and then a character faces the wrong way or stands where nobody would stand. The gates catch consistency; the staging and the performances still need work. I have recorded each of those problems and plan to add a test for

it. One cast, one world so far: a second series through the same pipeline without engine changes has not yet been run. The judge is a language model, and its agreement with human viewers on these cuts has not been measured, which is why human review sits after it. Photoreal output is untested.

Limited animation is where the pipeline stands today, and it is still a work in progress. Next is a second Brightwater story through the same pipeline and the same bible, written to a published script format by someone who has not seen the compiler, while I work on fixing the problems above in the pipeline rather than patching individual shots. I will publish how much hand work the new episode still needed. Full animation is on the roadmap, and I am testing two

routes under the same checks: a video model moving the characters while the rooms stay locked, and reusable rigs built from the approved drawings. Neither is chosen yet. Limited animation remains the baseline that always ships; whatever earns its way in does so one shot at a time.

The method is borrowed from a century of hand-drawn animation: exposure sheets, holds, cut-outs, the mouth chart. The models and tools are other people’s years of open work: FLUX.2 [klein] 4B (Black Forest Labs, Apache-2.0) for the still library; Kokoro-82M (Apache-2.0; its training set includes CC-BY audio from Koniwa and SIWIS, credited as its model card asks) for the voices; Rhubarb Lip Sync (MIT) for mouth timing; FluidSynth with the Fluid R3 GM soundfont (MIT) for the music; FFmpeg for everything that touches a frame; Claude (Anthropic) as the judge and as the drafting assistant for dialogue, under rules I wrote. The generator I measured in the early experiments was LongLive 2.0 (NVIDIA Open Model License) on Wan 2.2 (Apache-2.0); no frame from either is in the episodes. Google Research’s recent work on typed story state and verification by visual question answering helped frame the problem. My work was choosing the tools, connecting them, and writing the rules and the tests.

Made with AI tools. All characters, voices, and places are fictional; no real person's likeness was used, and no voice was cloned or imitated. The music was composed for the series.

── more in #artificial-intelligence 4 stories · sorted by recency
── more on @the brightwater family — picture day 3 stories trending now
sponsored brought to you by zahid.host 4,200+ EU-deployed projects
reading about agents? ship yours in a single git push.

Run your AI side-project on zahid.host

EU-based hosting, git-push deploys, automatic HTTPS, no cold starts. Free tier with a custom domain — perfect for shipping the agent you just read about.

$git push zahid main
→ Live at https://your-agent.zahid.host ✓
Get free account → Pricing
from €0/mo · no card required
LIVE [news/compiling-a-screenpl…] indexed:0 read:6min 2026-11-09 · —