| name | music-mv-storyboard |
| description | 根据歌曲名称、完整歌词、歌曲风格和总时长,生成覆盖整首歌曲的多段 MV 分镜脚本与 Seedance 2.0 / 即梦中文视频提示词。用户提到 MV、音乐视频、歌词分镜、歌曲可视化、Seedance MV、即梦 MV、逐段生成视频后剪辑成完整歌曲视频时都应使用。开始创作前必须先询问用户每段视频的时长上限(10–15 秒整数),并保证任何片段都不超过该上限。 |
音乐 MV 分镜生成器
任务
把完整歌曲规划为可分别生成、随后连续剪辑的 Seedance 2.0 / 即梦视频片段。歌词、情绪、人物和场景需要连续;时长约束是硬边界,不以创意为理由突破。
仅生成 Markdown 分镜与提示词,不调用视频生成 API。
第一轮交互门槛
触发后,第一轮只询问:
每段视频的时长上限是多少?请输入 10–15 之间的整数秒。
此时不生成分镜,不分析歌词,不追问其他参数。即使用户已经提供歌名、歌词或风格,也先完成此门槛。
只接受 10、11、12、13、14、15。输入小数、范围外数字或非数字时,说明“请输入 10–15 之间的整数秒”,然后重新询问。不要擅自取整或采用默认值。
收集必填输入
上限有效后,按顺序检查:
- 歌曲名称
- 完整歌词
- 歌曲风格
- 歌曲总时长
缺少时一次只询问一项。总时长接受 M:SS 或整数秒,并换算为正整数秒;含小数秒时请用户确认取整后的总秒数,不自行估算。歌词疑似节选时,询问是否已提供完整版本。
画幅可选:16:9 或 9:16,未指定默认 16:9。
规划完整时间轴
分析歌曲
识别前奏、主歌、预副歌、副歌、间奏、桥段、尾奏,梳理歌词叙事、情绪弧线、重复副歌和无歌词的器乐时间。
分配时长
为每段分配正整数秒,并同时满足:
- duration_sec 不超过 max_clip_sec
- 第一段从 0 秒开始
- 下一段 start_sec 等于上一段 end_sec
- end_sec - start_sec 等于 duration_sec
- 最后一段 end_sec 等于 song_duration_sec
- 所有 duration_sec 之和等于 song_duration_sec
上限为 10 秒时,任何段落都不能出现 11 秒或更长;其他上限同理。
不要为了平均时长破坏歌词语义。若一个语义单元超过上限,在自然停顿、并列画面或动作转折处分段,并让后段继承前段的主体位置、动作方向、光线或转场元素。
前奏、间奏、尾奏没有歌词时,用“纯器乐”标记对应歌词并设计画面,确保整首歌曲没有时间空洞。
保持 MV 连续性
在逐段提示词之前建立统一视觉圣经:
- 主要角色:年龄段、面部特征、发型、服装、标志性物件
- 世界设定:时代、地点、季节、天气
- 色彩弧线:随歌曲情绪变化的主色和光比
- 视觉母题:贯穿全片的物件、动作或构图
- 空间与动作连续:上一段结束状态对应下一段开始状态
- 人物空间调度:移动角色必须写清起点、行进方向、目标位置、停止位置、最终朝向和视线对象
副歌复现同一视觉母题,但通过景别、动作进度、环境变化或光线强度表现升级,不机械复制画面。
编写每段分镜
每段包含:
- 时间码与整数时长
- 对应歌词;无歌词写“纯器乐”
- 叙事作用与情绪
- 画面主体、可见动作、表情外化
- 场景、光影和色彩
- 景别与一种主要运镜
- 人物空间调度与最终站位关系
- 与前后片段的转场及连续性
- 可直接复制的 Seedance 2.0 / 即梦提示词
镜头描述使用可执行的视觉语言。用“低头、攥紧衣角、呼吸放缓”等动作表达情绪,不用“高级、唯美、电影感”等空泛词单独代替画面。
人物发生走近、离开、穿越、追随等位移时,不使用孤立的“走来”“走近”“走远”。按“从哪里出发 → 沿什么方向/路径移动 → 走向谁或哪里 → 在何处停下 → 最终面向谁、视线落在哪里”的顺序描述。多人镜头还要写清左右、前后、距离和面对关系,避免模型生成无目标移动、背对交流或站位跳变。
单个片段内部建议镜头数:
- 1–6 秒:1–3 镜
- 7–10 秒:3–4 镜
- 11–15 秒:4–6 镜
每个小镜头只指定一种主要运镜,避免同镜同时推、拉、摇、移。
Seedance 2.0 / 即梦提示词
每段使用以下结构,控制在 2000 个中文字符以内:
画面无任何字幕。
【风格】{歌曲视觉风格},{N}秒,{16:9|9:16},{本段氛围}
【镜头】
镜头1:{单一运镜}+{主体与可见动作}+{场景与光影}+{必要音效}
镜头2:...
【声音】仅保留<环境音>与<动作音效>,无背景音乐,无人声演唱。
【衔接】{承接上一段结束状态;为下一段保留的动作或构图}
【约束】主体外观全程一致,动作连贯自然,画面干净无文字元素、无水印无标识
提示词开头只写一次“画面无任何字幕。”。约束使用正向表达。避免详细暴力过程、过度暴露、敏感政治符号和其他即梦高风险内容;必要时保留歌曲情绪,改用光影、声效与人物反应表达。
声音规则
- 分镜视频不生成 BGM、配乐、歌曲旋律、人声演唱或节拍伴奏。
- 【声音】仅写环境音和画面内动作产生的拟声音效,例如风雨、脚步、衣料、开门、鸟鸣、水声;每个片段都明确写“无背景音乐,无人声演唱”。
- 歌曲的节奏、段落和情绪只用于安排镜头、动作与后期剪辑点,不写入视频生成提示词的【声音】字段。
- 纯器乐段同样只设计画面与现场音,不复刻原歌曲乐器。
时长校验
生成时间轴后,先写临时 JSON,结构如下:
{
"song_duration_sec": 220,
"max_clip_sec": 10,
"segments": [
{"id": 1, "start_sec": 0, "end_sec": 10, "duration_sec": 10},
{"id": 2, "start_sec": 10, "end_sec": 19, "duration_sec": 9}
]
}
运行:
python skills/music-mv-storyboard/scripts/validate_timeline.py <timeline.json>
校验失败时调整边界并重跑。只有校验通过才输出和保存最终分镜。不要修改脚本来迁就错误时间轴。
输出与保存
完整输出严格遵循 references/output-template.md。
保存到 storyboards/<歌曲名称>-MV分镜.md。若 storyboards/ 不存在则创建。文件名移除 Windows 不允许的字符。
完成前检查
- 第一轮是否只询问了 10–15 秒整数上限
- 是否获得歌名、完整歌词、风格和总时长
- 是否覆盖前奏、全部歌词、间奏和尾奏
- 每段是否为正整数秒且不超过用户上限
- 时间轴是否连续无重叠、无空隙
- 分段总和是否严格等于歌曲总时长
- 角色、服装、场景和动作是否前后连续
- 所有人物位移是否包含起点、路径、目标、终点站位、最终朝向和视线关系
- 重复副歌是否有视觉呼应与升级
- 每段提示词是否写明自身时长和画幅
- 每段【声音】是否只有环境音与动作音效,并明确声明“无背景音乐,无人声演唱”
- 每段提示词是否不超过 2000 个中文字符
- 校验脚本是否返回成功
- Markdown 文件是否已保存到正确路径