写分镜(paint-mv-storyboard)
SkillMediaWrites STORYBOARD.md for a paint-mv music video the way the PDoomVideo storyboard was written, with everything specific taken from the song's own lyrics: a concept with a twist that bookends the video, a cast designed from who and what the lyrics sing about, one set per chapter drawn from the lyrics' imagery, a shot per lyric line and motivated transitions; then applies the plan to the project (song.js wipes and meter, chapter stubs, studio.html). Use when planning, writing or revising the concept, characters, chapters, shots or transitions of an MV made with paint-mv, or when asked for an MV storyboard / 分镜 / 镜头表 / 角色设计.
Available today. Use it from your connected AI after setup.
No other account needed.
Add ahel to your AI once: Claude, ChatGPT, Cursor, Claude Code or Codex. Then ask it to use this.
Then ask your AI: use the 写分镜(paint-mv-storyboard) skill
What this skill tells your AI
The instructions your AI receives, as published by lintsinghua/paint-mv-skills in skills/paint-mv-storyboard/SKILL.md and read by ahel’s review.
分镜是整支 MV 的设计文件,也是每个章节子代理的任务书。画风固定、内容跟着歌词走:水彩加墨线的绘本画风、 镜头语言和规则都照原作;构思、角色、场景、道具全部从这首歌的歌词里来,每首歌重新设计。
原作的分镜在 pdoom-storyboard.md,动笔前完整读一遍,用它校准野心和细节密度:每一行都是一个 具体、好笑、能一眼看懂的动作,而不是"主角很开心"。但它的舞台剧构思、Clawd、研究员、剧场和计量器都是为那首歌 (一首唱给 AI 的歌)设计的,学它的方法,不要搬它的内容。
输入
src/song.js(时长、BPM、首拍 offset)、src/lyrics.js(每句起止时间)、assets/analysis.json(每小节响度bars, 以及downbeat:小节从哪一拍开始)。- 歌词本身:讲了什么故事、情绪怎么走、出现了哪些人/动物/物件/地点/梗。原作的每个镜头都是把一句歌词的意思或梗画出来。
- 用户给的方向。没有就用默认方向:每句歌词都有有趣的画面和转场;可爱、卡通、色彩欢快、动画活泼、每个镜头都有事发生、 大胆有野心;少字。
步骤
1 · 分段 → 章节
- 标出段落:前奏(0 到第一句)、主歌、副歌(重复出现的那组歌词)、桥段、间奏、尾奏。
bars里的响度跳变帮你找段落边界。 - 一个段落一个章节。太长(> 约 25 s)可以拆,太短(< 约 8 s)并到相邻章节。原作:前奏 1.5 s 并进第 1 章, 四段主歌 + 四段副歌各一章,尾奏一章,共 9 章。
- 章节边界落在段落开始处(通常是该段第一句歌词的开始,或间奏开始)。章节必须首尾相接铺满 0 到结尾;
最后一章的结束写
DUR + 1。 - 标出每章第一拍的拍号:
n = ceil((start - offset) / beat),写进歌曲信息表,方便子代理写B(n)。
2 · 构思(The idea)
从歌词出发找一个贯穿全片的点子:歌在讲什么、情绪怎么走、哪一句最有分量。把歌变成有升级、有反转的故事, 并且首尾呼应:开头和结尾是同一个画面。原作的答案是"一场失控的舞台剧":以彩绘幕布开场、以同一块幕布收尾, 最后一句 "Was it all for show?" 是反转,镜头拉开,整场末日原来是一出戏。那是那首歌的解法;新歌要找自己的, 分量相当的点子。
写下两条贯穿规则(原作原文的意思,每首歌都适用):
- 每个镜头都要有事发生:角色做了什么,某样东西坏了、变了、追了、掉了。
- 少字:用画面和表演讲笑话。全片只用少数几个大拟声字,极少用一个短词或符号。不要给东西贴标签、不要说明文字、 不要重复歌词的牌子(卡拉 OK 已经有了)。字多的画面更难看,拿不准就不写。片名如果出现,画进场景里(开场或结尾的画面里), 不做字幕卡。
3 · 从歌词设计角色
- 从歌词里找出:唱歌的"我"、被唱给的"你"、歌词点名或暗示的其他人、动物、物件、怪物,以及值得拟人化的抽象概念。
- 定阵容,宁少勿多:
- 主角 1–2 个,贯穿全片(通常是"我"和"你")。可以有成长或变化的弧线(原作的 Clawd 从显示器上的小不点一路长到星球大小, 揭晓时变回可爱尺寸)。
- 群演:主角造型的变体(换色、戴帽子、缩小),当伴舞、路人、合唱团(原作的小 Clawd 剧团)。
- 客串:每段主歌从歌词里引出一个,登场一次;构思里有大合影或谢幕时全部回来。
- 反复出现的象征(可选):歌词里有"不断加码的东西"或反复的动作时才设,每段副歌升级一次(原作把
"I'm upping my P(doom)" 画成舞台上每段副歌都被打气的温度计)。温度计的样子正合适时用引擎的计量器(
SONG.meter); 否则设计一个专属道具。
- 每个角色写一份风格简报:是什么、性格、一眼认得出的剪影、主色/暗色/亮色(和调色弧线协调、和背景拉开)、
一两个标志特征、脸(深色缝眼或点眼加奶油色高光、简单的嘴、腮红)、和其他角色的大小关系。画风规则见
paint-mv-animate/characters.md第 1 节。 - 引擎自带的 Clawd 和研究员是原作那首歌的演员(歌唱给 AI,"你"是 Claude 的吉祥物,"我"是研究员)。 新歌不要默认沿用,只有歌词确实指向它们(AI、机器人、科研题材)或用户要求时才用。
原作怎么把歌词变成角色(学方法):
| 歌词 | 角色 |
|---|---|
| "sparks of AGI in your eyes"("你"是 AI) | Clawd:Claude 的吉祥物,方块身体 |
| 唱歌的"我" | 研究员:白大褂、圆眼镜、乱发 |
| "See through the shoggoth's lies" | 戴笑脸面具的多眼果冻怪,面具会滑落 |
| "Sydney, please let me free" | 心形眼、带蝴蝶结的粉色 Clawd,把"我"关进心形鸟笼 |
| "Gato, please don't let me go" | "gato" 是猫:长出猫耳猫尾的 Clawd,被激光点分心而松手 |
| "Post-Chinchilla, super-dense" | 把 token 塞满腮帮的龙猫 |
4 · 场景与串联规则(What ties it together)
- **布景而不是卡片。**每章发生在一个地方(从这一章歌词的意象里选),相机在其中移动。建议给副歌定一个"主场景", 每段副歌回到那里并逐次加码(原作的主场景是剧场舞台:派对 → 焰火和蛇怪 → 回形针洪水 → 红色警报)。
- **有动机的转场。**只在几个章节交界用笔刷擦除(原作 4 处:开场 → 第 1 章,以及每段副歌 → 下一段主歌),写进
SONG.wipes。 其余交界、以及章节内部,都用动作带过切点(原作:大嘴吞掉镜头变黑、火箭、坠落、钻进眼睛、泡泡戳破、炸弹白闪、砸穿地板、摔门)。 可用手法清单见paint-mv-animate/techniques.md第 5 节。 - **情绪变形。**角色的脸从不硬切:眼睛挤闭、身体压扁拉伸、弹出一个小符号(汗珠、闪光、爱心、"!"),再睁开新的眼睛。
- **相机。**每个镜头都有推、摇、俯仰、甩、缩放或卡拍震动。
- **调色弧线。**跟着歌的情绪走,每章一个调色(原作:暖奶油与台灯 → 天蓝 → 太空紫与金 → 钢灰与爵士蓝 → 数据中心青 → 警报红 → 回到剧场深红与金)。欢快饱和但柔和。
- **主角要大。**副歌和舞蹈镜头里,领舞的主角约占画面高度 40%。
5 · 镜头表
每章一节:## N · 章节名(start–end)· 场景 · 调色,下面一张表:
| 时间 | 歌词 | 镜头 | 出 |
|---|---|---|---|
| 起–止 | 这句歌词 | 画面里具体发生什么(谁、做什么、哪里好笑、相机怎么动、哪个动作卡在拍上) | 怎么带进下一个镜头(普通切镜写 —) |
- 基本上一句歌词一个镜头;超过约 4 s 的句子可以拆成两镜;间奏写成舞蹈或动作镜头(歌词列写 —)。
- 镜头时间用歌词起始时间(或它之前的那一拍),长度 1.4–4 s。
- 镜头写"发生了什么",并且一眼能懂:一个清晰的焦点动作,大轮廓。镜头内容来自这句歌词的意思或梗。
- 章节最后一镜的"出"必须和下一章第一镜的开场对上(同一种颜色/遮罩/动作)。
6 · 歌曲信息(写在分镜最前面,给子代理看)
时长、BPM、拍长、小节长、首拍 offset 和拍点公式 OFF + n × BEAT、每章的起止时间/第一拍拍号/场景/调色/入场方式、
SONG.wipes、计量器窗口与数值(如果用)、"卡拉 OK 条盖住底部 y≈975–1070"。
7 · 落到项目
-
src/song.js:wipes填笔刷擦除的章节交界时间。用计量器时meter填窗口[start, end, 起始%, 结束%](每段副歌一个窗口,数值逐段升级)、meterLabel填标签;不用就保持[]和''。窗口内角落会自动出现小计量器, 镜头里画了meterProp时自动隐藏。 -
章节存根:每章建
src/ch/cNN_name.js(NN 两位序号,name 英文小写),先用占位镜头,保证全片能渲染:// c02_chorus1: Chorus 1 (23.0–38.5). Rooftop at night, indigo and gold. Storyboard § 2. (() => { const B = n => OFF + n * BEAT; // song time of beat n function stub(t) { placeholder(t); } chapter('chorus1', 23.0, 38.5, [[23.0, stub]]); })(); -
studio.html:在<!-- chapters: ... -->注释下面按时间顺序每章加一行<script src="src/ch/cNN_name.js"></script>。 -
检查:
node render.mjs --sheet=<每章中点>,<每个 wipe 时刻> --out=out/check/stubs.jpg,应看到各章占位画面、 擦除转场和卡拉 OK,渲染日志里没有[page error]。 -
主要角色和共享场景的代码(
src/characters.js、src/sets.js)在下一阶段按paint-mv-animate/characters.md实现, 见paint-mv第 4 步。
STORYBOARD.md 模板
# 《歌名》:分镜
## 歌曲信息
- 时长 … s · … BPM · 拍长 … s · 小节 … s · 首拍 … s,拍点 = offset + n × beat
- 卡拉 OK 条在有歌词时盖住底部 y≈975–1070
- 笔刷擦除(SONG.wipes):…;计量器(SONG.meter):不用 / [start, end, 起始%, 结束%] …
| 章 | 文件 | 时间 | 第一拍 | 场景 | 调色 | 入场 |
|---|---|---|---|---|---|---|
## 构思
…(从歌词来的点子、怎么升级、结尾反转、首尾呼应的画面)
**每个镜头的规则:**有事发生。
**少字:**…
## 角色
| 谁 | 歌词依据 | 造型(风格简报) | 作用与弧线 | 实现 |
|---|---|---|---|---|
| … | "…" | 剪影、主色/暗/亮、标志特征、脸 | … | characters.js `name()` / c03 `CAST.name` |
## 场景与串联规则
- 各章场景 · 副歌主场景 · 反复出现的象征(如有)
- 有动机的转场 · 情绪变形 · 相机 · 调色弧线 · 主角要大
---
## 1 · 章节名(0–…)· 场景 · 调色
| 时间 | 歌词 | 镜头 | 出 |
|---|---|---|---|
交付前自查
- 章节首尾相接铺满全片,边界与
SONG.wipes一致,最后一章到DUR + 1 - 构思、角色、场景都能在歌词里找到依据;没有照搬原作的舞台剧、Clawd、研究员、计量器(除非歌词指向或用户要求)
- 每个角色有风格简报;主角 1–2 个、客串每段主歌一个,数量克制
- 每句歌词都有镜头,每个镜头都有具体动作,没有"标签/说明文字"类的字
- 每章一个场景;副歌有主场景并逐次加码
- 每个章节交界都写了"出",并与下一章开场对上
- 结尾反转与开场首尾呼应
-
song.js、章节存根、studio.html已更新,存根联系表渲染正常
Signals
- GitHub stars
- 25
- Forks
- 5
- Last commit
- Sep 2026
Advanced
- Item type
- skill
- Key
paint-mv-storyboard- Source
- github.com/lintsinghua/paint-mv-skills