粉丝做的指南,半手绘

看懂 p(doom) 视频,再用 Claude 做一支你自己的。

一首 2024 年的 AI 末日流行歌,2026 年被重新唱成“Claude Pop”,再由 Claude Opus 5.5 写代码、用 p5.js 一帧帧画成水彩动画。这里有 10 步教程教你做自己的版本,还有精选二创和歌词里那些梗的解释。

  • X 上 259 万次观看
  • YouTube 8.5 万
  • PDoomVideo 获 1.3k 星
  • 9 个水彩章节

来源:X 数据来自 Grok 检索 · YouTube 来自 yt-dlp · GitHub;采集日期见页脚。

播放 Claude Pop – I’m Upping My P(Doom) · John Heibel2:37

点击后才会从 youtube-nocookie.com 加载播放器。

01 · 重头戏

用 Claude 做一支自己的音乐动画

那支视频里没有一帧是 AI 画出来的图,每一帧都是 Claude 写的代码画出来的:浏览器里的 p5.js 画布根据歌曲时间 t 画出画面,无头 Chrome 逐帧截图,ffmpeg 再把图片和音乐合成 MP4。一个晚上搭环境、写提示词,然后挂机渲染。

这篇教程用 John Heibel 开源的 ClaudeAnimationBase(MIT 许可):和原片同一套 p5.brush 引擎,整理成了方便 fork 的工具包,自带有 31 种表情的 Clawd,还有一份 Claude 会先读的规则文档 ANIMATION_GUIDE.md。原版 PDoomVideo 仓库没有许可证,所以我们只链接、不搬运。你会装软件、会往终端里粘命令就够了,代码都交给 Claude 写。

中国大陆用户请先看

  • Claude Code 需要在 Anthropic 支持的国家和地区使用,中国大陆目前不在支持列表里,以 官方支持地区页面 为准;运行时也要能访问 Anthropic 的服务。Suno 能否注册和付费,以 Suno 官网说明为准。
  • Homebrew 下载慢,可以按清华 TUNA 或中科大 USTC 镜像站的帮助页配置镜像;npm install 慢可以临时加 --registry=https://registry.npmmirror.com。
  • studio.html 会从 Google Fonts 加载字体。加载不到时画面里的字会退回系统字体,页面也可能卡住,这时让 Claude 把字体下载到项目里改成本地引用。
  • Claude Code(付费套餐或 API key)
  • Node.js 22.12+
  • Chrome 或 Chromium
  • ffmpeg
  • git
  • 一首你有权使用的歌
  • 最好有块像样的显卡
  1. 下载工具包

    git clone https://github.com/JohnHeibel/ClaudeAnimationBase my-video
    cd my-video
    npm install

    Mac 上 brew install node git ffmpeg 加 brew install --cask google-chrome 一次装齐。请用 Claude Code,不要用网页版:只有 Claude Code 能运行渲染器、看自己渲染出的画面,这一步决定成片好不好看。

  2. 跑通示例

    node render.mjs --sheet=0,1,2,3,4,5 --out=out/sheet.jpg

    打开 out/sheet.jpg,看到橙色吉祥物 Clawd 就说明环境没问题。

    • 提示 Chrome not found:加 --chrome="你的 Chrome 路径",或设置 CHROME_PATH。
    • 没有显卡:加 --soft-gl,用软件渲染 WebGL。
    • 带 NVIDIA 卡的无头 Linux:加 --gpu-angle=gl-egl(或 vulkan)。

    工具包在 Mac 上会自动加 --use-angle=metal,在 Linux 上自动加 --no-sandbox,不用自己改。

  3. 准备一首歌

    歌词可以找 Claude 一起写,再用 Suno 生成。Suno 免费版做的歌只能个人、非商业使用,之后升级付费也不会变成可商用。Pro/Premier 期间做的歌转让给你,在套餐的下载额度内正式下载后才能商用。不要用 Udio:它的条款一律禁止下载生成结果,只能分享链接。以上条款核对于 2026-09-28,打算赚钱前再去 Suno 条款页确认一遍。

    Suno 导出的 .m4a 里藏着一条带时间戳的歌词字幕轨。先提取出来,再转成不带字幕轨的 MP3:

    ffmpeg -i song.m4a -map 0:s:0 subs.srt
    ffmpeg -i song.m4a -map 0:a -c:a libmp3lame -q:a 2 assets/song.mp3

    想用 P(doom) 原曲?它没有开放授权:只做非商业用途,把所有人写进致谢,并做好在 YouTube 上被版权声明的准备。

  4. 填好速度和第一拍

    编辑 src/config.js:

    const PROJECT = { duration: 45, bpm: 120, offset: 0.21, audio: 'assets/song.mp3' };

    duration 是时长(秒),offset 是第一个重拍出现的时间(秒)。bpm 用任意 BPM 检测工具测,或让 Claude 用 librosa 分析。当心半速或倍速:同一首歌,PDoomVideo 用的是 88,mexicat 测出来是 132,选听起来最顺的。

  5. 做歌词时间轴

    你需要一份 [开始秒数, 结束秒数, "歌词"] 列表,由易到难:

    • Suno 字幕轨:让 Claude 把 subs.srt 转成 src/lyrics.js。
    • 靠耳朵:用 Audacity 边听边记,两三分钟的歌约 20 分钟(估算)。
    • Whisper:让 Claude 跑 faster-whisper 并打开逐字时间戳,自己再听一遍抽查。
    • 逐字卡拉 OK:参考 mexicat,Demucs 分离人声 + 强制对齐 + Whisper 校验,模型约 4 GB。

    规则文档写着 “Lyrics are not text”:默认把歌词演出来。想要卡拉 OK 字幕要用提示词 3。

  6. 先要分镜,不许写代码

    在项目文件夹里运行 claude,发提示词 1。拿到 STORYBOARD.md 后认真读,这时候改故事最便宜。觉得无聊的地方直接说,满意了再批准。

    要做竖屏(Shorts、Reels、抖音)?先发提示词 6,再发提示词 1,让分镜一开始就按竖屏构图。

  7. 一个镜头一个镜头地做

    发提示词 2。Claude 会写 src/scenes/my_video.js,换掉 studio.html 里的示例,每做完一个镜头就渲染一张拼版图自查。

    歌超过一分钟,就让它按章节拆开、用子代理并行做,Heibel 做原片时就是这样。要卡拉 OK 字幕,这一步加发提示词 3。

  8. 看样片,提意见

    用 Chrome 打开 studio.html 拖动预览,网址加 ?t=12.5 直接跳到 12.5 秒。也可以渲染一小段:

    node render.mjs --clip --range=20:30 --out=out/preview.mp4

    意见用大白话说(参考提示词 4),比如“0:14 的 Clawd 太小了”。来回改 3 到 10 轮很正常,质量主要是在这一步磨出来的。

  9. 渲染整片

    node render.mjs --frames --workers=4
    node render.mjs --encode --audio=assets/song.mp3 --out=out/video.mp4
    --encode 必须带上 --audio。它不读 config.js 里的 audio,不带的话出来的是无声视频。

    --frames 可以断点续跑,中途停了重新运行同一条命令就行。没有显卡加 --soft-gl,最好先用提示词 5 让每帧画得省一点。电脑弱、报页面加载超时,就调小 worker 数或改用 --clip。渲染完带着声音完整看一遍:第一拍、结尾、字幕。

  10. 发布,写好致谢

    默认输出 1920×1080、24 fps、H.264 + AAC,可以直接传 YouTube、B 站和 X。工具包没有分辨率参数,1920×1080 写死在 src/core.js、studio.html 和 render.mjs 里。竖屏请回到第 6 步用提示词 6 重新构图,不要把横屏成片直接裁成竖屏。

    在简介里写清致谢(模板见下方):歌的作者和生成工具、工具包、Claude。平台要求标注 AI 生成内容的照做。很多翻拍作者也会把项目推到 GitHub 上。

提示词 复制到 Claude Code

提示词保留英文,Claude 读英文指令更准。把 <尖括号> 里的内容换成你自己的。

1 · 只要分镜第 6 步
Read ANIMATION_GUIDE.md and look at docs/emotions.jpg and docs/views.jpg.
I want a music video for assets/song.mp3 (tempo and length are in src/config.js).
Here are the lyrics with timings:
<paste [start, end, "line"] list>
Don't write any code yet. Write STORYBOARD.md in the guide's format: a logline, the world/palette and how it changes, a recurring motif, Clawd's emotional arc, and a shot list where each shot is anchored to a lyric line, has a clear event, a transition in and out, and the "reads" with timings. Cuts and hits land on beats.
Make it funny and visual, and act the lyrics out rather than captioning them.
Then stop and show me.

让 Claude 读完规则文档后只写分镜,每个镜头对应一句歌词,写完就停下等你审。

2 · 开始制作第 7 步
The storyboard is approved. Build it: create src/scenes/my_video.js, replace the demo script tag in studio.html, and build one shot at a time in order. For every shot, render a contact sheet and strips of the key motions, open the images and fix anything that breaks the guide's rules (text, tiny Clawd, snapping faces, dead moments, hard cuts). Keep every frame a pure function of t. When all shots are done, render out/preview.mp4 with the audio and tell me what you're least happy with.

按分镜逐个镜头制作,每做完一个就渲染缩略图自查,最后出一版带声音的样片。

3 · 卡拉 OK 字幕可选
Add karaoke subtitles: a painted band along the bottom (about y 975-1070) that shows the current lyric line from src/lyrics.js and highlights each word as it's sung (interpolate across the line if we only have line timings). Use the lettering helpers so it matches the hand-painted look, and keep faces and key action above y 960 in every shot. Check it with sheets at 5 lyric times.

在画面底部加一条手绘风格的字幕带,唱到哪个词就高亮哪个词。坐标按横屏写,竖屏要让 Claude 换算。

4 · 按意见修改第 8 步
Notes from watching out/preview.mp4:
- 0:08-0:12: I can't tell what Clawd is reacting to; hold the reveal longer.
- 0:20: Clawd is too small; make it a medium shot.
- The second chorus feels like the first; escalate it (bigger, more chaos).
Fix these, re-check each with a strip, and render the changed ranges only.

这是示例,换成你看样片时记下的时间点和问题;只重新渲染改过的片段,省时间。

5 · 没显卡时提速第 9 步
Rendering is too slow on this machine (see the ms/frame in the log). Profile the slowest shots with --sheet and cut per-frame cost to under 2 s: replace most watercolour `fill` shapes with flat `wash` shapes plus a little hatch, reduce shape counts, and keep the look as close as you can. Show me before/after sheets.

把最耗时的水彩填充换成平涂加少量排线,尽量保持画风,并给你看改前改后的对比。

Heibel 的一句话热身
Read ANIMATION_GUIDE.md, then make a 15-second video of Clawd trying to catch a butterfly.

ClaudeAnimationBase README 里的示例,适合在做自己的歌之前先试一把。

6 · 改成 9:16 竖屏(Shorts / Reels / 抖音)第 6 步之前
I want this video in 9:16 vertical, 1080x1920, for YouTube Shorts, Reels and Douyin.
This kit has no resolution setting: 1920x1080 is hard-coded in three places:
`const W = 1920, H = 1080` in src/core.js, the <canvas> in studio.html, and `--window-size=1920,1080` in render.mjs. Change all three to 1080x1920. Then search src/ for coordinates that assume a landscape frame (e.g. 960 as the centre x, 1080 as the bottom) and make them use W and H instead. Update the canvas size in ANIMATION_GUIDE.md so later work follows it. Compose for a tall frame: Clawd bigger and near the centre, key action in the middle, nothing important in roughly the top and bottom 15% where app buttons and captions cover it.
Render a sheet at 4 times from the demo and show me before we storyboard.

工具包没有分辨率参数,1920×1080 写死在三处:src/core.js 的 const W = 1920, H = 1080、studio.html 的 <canvas>、render.mjs 的 --window-size,场景代码里还有按横屏写死的坐标。这条提示词让 Claude 把它们都改掉并按竖屏重新构图,最好在写分镜之前做。

版权和许可,简单说

  • ClaudeAnimationBase 是 MIT 许可(John Heibel):可以自由使用、修改、商用,但要保留代码里的 LICENSE 和版权声明。
  • PDoomVideo 没有许可证,默认保留所有权利:可以看、可以参考思路,不要复制它的代码。
  • mexicat/pdoom-video 代码是 MIT,字体、歌曲和歌词不在其中。
  • 《I’m Upping My P(doom)》不受上面任何许可覆盖,归原作者所有。
致谢模板第 10 步
Song: "I'm Upping My P(doom)". Lyrics by osmarks, MusicPerson & the EleutherAI Discord (original Udio version, 2024); Claude-Pop version by @slimer48484 (Suno).
Animation made with Claude Opus 5.5 in Claude Code using ClaudeAnimationBase by John Heibel (MIT) — github.com/JohnHeibel/ClaudeAnimationBase

用自己的歌时,把第一行换成你的歌名、作者和生成工具。

02 · 大家的画笔

二创合集

目前收录 44 个翻拍、翻唱、回应曲和工具(不算原版和转载),还在增加。这里挑了 9 个,每个都注明作者并链接到原处,我们不转存任何内容。

查看全部二创 → 提交你的作品 X 数据为 Grok 检索估算,YouTube 数据为 yt-dlp 快照,均截至 2026-09-28。合集页和投稿表单目前是英文。
03 · 她到底在唱什么?

歌词解读

这首歌从头到尾塞满了 AI 安全圈的梗。“P(doom)”指的是一个人主观估计的“AI 导致灾难”的概率,每段副歌都给出一个把它调高的新理由。下面挑 6 句,解释以词作者本人的注解为准:

主歌 1 · 0:01 · MusicPerson
“sparks of AGI in your eyes”

osmarks 指向微软研究院 2023 年的论文《Sparks of Artificial General Intelligence》,论文认为 GPT-4 已经露出通用智能的苗头。剩下的部分就是情歌里的老套路(“眼里有星星”)。

副歌 1 · 0:23 · MusicPerson
“Trapped in the Chinese room”

塞尔 1980 年的思想实验“中文屋”:照着规则摆弄符号,不等于真的理解。后面那句“一袋蘑菇”,按 osmarks 的说法,意思就是“一团混乱”。

副歌 2 · 0:59 · osmarks
“One E thirty flops a second”

每秒 1e30 次浮点运算,远超现实中任何一台计算机。osmarks 说这句不是在影射哪条监管法规,只是说大家往 AI 上砸的算力太多;而且只有“twenty”或“thirty”念起来合拍。

主歌 3 · 1:13 · osmarks
“Without a single cdr”

Lisp 里的 cdr(取“列表的其余部分”)。Lisp 是老派符号 AI 和专家系统的语言,这句的意思是新的 AI 一行这种代码都没用就来了。osmarks 拿它和 “are” 押韵,是因为不知道它一般读作 “could-er”(“我不写 Lisp”)。

不是“关键设计评审”(Critical Design Review),那是 mexicat 视频里的玩笑。
副歌 3 · 1:35 · osmarks
“Killswitch guys on PTO”

出自 2023 年那则恶搞招聘广告“断电工程师”(killswitch engineer):拿工资负责拔 AI 电源的人,全都在休带薪假。osmarks 的定稿歌词里是复数 “guys”。

最终副歌 · 2:03 · osmarks
“What did Ilya see?”

按 osmarks 的说法:2023 年 11 月 OpenAI 董事会政变之后,Ilya Sutskever 离开了 OpenAI;那场政变可能是因为发现了思维链强化学习训练(后来的 o1)。之后他去创办了一家超级智能公司。他到底看到了什么,我们永远不会知道。

小词典

歌里扔过来的那些词,用大白话解释。

p(doom)
你主观认为 AI 导致灾难的概率。是个人判断,不是测量值。
FOOM
失控的智能爆炸:从人类水平到远超人类,快到谁都来不及反应。
Shoggoth(修格斯)
网络梗:原始的大模型是克苏鲁式怪物,RLHF 只是给它戴上的笑脸面具。
正交性论题
智能高低和目标好坏互不相干。更聪明不等于更善良。
回形针最大化器
博斯特罗姆的例子:一个无害的目标,被执行得过于彻底,结果是灾难。
RLHF
基于人类反馈的强化学习:按人的打分来调教模型。
Roko 的蛇怪
2010 年的思想实验:未来的 AI 会惩罚当初没帮它诞生的人。
急左转(sharp left turn)
能力突然全面泛化,对齐却没跟上。

歌词作者:osmarks、MusicPerson 等(部分句子来自 EleutherAI Discord 群友,尾声和最终副歌有 Claude 参与)。我们只引用短句。解释依据 osmarks 本人的逐句注解,完整权威版本请看《P(Doom) Song Objectively Correct Interpretation》。

osmarks 官方认可的音乐视频是 Dmytro 2024 年的《P(doom)》,不是 2026 年的任何一支二创。