# Mv Production Standard

> MV production standard — end-to-end music video creation workflow

- Skill: `aaaaqwq/mv-production-standard` (Agent Skill)
- Install (CLI): `npx skillmds@latest add aaaaqwq/mv-production-standard`
- Raw SKILL.md: https://api.skillmd.com/api/skills/aaaaqwq/mv-production-standard/raw
- Safety review: pending (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Productivity
- Author: aAAaqwq (https://skillmd.com/u/aaaaqwq)
- Updated: 2026-09-09
- Page: https://skillmd.com/skills/aaaaqwq/mv-production-standard

---


# 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 制作教训总结 |

