AI Music Video Generator
Create complete music videos: AI music + AI visuals + ffmpeg assembly.
Quick Start
CODEBLOCK0
Workflow
1. Plan scenes from lyrics/mood
Before generating, create
prompts.json — array of scene descriptions derived from the song's lyrics, mood, and narrative. 8-12 scenes for a 3-min song.
CODEBLOCK1
2. Generate music
CODEBLOCK2
Options:
- -
--model V4_5ALL (default), V5, V4_5PLUS, V4_5, INLINECODE5 - INLINECODE6 — no vocals
- INLINECODE7 — vocal gender hint
- INLINECODE8 — styles to avoid
- INLINECODE9 — generate Suno native music video (MP4)
- INLINECODE10 — cost check only
Persona (일관된 스타일 유지):
- -
--persona-id ID — 기존 페르소나 사용 (같은 보컬/스타일로 여러 곡 생성) - INLINECODE12 — 생성된 곡에서 페르소나 생성 →
persona.json 저장 - INLINECODE14 /
--persona-desc "설명" / INLINECODE16
Auto features:
- - 🎤 Timestamped Lyrics: Non-instrumental tracks automatically fetch lyrics timestamps and save as INLINECODE17
- 🎬 Suno Native MV: With
--music-video, Suno generates a visualized MP4 video directly - 🎭 Persona: With
--create-persona, extracts voice/style identity for reuse
3. Generate visuals (custom MV flow)
CODEBLOCK3
Or with OpenAI (cheaper, lower res):
bash scripts/gen_visuals.sh \
--mode slideshow \
--prompts-file /tmp/mv_project/prompts.json \
--image-provider openai --image-model gpt-image-1-mini --image-quality medium \
--outdir /tmp/mv_project
Add
--dry-run first to show cost estimate before spending.
4. Assemble
CODEBLOCK5
Subtitle behavior:
- - Auto-detects
{outdir}/lyrics.srt and overlays lyrics automatically - INLINECODE22 — use custom SRT file
- INLINECODE23 — disable lyrics overlay entirely
Modes
| Mode | Visual | Best For | Cost (10 scenes) |
|---|
| INLINECODE24 | AI images | Fast, cheap | ~$0.02 (mini low) / ~$0.09 (mini med) / ~$0.45 (Seedream) |
| INLINECODE25 |
AI video clips | Premium | ~$1.40 (Seedance Lite) / ~$8.00 (Sora 2) |
|
hybrid | Mix of both | Balanced | ~$0.50-$4.00 |
|
suno-native | Suno MV | Easiest | Suno credits only |
Image cost is token-based — actual billing may be lower than listed estimates. Use --dry-run for precise cost.
Provider Options
Images: --image-provider seedream (recommended), openai, or google-together
Image Model (OpenAI): --image-model gpt-image-1-mini (default, cheap) or gpt-image-1 (premium)
Videos: --video-provider sora (default), sora-pro, seedance-lite, seedance-pro, veo-fast, veo-audio
Quality: INLINECODE40
Cost Tracking
Every script outputs cost before and after. Always --dry-run first.
Cost data saved to {outdir}/cost_estimate.json and {outdir}/visuals_meta.json.
Environment Variables
CODEBLOCK6
⚠️ Required keys: SUNO_API_KEY and OPENAI_API_KEY must be set before running any script.
BYTEPLUS_API_KEY is needed for Seedream image provider (sign up at console.byteplus.com, 200 free images).
TOGETHER_API_KEY is only needed for Seedance/Veo/Imagen providers.
Callback URL
The Suno API requires a callBackUrl field for music generation requests.
By default, if SUNO_CALLBACK_URL is not set, the script uses https://localhost/noop
as a harmless no-op endpoint (an unreachable localhost URL that effectively disables callbacks).
To customize: set SUNO_CALLBACK_URL to your own endpoint, or set it to
any dummy URL you control. The callback payload contains task metadata and
audio URLs — no API keys are sent.
To disable: set SUNO_CALLBACK_URL=https://localhost/noop or any unreachable URL.
Generation still works via polling; the callback is not required for the script to function.
Persona Workflow (채널 컨셉 유지)
YouTube 채널처럼 일관된 스타일로 여러 곡을 만들 때:
CODEBLOCK7
페르소나는 보컬 특성 + 음악 스타일을 기억해서, 채널 전체의 통일감을 유지해줌.
Prerequisites
- -
curl, python3, ffmpeg (for assembly)
References
- - SunoAPI details: Read INLINECODE56
- Visual provider details: Read INLINECODE57
AI音乐视频生成器
创建完整的音乐视频:AI音乐 + AI视觉 + ffmpeg合成。
快速开始
给我一首90年代男孩乐队风格的韩语歌 → 仅音乐
给我做个抒情MV → 音乐 + 幻灯片MV
EDM MV完整视频 → 音乐 + 视频片段MV
把Suno做成MV → Suno原生音乐视频
工作流程
1. 根据歌词/情绪规划场景
在生成之前,创建prompts.json — 从歌曲的歌词、情绪和叙事中衍生出的场景描述数组。一首3分钟的歌曲需要8-12个场景。
json
[
{prompt: 霓虹灯照亮的城市街道夜景,雨中的倒影, type: image},
{prompt: 日落时分,镜头缓缓扫过屋顶, type: video},
一个孤独的身影穿过樱花林
]
2. 生成音乐
bash
bash scripts/suno_music.sh \
--prompt 歌词或描述 \
--style 90年代男孩乐队流行音乐,韩语 \
--title 只想要你 \
--model V4_5ALL --custom \
--outdir /tmp/mv_project
选项:
- - --model V45ALL(默认)、V5、V45PLUS、V4_5、V4
- --instrumental — 无演唱
- --vocal-gender m|f — 演唱性别提示
- --negative-tags 重金属音乐,鼓点 — 要避免的风格
- --music-video — 生成Suno原生音乐视频(MP4)
- --dry-run — 仅检查成本
角色(保持风格一致):
- - --persona-id ID — 使用现有角色(用相同的演唱/风格生成多首歌曲)
- --create-persona — 从生成的歌曲创建角色 → 保存到persona.json
- --persona-name 名称 / --persona-desc 描述 / --persona-style 风格
自动功能:
- - 🎤 带时间戳的歌词:非纯音乐曲目会自动获取歌词时间戳并保存为{outdir}/lyrics.srt
- 🎬 Suno原生MV:使用--music-video,Suno直接生成可视化的MP4视频
- 🎭 角色:使用--create-persona,提取声音/风格身份以供重复使用
3. 生成视觉内容(自定义MV流程)
bash
bash scripts/gen_visuals.sh \
--mode slideshow \
--prompts-file /tmp/mv_project/prompts.json \
--image-provider seedream \
--outdir /tmp/mv_project
或使用OpenAI(更便宜,分辨率较低):
bash
bash scripts/gen_visuals.sh \
--mode slideshow \
--prompts-file /tmp/mv_project/prompts.json \
--image-provider openai --image-model gpt-image-1-mini --image-quality medium \
--outdir /tmp/mv_project
先添加--dry-run查看成本估算,再开始消费。
4. 合成
bash
bash scripts/assemble_mv.sh \
--audio /tmp/mv
project/track0_xxx.mp3 \
--outdir /tmp/mv_project \
--output /tmp/mv
project/finalmv.mp4 \
--transition fade
字幕行为:
- - 自动检测{outdir}/lyrics.srt并自动叠加歌词
- --subtitle /path/to/custom.srt — 使用自定义SRT文件
- --no-subtitle — 完全禁用歌词叠加
模式
| 模式 | 视觉内容 | 最适合 | 成本(10个场景) |
|---|
| slideshow | AI图片 | 快速、便宜 | ~$0.02(mini低质量)/ ~$0.09(mini中等质量)/ ~$0.45(Seedream) |
| video |
AI视频片段 | 高级 | ~$1.40(Seedance Lite)/ ~$8.00(Sora 2) |
| hybrid | 两者混合 | 平衡 | ~$0.50-$4.00 |
| suno-native | Suno MV | 最简单 | 仅需Suno积分 |
图片成本基于token — 实际计费可能低于所列估算。使用--dry-run获取精确成本。
提供商选项
图片: --image-provider seedream(推荐)、openai或google-together
图片模型(OpenAI): --image-model gpt-image-1-mini(默认,便宜)或gpt-image-1(高级)
视频: --video-provider sora(默认)、sora-pro、seedance-lite、seedance-pro、veo-fast、veo-audio
质量: --image-quality low|medium|high
成本追踪
每个脚本都会在运行前后输出成本。始终先使用--dry-run。
成本数据保存到{outdir}/costestimate.json和{outdir}/visualsmeta.json。
环境变量
bash
export SUNOAPIKEY=你的sunoapi密钥 # 必需 — sunoapi.org
export OPENAIAPIKEY=你的openai密钥 # 必需 — 图片 + Sora视频
export BYTEPLUSAPIKEY=你的byteplus密钥 # 可选 — Seedream 4.5(推荐用于图片)
export TOGETHERAPIKEY=你的together密钥 # 可选 — Seedance、Veo、Imagen
export SUNOCALLBACKURL= # 可选 — 参见下面的回调URL
⚠️ 必需密钥: 运行任何脚本前必须设置SUNOAPIKEY和OPENAIAPIKEY。
使用Seedream图片提供商时需要BYTEPLUSAPIKEY(在console.byteplus.com注册,200张免费图片)。
仅在使用Seedance/Veo/Imagen提供商时需要TOGETHERAPIKEY。
回调URL
Suno API在音乐生成请求中需要callBackUrl字段。
默认情况下,如果未设置SUNOCALLBACKURL,脚本使用https://localhost/noop
作为无害的无操作端点(一个无法访问的localhost URL,有效禁用回调)。
自定义: 将SUNOCALLBACKURL设置为自己的端点,或设置为
任何你控制的虚拟URL。回调负载包含任务元数据和
音频URL — 不会发送API密钥。
禁用: 将SUNOCALLBACKURL=https://localhost/noop或任何无法访问的URL。
通过轮询仍然可以生成;脚本运行不需要回调。
角色工作流程(保持频道概念)
当像YouTube频道一样以一致风格制作多首歌曲时:
bash
1. 生成第一首歌 + 创建角色
bash scripts/suno_music.sh \
--prompt 边代码审查边听的歌 \
--style 独立摇滚,充满活力,编程氛围 \
--title Pull Request \
--custom --create-persona \
--persona-name 开发者工作歌歌手 \
--persona-desc 适合开发者编码时听的充满活力的演唱。跨越独立摇滚、电子、流行风格。 \
--persona-style 独立摇滚,电子,开发者工作音乐 \
--outdir /tmp/dev-bgm-01
2. 从persona.json查看personaId
cat /tmp/dev-bgm-01/persona.json
3. 使用相同角色生成下一首歌 — 保持演唱/风格一致性
bash scripts/suno_music.sh \
--prompt 加班时听的歌 \
--style 电子流行,夜间编程 \
--title 午夜部署 \
--custom --persona-id
\
--outdir /tmp/dev-bgm-02
角色会记住演唱特征 + 音乐风格,从而保持整个频道的统一感。
先决条件
- - curl、python3、ffmpeg(用于合成)
参考
- - SunoAPI详情: 阅读references/sunoapi.md
- 视觉提供商详情: 阅读references/visual-providers.md