mv-generator

$npx mdskill add aAAaqwq/AGI-Super-Team/mv-generator

Generate complete music videos from audio and lyrics instantly.

  • Creates end-to-end music videos for virtual singers.
  • Integrates audio analysis, image generation, and video synthesis.
  • Analyzes BPM and lyrics to design scenes and frames.
  • Outputs final merged video with synced audio and subtitles.

SKILL.md

.github/skills/mv-generatorView on GitHub ↗
---
name: mv-generator
description: MediaClaw 内置的音乐视频端到端生成技能。
  End-to-end MV (music video) generation pipeline for virtual singers.
  Audio analysis → Scene timeline → Frame generation → Video generation → Final merge.
  Use when: creating music videos, generating MV frames, syncing video to audio.
---

# MV Generator — 音乐视频生成管线

MediaClaw 内置的音乐视频端到端生成技能。

## 触发词
- 生成MV
- MV制作
- 音乐视频
- mv generator
- 虚拟歌手MV

## 管线流程

```
音频文件 + 歌词 + 角色卡
        │
        ▼
┌────────────────────────────┐
│  Step 1: 音频分析            │
│  scripts/audio-analyzer.py  │
│  → 时长、BPM、场景时间线     │
└────────────┬───────────────┘
             │
             ▼
┌────────────────────────────┐
│  Step 2: 歌词解析            │
│  scripts/lyrics-parser.py   │
│  → 段落结构、情绪曲线        │
└────────────┬───────────────┘
             │
             ▼
┌────────────────────────────┐
│  Step 3: 场景+帧设计         │
│  scripts/scene-design.py    │
│  → 场景类型、运镜、首尾帧prompt │
└────────────┬───────────────┘
             │
             ▼
┌────────────────────────────┐
│  Step 4: 帧图像生成          │
│  qingyun gpt-image-1 API    │
│  → 每场景 first+last frame  │
└────────────┬───────────────┘
             │
             ▼
┌────────────────────────────┐
│  Step 5: 视频片段生成        │
│  kling-2 / veo-3.1 / etc    │
│  → 首帧→尾帧 5s 视频片段    │
└────────────┬───────────────┘
             │
             ▼
┌────────────────────────────┐
│  Step 6: 最终合成            │
│  FFmpeg merge               │
│  → 音轨对齐+转场+字幕       │
└────────────────────────────┘
```

## 输入

| 参数 | 必填 | 说明 |
|------|------|------|
| `audio_file` | ✅ | 音频文件路径 (.mp3/.wav/.m4a) |
| `lyrics` | ✅ | 歌词文本 |
| `character_card` | ✅ | 角色卡 JSON(外貌、声音、风格) |
| `style` | ❌ | cinematic / realistic / anime / ethereal |
| `num_scenes` | ❌ | 分镜数(默认 9) |
| `output_dir` | ❌ | 输出目录(默认: `MediaClaw/output/<project>/`) |

## 输出目录结构

```
output/<project-name>/
├── README.md              ← 项目概要 + 时间轴
├── frames/                ← 首尾帧图像
│   ├── 01_first.png
│   ├── 01_last.png
│   └── ...
├── audio/                 ← 音频文件(多版本)
│   └── song_v1.mp3
├── script/                ← MV 剧本
│   ├── mv_final.json      ← 精准时间轴 JSON
│   ├── mv_final.md        ← 人类可读剧本
│   └── character.json     ← 角色卡
├── docs/                  ← 文档和参考素材
│   └── avatar.png
└── video/                 ← 生成的视频片段(Step 5 产出)
    ├── scene_01.mp4
    └── ...
```

## 经验总结(来自 Chloe《樱花落尽时》项目)

### 图像生成最佳实践
| 项目 | 推荐 | 备注 |
|------|------|------|
| 模型 | qingyun `gpt-image-1` | 成功率最高 |
| API | `/v1/images/generations` | 比 edits 更稳定 |
| 尺寸 | `1024x1536`(竖版) | 必须用规定尺寸 |
| 并发 | 2-3 并发 | 过多会 SSL EOF |
| 重试 | 失败单独重试 | 不整批重跑 |

### 角色一致性技巧
- **统一 prompt prefix**: 包含角色核心外貌特征
- **参考图**: 用 edits API 传入角色头像(但成功率低)
- **场景限定词**: 每帧 prompt 固定前缀 + 场景变量

### 音频同步
- 用 `mutagen` 读 MP3 时长(无需 ffprobe)
- 场景时间按歌曲结构比例分配
- BPM 检测需 `librosa`(可选)

### 视频模型选择
| 情绪 | 模型 | 场景类型 |
|------|------|---------|
| ≤ 6.0 | kling-1.6 | 静态/自然/国风 |
| 6.0-8.0 | kling-1.6 或 kling-2 | 过渡 |
| ≥ 8.0 | kling-2 | 爆发/力量 |
| 360°旋转 | veo-3.1 | 特殊运镜 |

## 依赖
- Python: mutagen, requests
- 外部 API: qingyun (图像), xingjiabi (视频), Google (veo-3.1)
- 可选: librosa (BPM), ffmpeg (合成)

## 参考
- [audio-analyzer.py](scripts/audio-analyzer.py) — 音频分析
- [Chloe 项目完整输出](../../output/chloe-sakura-mv/)
- [virtual-singer-mv-script](~/clawd/skills/virtual-singer-mv-script/) — 独立 MV 剧本 skill

More from aAAaqwq/AGI-Super-Team