Can Opus 5.5 produce a film?
A two-minute film, picture and music, produced by Opus 5.5 in Claude Code from my manual.
Question
Three films made with Opus 5.5 got me really curious:
- Addy Osmani: how browsers work
- Kamil Kozieł: an animated history of Poland
- pdoom-video: a film rendered entirely from code
I had to try it myself. Can Opus 5.5, working in Claude Code, produce a film for me? Not write a screenplay for me to animate. Produce it: the concept, the picture, the music and the final file.
The input was the manual for my notes system and a one-page brief.
Result
My jaw dropped. See for yourself.
The first cut was ready in about 25 minutes. I then reviewed it four times. My notes were about content and pace: what to show and how long to hold it. None was about how it was drawn, animated or scored.
The music surprised me most. Claude composed it from scratch, in code, and timed the words to land on the beat. No musician, no stock track.
Approach
I was the director. Claude was the producer. A manual and a brief went in. A finished MP4 came out. Simple.
Claude worked out everything in between, in conversation with me: the concept and treatment, a bar-by-bar outline, the renderer, every scene, the music and the renders. For the method, it studied pdoom-video. It took the idea, not the code.
The film is code. Every frame is a function of time. To turn the animation into a video, a headless browser steps through the film one frame at a time, 30 frames for each second of film, and hands each frame to ffmpeg. ffmpeg joins them into an MP4 and adds the soundtrack.
The technical details:
- One function draws the film.
renderFrame(ctx, t)draws the frame attseconds onto a 1920×1080 canvas. The live player calls it with the audio clock. The exporter calls it atframe / 30. Same code, same pixels. - One score holds all timing. Tempo (100 BPM), sections, every line on screen, the beat each word lands on, and the moments the music answers the picture. The renderer, the synthesiser and the captions all read it, so they can’t drift apart.
- The music is synthesised sample by sample. Plain JavaScript: a pad, a kick, hats, bass, an arpeggio, bells and reverb. No samples, no audio generator, no music software.
- The render runs in parallel. Playwright drives headless Chromium in four segments at once. ffmpeg encodes each segment near-lossless, then joins all four.
- The final encode is two-pass H.264. At 780 kbit/s with AAC audio, the file stays under 15 MB. Flat graphics need little bitrate.
What I learned
- Video as code suits explainers. It is deterministic, can be reviewed as stills, and I change it by editing code, not footage.
- An agent can be the producer. My job moves to direction: the brief, the taste and the review.