Claude Opus 5.5 写代码画出一支手绘 MV:拆解做法,教你用开源模板自己做
推特用户 NotinReality 把歌词和音频交给 Claude Opus 5.5,它写 JavaScript 逐帧画出一支 156 秒的水彩手绘 MV,全程没用生图或生视频模型。本文拆解两轮生成的差别、模型怎么分章节并行干活,再手把手教你用作者开源的 ClaudeAnimationBase 做自己的动画。
这支动画 MV 是 Claude 写代码画出来的:不调用任何现成的 AI 视频生成模型,而是让 Claude Opus 5.5 直接写 JavaScript 代码,利用网页画布引擎逐帧画出 156.6 秒的手绘水彩动画。
这支 MV 叫《I'm Upping My P(doom)》。P(doom) 是 AI 圈的说法,指“AI 给人类带来灭顶之灾的概率”,歌名意思就是“我在调高我的末日概率”。MV 出自推特用户 NotinReality(原推文,YouTube 版)。画面是老式绘本的质感:水彩纸纹理、微微抖动的毛笔墨线、踩着节拍的动作和很多表情戏。
这首歌原本配的是另一位创作者 @slimer48484 发的 3D MV,舞者是向日葵头的人形角色。NotinReality 的版本是拿同一首歌翻做的:
作者 NotinReality 沿用了原版的音轨,直接把歌词和音频交给 Claude,只要求使用 Clawd 角色、给每句歌词有趣画面和转场,没指定任何场景创意,仓库里所有东西均由模型生成(源码见 PDoomVideo)。随后,作者还把整套动画生产管线开源成了起步模板 ClaudeAnimationBase。
哪怕你平时不写代码,只要跟着本教程在电脑上配置好基础工具,也能借助 Claude Code(或其他编程 Agent)做出属于你自己的手绘风动画。
一、幕后拆解:这支手绘 MV 是怎样诞生的?
作者公布的过程只有两轮,代码全部由模型写。
1. 从 Flash 风到水彩绘本
第一代版本(Gen 1,代码保留在仓库的 legacy/ 目录)诞生时,作者只把歌词和音频文件粘贴给 Claude,让它做一个“可爱的动画”,开启的是 Medium(中等)推理能力。
模型很快返回了一套基础动画:画面呈现出扁平纯色块、粗描边,以及大量文字标签和气泡(比如“AGI?”、“LOSS”、“don't eat me!”),整体接近 2000 年代的 Flash 风格。
第二轮,作者提了这几条要求:
- 将推理能力调到最高档(xhigh reasoning)。
- 使用 p5 笔刷风格(
p5.brush,给 p5.js 加水彩和毛笔笔触的库)。 - 场景更有趣、每个场景都有看头。
- 每个场景都转场过渡到下一个。
第二轮中,Opus 自己写的分镜 STORYBOARD.md 里定了:画面少用字,全片只用少量拟声大字(FOOM、CHOMP 之类),不做标签和说明文字,也不做重复歌词的牌子,因为卡拉 OK 字幕已经有了。所以成片里的字主要是底部歌词字幕和 P(DOOM) 道具牌。
据作者说,这一轮跑了约 45 分钟。对比同一句歌词的画面:
2. 第二轮的制作结构:分镜构思、拆章与子 Agent 并行
第二轮的活是这样分的:Opus 先写 STORYBOARD.md,将整片构思为一场失控的舞台剧,由幕布开场、幕布谢幕,Clawd 从显示器里的小涂鸦逐步成长为星球大小,拖着研究员穿梭在歌词里的各种 AI 末日梗中;P(doom) 温度计作为舞台实体道具,每次副歌被打气筒打高(8→34→61→86→99.9);直到最后一句“Was it all for show?”揭示一切只是一场舞台演出。随后,Opus 把整首歌拆成 9 个章节,每章对应一个代码文件;并写了一份 ANIMATION_GUIDE.md 给并行的子 Agent 做简报,每个子 Agent 只改自己负责的那一章,在共享文件中发现 bug 只报告不改;最后由 render.mjs 在无界面 Chrome 里逐帧渲染,通过 ffmpeg 合成为 MP4。
3. 起步包里的规则书
MV 做完后,作者又发布了一个起步包。包里的《动画制作指南》(ANIMATION_GUIDE.md)基于这支 MV 的代码,以及对“模型哪些做得好、哪些做得不好”的分析整理而成。它先定了三个目标:
- 手工感:像有人一帧帧手画的,笔刷笔触、会轻微抖动的墨线、平面 2D、不写字。
- 活着:画面里一直有东西在动、有事在发生,表情是演出来的,角色要够大。
- 一个整体:是一部短片,不是一堆片段拼起来,先规划再画,每个场景都连到下一个。
三个目标之下还有一条底线:观众得能看懂。指南特别提醒,节奏是模型最常出错的地方。下面是具体规则里最关键的几条:
