mv-production-standard
$
npx mdskill add aAAaqwq/AGI-Super-Team/mv-production-standardGenerate compliant music videos from audio with mandatory subtitles.
- Creates end-to-end music videos matching specific audio tracks.
- Depends on audio file metadata and lyric timing data.
- Enforces strict rules like lip-sync and no static images.
- Delivers final MP4 files with burned-in synchronized lyrics.
SKILL.md
.github/skills/mv-production-standardView on GitHub ↗
---
name: mv-production-standard
description: MV production standard — end-to-end music video creation workflow
---
# MV Production Standard Skill
> AI MV 制作标准流程 — 每一步都有明确产出,不允许跳步。
## 触发条件
用户要求制作/生成/合成 MV、音乐视频、music video,或任何"给这首歌配视频"的需求。
---
## 铁律(违反 = P0 事故)
| # | 铁律 | 说明 |
|---|------|------|
| 1 | **音频版本** | 必须确认用户指定的版本,不许自作主张换版本。如果用户说"用那个长的",就问清楚是哪个。 |
| 2 | **视频时长** | 视频时长必须与指定音频版本一致(可略长 ≤2s,不可短)。 |
| 3 | **歌词字幕** | 必须有歌词字幕烧录,且对齐到歌曲时间轴。不允许交付无字幕的 MV。 |
| 4 | **口型对齐** | 如果有人物/歌手画面,必须做 lip-sync。不允许人物张嘴但没声音或声音不同步。 |
| 5 | **不允许假视频** | Ken Burns / 静态图推拉不算视频。如果预算/工具不允许生成真视频,必须提前告知用户并取得同意。 |
---
## 完整流程
### Phase 1: 素材确认
**目标**: 锁定所有输入素材,避免后期返工。
**步骤**:
1. **确认音频版本**
- 列出所有可用音频版本(文件名、时长、大小)
- **直接问用户**:"有 v1(270s), v2(274s), v3(236s) 三个版本,你要用哪个?"
- 等用户明确回复后再继续
- 记录选择的版本到工作日志
2. **获取歌词**
- 确认歌词来源(用户提供 / 网上查找)
- 获取带时间轴的歌词(LRC/SRT),或准备好手动打轴
- 如果没有时间轴歌词,在 Phase 3 补上
3. **确认风格与分镜需求**
- 问用户:需要什么风格?(动画/真人/混合)
- 是否有人物出镜?→ 决定是否需要 lip-sync
- 大致场景数量和主题
4. **确认输出规格**
- 分辨率(1080p / 4K)
- 格式(MP4 / MOV)
- 是否需要硬字幕 / 软字幕
**产出文件**:
```
output/{project-name}/
├── config.json # 素材确认记录(音频版本、歌词路径、输出规格)
├── audio/ # 指定版本的音频文件
└── lyrics/ # 歌词文件(纯文本 + LRC/SRT)
```
**关键检查**:
- [ ] 用户已明确指定音频版本
- [ ] 歌词文件已获取
- [ ] 是否有人物出镜已确认
---
### Phase 2: 分镜 → 视频(AI生成或实拍)
**目标**: 为每个场景生成视频素材。
**步骤**:
1. **编写分镜脚本**
- 根据歌词内容和歌曲结构划分场景
- 每个场景指定:起止时间、画面描述、运动方式、是否有人物
- 输出: `storyboard.json` 或 `storyboard.md`
2. **生成/获取视频素材**
- **AI生成**: 使用 Kling / Runway / Pika 等工具
- 每个 clip 建议 5-10s
- 有人物说话的场景标记为需要 lip-sync(Phase 6 处理)
- **实拍**: 如果用户提供实拍素材,直接使用
- ⚠️ **禁止**: 不允许用 Ken Burns(静态图推拉)冒充视频。如果用户明确同意"用图片做过渡"则可以,但必须在分镜中标注
3. **素材质量检查**
- 每个 clip 检查分辨率、时长、画面质量
- 剔除模糊、闪烁、明显错误的 clip
**产出文件**:
```
output/{project-name}/
├── storyboard.md # 分镜脚本
├── clips/ # 各场景视频片段
│ ├── scene01.mp4
│ ├── scene02.mp4
│ └── ...
└── storyboards/ # 分镜图片(如有)
```
**关键检查**:
- [ ] 所有场景都有对应的视频素材(非静态图)
- [ ] 总视频素材时长 ≥ 音频时长
- [ ] 有人物的场景已标记
---
### Phase 3: 音频分析(beat / section / 歌词时间轴)
**目标**: 分析音频结构,建立时间轴。
**步骤**:
1. **节拍分析**
- 使用 `av-sync-workflow` 或音频分析工具
- 提取 BPM、beat 时间点
- 标记歌曲段落:前奏 / 主歌 / 副歌 / 桥段 / 尾奏
- 输出: `beats.json`
2. **歌词时间轴对齐**
- 使用 `lyrics-video-sync` 工具
- 如果有 LRC 文件,解析时间轴
- 如果没有,手动/半自动打轴:听歌标记每句歌词的起止时间
- 每句歌词精确到 0.1s
- 输出: `lyrics.srt` 或 `lyrics.ass`
3. **节拍-画面映射**
- 将分镜场景对齐到歌曲段落
- 关键节拍(副歌起拍、鼓点)对应画面转场
- 输出: `sync-plan.json`(每个转场点的时间 + 对应场景)
**产出文件**:
```
output/{project-name}/
├── beats.json # 节拍时间点
├── sections.json # 歌曲段落划分
├── lyrics.srt # 带时间轴的歌词
└── sync-plan.json # 节拍-画面同步计划
```
**关键检查**:
- [ ] 歌词时间轴已对齐(听一遍确认每句歌词时间正确)
- [ ] 节拍点已提取
- [ ] 场景-段落映射已建立
---
### Phase 4: 音视频同步(卡点对齐)
**目标**: 视频片段精确对齐到歌曲节拍和段落。
**步骤**:
1. **根据 sync-plan.json 剪辑视频片段**
- 按节拍点调整每个场景的起止时间
- 副歌前的场景在鼓点处切换
- 长段落(主歌)可根据内容细分
2. **转场处理**
- 场景间使用交叉淡化(crossfade),默认 0.5-1s
- 禁止硬切(除非用户要求或艺术效果需要)
- 副歌进入时可使用更剧烈的转场(闪白、缩放)
3. **时长校准**
- 如果素材过长:减速或裁剪
- 如果素材过短:使用时间拉伸 / 补充素材
- **确保**: 总视频时长 ≥ 音频时长
4. **粗合成(无字幕)**
- 将所有剪辑后的片段拼接成时间线
- 铺上指定版本的音频
- 输出: `draft_v1.mp4`(粗剪版,不含字幕)
**产出文件**:
```
output/{project-name}/
├── timeline.json # 最终时间线(每个片段的起止时间)
├── transitions.json # 转场设置
└── video/
└── draft_v1.mp4 # 粗剪版(含音频,无字幕)
```
**关键检查**:
- [ ] 视频总时长 ≥ 音频时长(误差 <2s)
- [ ] 关键节拍有对应的画面变化
- [ ] 转场流畅,无明显硬切
- [ ] 草稿版看起来节奏感正确
---
### Phase 5: 歌词字幕(SRT/ASS + 烧录)
**目标**: 生成精确对齐的字幕并烧录到视频。
**步骤**:
1. **字幕文件准备**
- 使用 Phase 3 产出的 `lyrics.srt`
- 如果使用 ASS 格式,设置样式:
- 字体大小、颜色、描边
- 位置(底部居中或随画面调整)
- 动画效果(淡入淡出、逐字显示等)
2. **字幕时间轴校验**
- 在视频播放器中加载字幕,逐句确认对齐
- 重点检查:歌词换气处、副歌重复段落
- 修正偏移量
3. **烧录字幕到视频**
- 使用 ffmpeg 烧录:
```bash
ffmpeg -i draft_v1.mp4 \
-vf "subtitles=lyrics.ass:force_style='FontSize=24'" \
-c:a copy \
draft_v2_with_subtitles.mp4
```
- 或使用 `video-lyrics-subtitle` skill
**产出文件**:
```
output/{project-name}/
├── lyrics.ass # 带样式的字幕文件
└── video/
└── draft_v2_with_subtitles.mp4
```
**关键检查**:
- [ ] 字幕时间轴与音频精确对齐
- [ ] 字幕样式美观、可读
- [ ] 无遗漏歌词
- [ ] 烧录后视频质量无明显下降
---
### Phase 6: Lip-sync(人物口型对齐)
**目标**: 人物画面中口型与歌曲同步。
**⚠️ 仅当有人物出镜时需要此阶段。**
**步骤**:
1. **标记需要 lip-sync 的场景**
- 从 storyboard 中找出有人物说话/唱歌的片段
- 确认这些片段的时间范围
2. **使用 digital-human-api 进行口型对齐**
- 输入: 视频片段 + 对应时间段的音频
- 生成: 口型对齐后的视频片段
- 如果工具不可用,使用替代方案:
- Wav2Lip / SadTalker 等开源工具
- 或重新用 AI 视频生成工具生成带口型的片段
3. **替换原片段**
- 将 lip-sync 后的片段替换回时间线
- 检查拼接处是否平滑
**产出文件**:
```
output/{project-name}/
├── clips_synced/ # 口型对齐后的片段
│ ├── scene08_synced.mp4
│ └── scene09_synced.mp4
└── video/
└── draft_v3_lipsynced.mp4
```
**关键检查**:
- [ ] 人物口型与歌词匹配
- [ ] 口型过渡自然(不卡顿、不扭曲)
- [ ] 替换后时间线无偏移
---
### Phase 7: 最终合成 + 质量检查
**目标**: 输出最终 MV,通过全部质量检查。
**步骤**:
1. **最终合成**
- 整合所有阶段产出
- 确认音频为用户指定版本
- 添加片头/片尾(如需要)
- 输出: `final_mv.mp4`
2. **质量检查清单**(全部通过才能交付):
| # | 检查项 | 通过标准 |
|---|--------|----------|
| 1 | 音频版本 | = 用户指定版本(文件名、时长都匹配) |
| 2 | 视频时长 | ≥ 音频时长,误差 <2s |
| 3 | 歌词字幕 | 已烧录,时间轴正确,无遗漏 |
| 4 | 口型对齐 | 有人物场景口型已同步(如适用) |
| 5 | 转场 | 场景切换流畅,无硬切 |
| 6 | 音画同步 | 关键节拍有对应画面变化 |
| 7 | 画质 | 无明显压缩伪影,分辨率符合要求 |
| 8 | 总体观感 | 连续看完一遍,主观感受流畅 |
3. **生成交付包**
```
output/{project-name}/deliver/
├── final_mv.mp4 # 最终MV
├── lyrics.srt # 外挂字幕(可选)
├── lyrics.ass # ASS字幕(可选)
├── config.json # 素材配置记录
└── README.md # 制作说明
```
**产出文件**:
```
output/{project-name}/deliver/
└── final_mv.mp4 # 最终交付文件
```
---
## 目录结构标准
```
output/{project-name}/
├── config.json # Phase 1: 素材确认
├── audio/ # Phase 1: 音频文件
│ └── {version}.mp3
├── lyrics/ # Phase 1: 歌词
│ ├── lyrics.txt
│ └── lyrics.srt
├── storyboard.md # Phase 2: 分镜
├── clips/ # Phase 2: 视频素材
├── beats.json # Phase 3: 节拍
├── sections.json # Phase 3: 段落
├── sync-plan.json # Phase 3: 同步计划
├── timeline.json # Phase 4: 时间线
├── transitions.json # Phase 4: 转场
├── clips_synced/ # Phase 6: 口型对齐片段
├── video/ # 各阶段视频产出
│ ├── draft_v1.mp4 # Phase 4: 粗剪
│ ├── draft_v2_with_subtitles.mp4 # Phase 5: 加字幕
│ ├── draft_v3_lipsynced.mp4 # Phase 6: 加口型
│ └── final_mv.mp4 # Phase 7: 最终版
└── deliver/ # 交付包
└── final_mv.mp4
```
---
## 常见问题
### Q: 用户没有指定音频版本怎么办?
**A: 停下来问。** 列出所有版本和时长,等用户回复。绝不自作主张。
### Q: 工具不足以完成某个 Phase 怎么办?
**A: 诚实告知用户。** 说明缺少什么工具、有什么替代方案、需要多少额外时间/成本。不要偷工减料。
### Q: 时间紧迫,可以跳过某些步骤吗?
**A: 可以,但必须告知用户跳过了什么、影响是什么。** 让用户做权衡决策。默认不可跳过 Phase 1(素材确认)和 Phase 7(质量检查)。
### Q: Ken Burns 效果什么时候可以用?
**A: 仅当用户明确同意用图片过渡时使用。** 且必须在分镜中标注为"静态图过渡"。不能把静态图当真视频交付。
---
## 相关 Skills
| Skill | 用途 |
|-------|------|
| `av-sync-workflow` | 音视频同步、节拍对齐 |
| `lyrics-video-sync` | 歌词时间轴对齐 |
| `video-lyrics-subtitle` | 字幕烧录 |
| `digital-human-api` | Lip-sync 口型对齐 |
| `mv-generator` | MV 管线集成 |
---
## 版本历史
| 版本 | 日期 | 说明 |
|------|------|------|
| 1.0 | 2026-04-12 | 初始版本,基于《樱花落尽时》MV 制作教训总结 |