JohnHeibel/PDoomVideo

Source code for the Claude Opus 5.5 music video for I'm Upping My P(doom)

JavaScript

678

6 commits

updated Sep 23, 2026

See the code

See what people are saying

SourceMessageScoreDate

Opus 5.5 is good at explainer videos

One important difference between animations/videos generated by Opus 5.5 and the stereotypical AI slop videos is that Opus 5.5 is not a video generation model: it generates and iterates the code and renders it, and there are various ways for it to do so. The code for the infamous "I'm upping my…

0

Sep 24, 2026

README

I'm Upping My P(doom)

Source code for the Claude Opus 5.5 music video for I'm Upping My P(doom).

recursion_loop

I've also made a new more reliable and general base for making Claude animations with Claude Opus 5.5.

hello_loop

Highly recommend checking it out!

Credits

How it was made

The video took two generations, both in Claude Code:

  1. First generation (legacy/): Claude Opus 5.5 (Medium)
  2. Second generation (everything else): Claude Opus 5.5

Everything in this repository was generated by the model. No scene ideas were specified. The only direction was to:

  • use the Clawd character design
  • give each lyric interesting visuals and transitions

ANIMATION_GUIDE.md was written by Opus to brief the subagents it ran in parallel.

STORYBOARD.md was also written by Opus after the first generation, after being instructed to use P5 brushstrokes, make each scene visually interesting, and make every scene transition into the next.

What's here

PathWhat it is
src/ch/The video's nine chapters, one file each
src/Shared code: Clawd, the guest characters, props, lyrics and the timeline
studio.htmlThe page every frame is painted in, using p5.js and p5.brush
render.mjsRenders frames in headless Chrome and encodes the MP4 with ffmpeg
STORYBOARD.mdOpus's shot-by-shot plan
ANIMATION_GUIDE.mdOpus's style and code guide for its subagents
legacy/The first generation

Rendering

You need Node.js, Google Chrome and ffmpeg. The song is included at assets/pdoom.mp3.

npm install
node render.mjs --frames=0:156.6 --workers=4   # paint every frame into out/frames (resumable)
node render.mjs --encode --out=out/pdoom.mp4   # join the frames and the song into an MP4

If Chrome isn't installed at the default Windows path, add --chrome=<path to chrome>.

Contributors

JohnHeibel

6 commits

JohnHeibel/PDoomVideo

Source code for the Claude Opus 5.5 music video for I'm Upping My P(doom)

JavaScript

678

6 commits

updated Sep 23, 2026

See the code

See what people are saying

SourceMessageScoreDate

Opus 5.5 is good at explainer videos

One important difference between animations/videos generated by Opus 5.5 and the stereotypical AI slop videos is that Opus 5.5 is not a video generation model: it generates and iterates the code and renders it, and there are various ways for it to do so. The code for the infamous "I'm upping my…

0

Sep 24, 2026

README

I'm Upping My P(doom)

Source code for the Claude Opus 5.5 music video for I'm Upping My P(doom).

recursion_loop

I've also made a new more reliable and general base for making Claude animations with Claude Opus 5.5.

hello_loop

Highly recommend checking it out!

Credits

How it was made

The video took two generations, both in Claude Code:

  1. First generation (legacy/): Claude Opus 5.5 (Medium)
  2. Second generation (everything else): Claude Opus 5.5

Everything in this repository was generated by the model. No scene ideas were specified. The only direction was to:

  • use the Clawd character design
  • give each lyric interesting visuals and transitions

ANIMATION_GUIDE.md was written by Opus to brief the subagents it ran in parallel.

STORYBOARD.md was also written by Opus after the first generation, after being instructed to use P5 brushstrokes, make each scene visually interesting, and make every scene transition into the next.

What's here

PathWhat it is
src/ch/The video's nine chapters, one file each
src/Shared code: Clawd, the guest characters, props, lyrics and the timeline
studio.htmlThe page every frame is painted in, using p5.js and p5.brush
render.mjsRenders frames in headless Chrome and encodes the MP4 with ffmpeg
STORYBOARD.mdOpus's shot-by-shot plan
ANIMATION_GUIDE.mdOpus's style and code guide for its subagents
legacy/The first generation

Rendering

You need Node.js, Google Chrome and ffmpeg. The song is included at assets/pdoom.mp3.

npm install
node render.mjs --frames=0:156.6 --workers=4   # paint every frame into out/frames (resumable)
node render.mjs --encode --out=out/pdoom.mp4   # join the frames and the song into an MP4

If Chrome isn't installed at the default Windows path, add --chrome=<path to chrome>.

Contributors

JohnHeibel

6 commits

Languages

JavaScript

86.0%

HTML

14.0%