paint-mvlisted
Install: claude install-skill lintsinghua/paint-mv-skills
# 音乐 + 歌词 → 水彩动画 MV(paint-mv,总控)
复刻 PDoomVideo(Claude 画的《I'm Upping My P(doom)》MV)的制作流程:每一帧都是歌曲时间 t 的纯函数,
由 p5 + p5.brush 在 headless Chrome 里画成水彩与墨线,再用 ffmpeg 和歌曲合成 MP4。
**画风固定,内容跟着歌词走。**画风来自原作源码并保持不变:水彩加墨线的绘本观感、纸纹与"沸腾"的线条、字体、
卡拉 OK、笔刷转场、相机和卡拍工具、作画规则。构思、角色、场景、道具每首歌从歌词重新设计。原作的 Clawd、研究员、
剧场舞台和计量器是为那首歌(一首唱给 AI 的歌)设计的,留在引擎里作参考实现,歌词指向或用户要求时才用。
四个 skill 分工(与原作一致:导演写分镜和指南,并行子代理各画一章):
| skill | 角色 | 什么时候读 |
|---|---|---|
| `paint-mv`(本文件) | 导演/总控:建项目、对时、角色落地、派活、统稿、出片 | 从头做一支 MV |
| `paint-mv-storyboard` | 分镜:从歌词定构思、角色、场景、镜头、转场 | 第 3 步 |
| `paint-mv-animate` | 画师:作画规范、角色设计(characters.md)、API、技法、原作九章示例 | 第 4、5 步(每个子代理都要读) |
| `paint-mv-render` | 检查、渲染、编码、验收、排错 | 第 2、6、7 步 |
下文 `<SKILLS>` 指这几个 skill 所在的目录(本文件的上一级),`<PROJECT>` 指 MV 项目目录。
## 输入与前置条件
- 音频文件(mp3/wav/flac/m4a…)。
- 歌词:带时间轴的 LRC / SRT / VTT / TSV / JSON 最好;只有纯文本就先自动对齐(见第 1 步)。
- Node.js ≥ 18、ffmpeg、Google Chrome、git 和 patch;纯文本歌词对齐还需要 `uv`(按需安装 faster-whisper)。
- 原作源码不随本仓库分发。第一次建项目时 `new_project.mjs` 会调用 `scripts/fetch_upstream.mjs`,从
[JohnHeibel/PDoomVideo](https://github.com/JohnHeibel/PDoomVideo) 按固定提交拉下引擎、九章示例和原作分镜,
再打上 `template.patch`;也可以先手动跑 `node <SKILLS>/paint-mv/scripts/fetch_upstream.mjs`,之后才能读示例。
## 流程
复制这份清单并逐项推进:
```
- [ ] 1 建项目:new_project.mjs(引擎、音频、节拍网格、歌词、npm ci)
- [ ] 2 对时确认:速度/首拍有歧义或歌词是自动对齐的,出一段对拍短片给用户看
- [ ] 3 分镜:按 paint-mv-storyboard 从歌词写 STORYBOARD.md(构思、角色、场景、镜头),落到 song.js / 章节存根 / studio.html
- [ ] 4 角色与共享场景:按 characters.md 实现 src/characters.js、src/sets.js,出模型表给用户过目
- [ ] 5 作画:每章一个子代理并行(