Projects / Led · Team project

Plan, don’t generate: an AI that directs a video but never builds it

Canvas Motion · Internal R&D · Stable

Type a topic and pick a length, and a few minutes later you have a narrated, animated explainer video with captions timed to the word. Nobody storyboarded it, wrote a script, or placed an element by hand.

~59Hand-built animated components the AI can choose from
4Built-in color themes
16:9 · 9:16Aspect ratios from the same pipeline
30 minLongest request accepted

The rule

Most AI video tools hand the model a blank canvas: write code, generate pixels, hope it renders. Canvas Motion splits the job by who can safely be wrong. The AI directs, and the exact work is done by code a person wrote and tested.

The AI decidesHand-built code does
What each scene shows, and which layoutDraws every component, pixel-exact
Which components, filled with which dataAnimates them, frame by frame
Which color themeRenders the finished video

Every agent’s only output is data slotted into a fixed script format, never code and never pixels. An AI that writes its own rendering code can write something that does not compile or looks wrong in a way nobody catches. An AI that only chooses and fills data against a format already proven to render cannot write broken render code. The worst it can do is pick a poor chart. Novelty is capped by design, and so is that risk.

Research

Turns the topic into a teaching syllabus: what must be covered, and in what order.

Hands over: a JSON script (data only).

Direct

Blocks out every scene: which layout, which components, which color palette.

Hands over: a JSON script (data only).

Write + draw

A scriptwriter and a visual architect work the same scenes in parallel, one on words and one on visuals, never touching each other’s part.

Hands over: a JSON script (data only).

Merge + check

Stitches both halves of every scene together, checks that nothing important was skipped and the scene data is well formed, and locks the final script. This is where a malformed answer is caught and repaired.

Hands over: a JSON script (data only).

Narrate

A speech service turns the locked script into voice, then transcribes that audio back with word-level timestamps, so captions match what was actually said. Optional, and no language model is involved.

Hands over: a JSON script (data only).

Render

A video renderer (Remotion, in headless Chrome) reads the finished JSON and draws each hand-built component frame by frame into an mp4.

Hands over: a JSON script (data only).

Click a stage. Shaded stages use AI; the rest is ordinary code or a speech service. The planner never imports React and the renderer never calls a model, so any stage can be swapped, a model, a voice vendor or the renderer, as long as the JSON shape holds.

A fixed vocabulary

The “camera” is about 59 pre-built, hand-animated components: bar charts, architecture diagrams, code blocks, and mostly algorithm visualizers such as sorting, graph traversal and recursion trees. One registry is the single source of truth. Each entry keeps four things in lockstep, and the catalog the AI plans against is generated from it:

BulletList: { component, schema, catalogEntry, planningMetadata }

If a component is not in the list, the AI cannot summon it. The catalog leans toward teaching topics, and that is a limit as well as a choice.

Two bugs that taught something

  • Constrained is not the same as well formed. A scene’s data came back as a list instead of the expected structure, which broke every scene in that video until the pipeline learned to accept either shape. A tightly scoped task still needs a safety net downstream, not only a good prompt.
  • Measure, don’t estimate. Ask for 60 seconds and an early version could return several minutes, because it trusted the model’s guess at how long the narration would take. Now, once real narration audio exists, every scene re-syncs to its actual length. Captions follow the same rule: the generated audio is transcribed back with word-level timestamps, so they match what was actually said and not the script.

Where it stands

CapabilityStatus
Topic to finished, narrated mp4Done
Word-timed captionsDone
Any aspect ratioDone
Swappable AI backend, cloud or localDone
Custom theme and private knowledgeNot yet
Long-form videoNot yet

The hard bet, an AI that plans reliably without touching the render code, works end to end. What is not true yet is that this is a shippable, tested product: it is a research and demo build.

Next

  • Long-form video. Requests up to 30 minutes are accepted, but every agent plans the whole video in one pass. A full course module likely needs generation in per-chapter batches to hold quality at length.
  • Private knowledge. Turning a client’s own design doc or wiki page into a video that explains it correctly needs retrieval over documents, and constraining the AI to say only what the source supports. That is the bigger lift.