Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
joeseesun avatar

Qiaomu Mtv Creator

  • 9 installs
  • 7 repo stars
  • Updated June 1, 2026
  • joeseesun/qiaomu-mtv-creator

Generate music video subtitles and lyric synchronization from audio files for MTV-style video creation.

About

Creates time-synced lyric files (LRC/SRT) from audio for music video production. Integrates with Suno music generation for automated video asset creation.

  • Generates LRC/SRT subtitle files with precise time synchronization
  • Integrates with Suno-generated audio for end-to-end video production

Qiaomu Mtv Creator by the numbers

  • 9 all-time installs (skills.sh)
  • Ranked #1,065 of 1,335 Generative Media skills by installs in the Skillselion catalog
  • Data as of Aug 2, 2026 (Skillselion catalog sync)
npx skills add https://github.com/joeseesun/qiaomu-mtv-creator --skill qiaomu-mtv-creator

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs9
repo stars7
Last updatedJune 1, 2026
Repositoryjoeseesun/qiaomu-mtv-creator

What it does

Generate music video subtitles and lyric synchronization from audio files for MTV-style video creation.

Files

SKILL.mdMarkdownGitHub ↗

Qiaomu MTV Creator - AI 音乐视频制作

将 Suno 生成的歌曲自动转换为两类 MV:稳定快速的传统配图字幕版,以及更像音乐视频的 HyperFrames/GSAP 动态歌词版。

V2.4 升级要点

  • MTV 审美规则沉淀:新增“画面、字幕、转场、字体、验收”的设计原则。未来不要把 Hyper MV 做成固定底部字幕的幻灯片;每首歌都要有和歌词意象一致的 motion grammar。
  • 字幕系统升级:默认 Hyper 模板要使用多安全区 anchor、轻微倾斜、词级 stagger、回声/描边/玻璃质感等可控变化。字幕可以不规则,但必须服务歌曲气质;避免逐帧抖动、过度缩放、粗糙旋转和一直居中。
  • 转场系统升级:图片之间不只做淡入淡出。默认组合柔和溶解、玻璃擦拭、光扫、纹理遮罩、轻微场景分层,让镜头推进保留,同时让 scene change 有记忆点。
  • 字体本地化:Hyper 模板默认打包 Anton + Space Grotesk 本地 woff2,避免渲染时回退到系统字体导致质感变差或不同机器表现不一致。
  • 去模板痕迹:片头必须使用真实歌曲标题,优先从 LRC [ti:]、项目元数据或字幕文件名读取,并清理 clip/hash 后缀;motion profile、debug label、URL slug、占位文字不能出现在成片里。
  • 固定作者署名:所有歌曲作者/artist/author 默认写 向阳乔木。不要从 Suno、文件名、URL、LRC [by:] 或模型输出里猜作者;片头需要署名时也使用 向阳乔木
  • 音频 UI 默认关闭:波形、频谱、进度条、节拍脉冲不再作为默认装饰。只有当歌曲概念明确需要“播放器/电台/信号/电子可视化”时才打开;冷感、叙事、梦幻歌曲默认不出现这些界面化元素。
  • 渲染脚本稳定化render_hyper_mtv.py 默认使用本机 Puppeteer headless shell、streaming encode、长超时、缓存限制和 SDR 输出,并按可回收内存选择 worker,减少手动拼环境变量和系统 Chrome 崩溃概率。

V2.3 升级要点

  • 新名字:主 skill 名为 qiaomu-mtv-creator;旧名 mtv-creator 不再保留,避免别名误触发。
  • 单源目录:skill 实体只放在 /Users/joe/.agents/skills/qiaomu-mtv-creator;不要再创建 .claude 兼容软链或 mtv-creator 旧名入口。
  • 双模式classic 保留传统 FFmpeg 配图字幕工作流;hyper 用 HyperFrames + GSAP 制作动态歌词、场景内排版、音频响应和更丰富转场。
  • GSAP 官方技能吸收:已吸收 greensock/gsap-skills 的 core/timeline/plugins/utils/performance 规则,落到 references/gsap-mtv-motion.md,并由 scripts/create_hyper_mtv.py 自动生成更丰富的 HyperFrames/GSAP MTV 工程。
  • 动效谱系:Hyper 模式新增 cinematicposterglitchdreamminimal 五个 motion profile,用 GSAP timeline labels、position parameter、stagger、transform aliases、autoAlphagsap.utils.wrap() 等模式组织场景、歌词、粒子、光扫和节拍脉冲。
  • 渲染加速策略:新增 scripts/render_hyper_mtv.py,根据可用内存选择 HyperFrames quality/fps/workers;低内存时先提示清理,不再默认硬开 auto workers。
  • SRT/LRC 统一:自动识别 Suno 同版本 .srt / .lrc,LRC 会转换为项目内可烧录 SRT。
  • 项目化输出:每次生成 project.jsontimeline.jsonpreflight_report.jsonstoryboard.html
  • 可恢复阶段:通过 --stage preflight|prepare|storyboard|images|compose|hyper|all 分步运行。
  • Codex 生图优先--image-provider auto 在 Codex 环境中解析为 codex-plan,优先让 Codex 内置生图接管关键帧;只有 Codex 生图不可用或非 Codex 运行时才回退即梦。
  • 字幕 fallback:如果本机 FFmpeg 没有 subtitles / drawtext filter,会自动用 Pillow 渲染透明字幕层再 overlay。

核心流程

Suno 歌曲(含 .srt / .lrc 精准歌词)
    ↓
解析为统一 timeline.json → preflight 检查 → storyboard.html
    ↓
Claude/Codex 读歌词 → 分析歌曲结构 → 生成 visual_config.json
    ↓
生图:优先 Codex 内置生图计划;失败或不可用时才用即梦批量落盘 fallback
    ↓
合成 MV:classic 用 FFmpeg;hyper 用 HyperFrames + GSAP kinetic timeline
    ↓
输出: MTV 视频 (MP4)

⚠️ 重要原则

1. 用 Suno SRT,不用 Whisper:Suno 生成歌曲时已自动生成精准 SRT,路径与 mp3 同目录,优先使用 2. Claude 直接生成描述:Claude Code 本身就是大模型,读 SRT 后直接生成视觉描述,不调第三方 API 3. 音频选版本:Suno 会生成两个版本(.mp3 和 -1.mp3),选时长更长、覆盖所有 SRT 时间戳的版本 4. skill 单源在 .agents:所有新增和修改都落在 /Users/joe/.agents/skills/qiaomu-mtv-creator;不要恢复 .claude 兼容软链或旧 mtv-creator 别名 5. Codex 生图优先,不先跑即梦:Codex 内置生图质量通常更适合关键帧;脚本生成 codex_image_requests.md 供 Codex 接管。只有 Codex 生图不可用、用户明确要求 fallback、或非 Codex 自动运行时,才使用即梦。 6. Suno 资料先走 qiaomu-suno-master:遇到 Suno URL、clip ID、下载音频、导出 LRC/SRT,先使用 /Users/joe/.agents/skills/qiaomu-suno-master,不要先手写抓页面。 7. Hyper 渲染先看内存hyperframes render --workers auto 在可用内存很低时会同时启动多个浏览器并失败;最终渲染前先跑 render_hyper_mtv.py --dry-run,低于阈值时请用户清理内存,除非用户接受慢速 --allow-low-memory。 8. GSAP 只用可渲染时间线:HyperFrames 里 GSAP 必须同步创建 paused timeline,注册到 window.__timelines.main;不要 tl.play()、不要 Date.now() / Math.random() / 网络 fetch / 无限 repeat。 9. MV 不是歌词 PPT:默认避免“整首歌固定底部居中字幕 + 每张图同一种淡入淡出”。字幕、转场、镜头和氛围层都要有歌曲自己的节奏,但不能抢歌词。 10. 字幕稳定优先:字幕动效可以丰富,但不能抖。优先使用 autoAlphay、低幅度 rotation、词级 stagger 和长一点的 sine/power ease;少用大幅 scalerotationX、短促抖动和频繁 filter 切换。 11. 从歌词意象生成 motion grammar:玻璃、雨、盐、霓虹、纸张、广播、海、风等意象要变成对应的视觉动效语言,例如 glass wipe、rain streak、salt grain、signal scan、paper slip,而不是套同一套模板。 12. 不要让模板身份露出:片头可以有设计标题,但不能出现 Poster Motioncinematic motionplaceholder、URL slug、clip id/hash、脚本调试名。真实歌名优先从 LRC [ti:] 获取,例如 Salt On Glass,不要显示 salt-on-glass-ba258447。 13. 不要把 MV 做成播放器界面:波形、频谱、进度条、均衡器、底部节拍线默认关闭。除非歌曲主题是广播、电台、信号、俱乐部、电子设备或用户明确要求,否则这些元素会破坏沉浸感。 14. 作者固定为向阳乔木:项目元数据、HyperFrames mtv-data.json、片头署名、发布说明中的歌曲作者统一写 向阳乔木,不要使用 Suno AI、下载账号、文件名、URL slug 或 LRC [by:] 作为作者。

MTV 设计原则与风格原则

做 Hyper MTV 时先定一个 4 层视觉系统,而不是直接套模板:

1. 画面层:关键帧要有统一摄影/插画风格、稳定色彩、重复母题。镜头推进可以慢,但每个段落的推进方向、焦点和速度要略有差别。 2. 字幕层:字幕是 MV 的表演者,不是外挂字幕。每行歌词可以在 4-7 个安全 anchor 中切换:左下、右上、右中、左墙、低位桌面、居中宽屏等。位置变化要和画面负空间匹配,不能遮住主要主体。 3. 字体层:每支 MV 至少有明确字体气质。优先选择凝练、有音乐感的 display sans / condensed sans;不要默认系统粗体一直居中。温柔歌用窄体、细腻阴影、低对比回声;强烈歌再用红色描边、glitch、切片。 4. 转场层:每个 scene change 至少叠加两种转场语言,例如 cross-dissolve + glass sweep、soft bloom + texture wipe、rain scan + parallax drift。避免所有图片之间同一种 xfade。 5. 氛围层:粒子、波形、光扫、噪声、进度条要低调服务节奏。不要为了“动”而动;能表达歌词母题的动效优先。 6. 片头层:片头是作品的一部分,不是模板封面。只显示真实歌名或经过设计的短标题;作者署名统一写 向阳乔木。不要显示 motion profile、工程名、哈希后缀、下载文件名、调试标签。

字幕风格要按歌曲气质调节:

  • 梦幻/怀旧/冷感:位置有轻微漂移但不跳;文字可偏左/偏右,带玻璃回声、柔和描边、低透明度重复影;转场用长溶解、光扫、雾化遮罩。
  • 摇滚/脏感/强节拍:可使用更大字号、upper-case、红色/暖色强调词、切片、扫描线和短促冲击,但要控制在副歌或强拍。
  • 民谣/叙事/安静:减少字词拆分,使用低位、侧边或画面负空间的排版;用纸张、影子、窗光、慢变焦表达段落。
  • 电子/赛博/不稳定:允许 glitch、scanline、短促位移和硬切,但要避免全程抖动造成阅读疲劳。

质量门槛:

  • 抽帧时不能整首歌都像同一个字幕位置的重复截图。
  • 相邻两三帧字幕边缘不应出现肉眼可见抖动。
  • 转场不能黑屏,不能只有硬淡出;至少几处 scene change 要能看出歌曲母题。
  • 标题/水印式模板文字默认只用于片头,不能整首歌常驻左上角干扰歌词;片头也不能出现 profile label、slug 或 hash。
  • 波形、频谱、进度条、节拍线这类播放器 UI 默认不出现;抽帧看到它们时,需要能说清楚它们为什么属于这首歌。

标准工作流(Claude Code 操作)

Step 1:准备项目与 Storyboard

python /Users/joe/.agents/skills/qiaomu-mtv-creator/scripts/create_mtv.py \
    --audio "/path/to/song-1.mp3" \
    --style ink-painting \
    --ratio 16:9 \
    --stage prepare

检查输出:

project.json
timeline.json
preflight_report.json
storyboard.html
visual_config.json
codex_image_requests.md

Step 2A:Codex 内置生图接管关键帧(默认优先)

python /Users/joe/.agents/skills/qiaomu-mtv-creator/scripts/create_mtv.py \
    --audio "/path/to/song-1.mp3" \
    --style ink-painting \
    --ratio 16:9 \
    --stage prepare

然后由 Codex 读取 codex_image_requests.md 逐张生成 images/scene_XX.png。完成后:

python /Users/joe/.agents/skills/qiaomu-mtv-creator/scripts/create_mtv.py \
    --audio "/path/to/song-1.mp3" \
    --visual-config "/path/to/project/visual_config.json" \
    --stage compose

Step 2B:即梦 fallback(仅 Codex 生图不可用时)

python /Users/joe/.agents/skills/qiaomu-mtv-creator/scripts/create_mtv.py \
    --audio "/path/to/song-1.mp3" \
    --style ink-painting \
    --ratio 16:9 \
    --output ~/Videos/MTV/项目名/ \
    --skip-transcribe \
    --subtitle "/path/to/song.srt" \
    --visual-config "/path/to/project/visual_config.json" \
    --stage images \
    --image-provider jimeng \
    --workers 5

Step 2C:HyperFrames / GSAP 动态歌词 MV(推荐模式)

适合用户明确要求“不像幻灯片”“歌词更酷”“画面随音乐动”“参考 HyperFrames”的任务。传统 classic 模式仍然保留;hyper 是更高表现力、更慢但更像 MV 的模式。

工作流:

1. 先用本 skill 的 prepare 生成 timeline.jsonvisual_config.json、关键帧生图计划。 2. 用 Codex 内置生图生成 images/scene_XX.png。 3. 运行 --stage hyper 自动生成 hyper-mv/:复制音频/关键帧,写入 assets/mtv-data.js,创建本地 assets/gsap.min.js 和 GSAP-rich index.html。 4. 先运行 npm run checknpx hyperframes inspect --samples 24,确认没有 console error、对比度问题、歌词越界。 5. 快速预览用 draft profile,最终版用 final profile。

生成 HyperFrames 工程:

python /Users/joe/.agents/skills/qiaomu-mtv-creator/scripts/create_mtv.py \
    --audio "/path/to/song-1.mp3" \
    --subtitle "/path/to/song.srt" \
    --visual-config "/path/to/project/visual_config.json" \
    --stage hyper \
    --motion-profile cinematic

动效谱系:

Profile适用特点
cinematic流行、摇滚、叙事歌慢推拉、稳重歌词入场、克制节拍脉冲
poster复古、民谣、插画风海报纸感、轻微错位、块面化歌词
glitch电子、愤怒、赛博扫描线、短促抖动、锐利切换
dream氛围、怀旧、柔和歌曲长溶解、漂浮粒子、柔和 blur-in
minimal细腻歌词、spoken 段落少动效、安静淡入淡出

快速预览:

python /Users/joe/.agents/skills/qiaomu-mtv-creator/scripts/render_hyper_mtv.py \
    --project "/path/to/project/hyper-mv" \
    --profile review

最终渲染:

python /Users/joe/.agents/skills/qiaomu-mtv-creator/scripts/render_hyper_mtv.py \
    --project "/path/to/project/hyper-mv" \
    --profile final \
    --check

优先使用 render_hyper_mtv.py 而不是手写 npx hyperframes render。脚本会自动:

  • 选择本机 Puppeteer chrome-headless-shell,避免系统 Chrome 版本/权限导致渲染不稳。
  • 开启 streaming encode,长视频不先堆满帧缓存。
  • 设置 Puppeteer 启动/协议超时、帧缓存上限和 --sdr
  • 按内存自动选择 worker;需要更快时先看 --dry-run 输出,再决定是否显式 --workers 2/3

如果脚本提示 LOW MEMORY,先请用户清理内存或关闭重型应用,再重新渲染。只有用户明确接受“慢一点也行”时,才使用:

python /Users/joe/.agents/skills/qiaomu-mtv-creator/scripts/render_hyper_mtv.py \
    --project "/path/to/project/hyper-mv" \
    --profile final \
    --allow-low-memory

刚才实测教训:hyperframes render --workers auto 在 0.3GB immediate free memory 时会校准后尝试多 worker,随后多个浏览器进程同时启动失败;--workers 1 可以完成,但 220 秒 1080p 视频耗时约 7 分 39 秒。因此默认策略是:内存足够时多 worker 换速度,内存低时先问用户清理,而不是静默退到慢速。

参数说明

参数短参数默认值说明
--audio-a(必填)音频文件路径
--lyrics-l自动查找歌词文件路径(.lyrics.json)
--style-snewyorker配图风格(见风格列表)
--ratio-r9:16视频比例(9:16/16:9/1:1)
--output-o~/Videos/MTV/输出目录
--workers-w3并发生成配图数(推荐 5)
--stageall分阶段运行:preflight/prepare/storyboard/images/compose/hyper/all
--image-providerauto生图后端:auto/codex-plan/jimeng/none;auto 在 Codex 中优先 codex-plan,非 Codex 才回退 jimeng
--motion-profilecinematicHyperFrames/GSAP 动效谱系:cinematic/poster/glitch/dream/minimal
--hyper-dir项目目录/hyper-mvHyperFrames 工程输出目录
--preflight-onlyfalse只检查输入和时间轴
--storyboard-onlyfalse只生成 storyboard 预览
--no-subtitlefalse不烧录字幕
--skip-transcribefalse跳过转录(现在会自动优先使用 Suno SRT/LRC,通常不必手动指定)
--skip-imagesfalse跳过生图(已有图片时使用)
--subtitle自动查找指定 SRT/LRC 文件路径
--images-dir自动指定已有图片目录
--visual-config-指定配图配置文件

风格推荐

歌曲类型推荐风格
摇滚/硬核newyorker, pen-sketch, woodcut
民谣/抒情watercolor, ink-painting, morandi
电子/流行flat-illustration, isometric, low-poly
古风/中国风ink-painting, woodcut, retro-poster
儿歌/轻松children-book, cartoon, paper-cut

完整风格列表见 qiaomu-image-generator skill。

工作流详解

Step 1: 字幕与时间轴

优先使用 Suno 同目录字幕:

  • 精确匹配 歌名.mp3歌名.srt / 歌名.lrc
  • 精确匹配 歌名-1.mp3歌名-1.srt / 歌名-1.lrc
  • LRC 自动转换为项目内 SRT
  • 只有找不到 Suno 字幕时才调用 whisper-transcribe
  • 输出 timeline.jsonpreflight_report.json

Step 2: 分析歌词生成配图描述

Claude 分析歌词,为每个段落生成视觉描述:

  • 提取核心意象和情感
  • 转换为纯视觉语言(无文字)
  • 生成 visual_config.json

示例

歌词: "午夜的终端闪烁着光,键盘就是我的战场"
描述: "深夜办公室,一个人影坐在发光的屏幕前,手指悬停在键盘上,周围是代码的光影"

Step 3: 生成配图

默认优先 Codex 内置生图:

  • --image-provider auto 在 Codex 环境中生成 codex_image_requests.md
  • 审阅 codex_image_requests.md
  • 用 Codex 内置生图生成 images/scene_XX.png

即梦只作为 fallback:

  • Codex 生图不可用、用户明确接受 fallback,或非 Codex 环境中 auto 运行时,才调用 qiaomu-image-generator
  • fallback 时显式使用 --image-provider jimeng

Step 4: 合成视频

classic 模式调用内置 FFmpeg 合成:

  • 音频 + 图片 + 字幕 → MP4
  • 平滑转场效果
  • 专业字幕烧录
  • 自动修正 xfade 重叠造成的时长缩短

hyper 模式调用 scripts/create_hyper_mtv.py

  • 读取 project.jsontimeline.jsonvisual_config.json
  • 复制音频和 images/scene_XX.*hyper-mv/assets/
  • 安装并复制本地 gsap.min.js,避免 CDN 在渲染时失败
  • 生成一个 paused GSAP master timeline:scene layers、kinetic lyrics、beat pulse、wave bars、particles、progress
  • 后续用 scripts/render_hyper_mtv.py 做 review/final 渲染

输出结构

~/Videos/MTV/代码丛林_20260125/
├── 代码丛林.mp4           # 最终 MTV
├── project.json           # MTV 项目元数据
├── timeline.json          # 统一字幕/场景时间轴
├── preflight_report.json  # 输入、依赖、字幕覆盖率检查
├── storyboard.html        # 可审阅分镜预览
├── codex_image_requests.md # Codex 内置生图 prompt 清单
├── audio/
│   └── 代码丛林.mp3       # 原始音频
├── subtitles/
│   ├── 代码丛林.srt       # 字幕文件
│   └── 代码丛林.json      # 时间轴 JSON
├── images/
│   ├── scene_01.png       # 配图 1
│   ├── scene_02.png       # 配图 2
│   └── ...
├── visual_config.json     # 配图配置
├── metadata.json          # 项目元数据
└── hyper-mv/              # HyperFrames/GSAP 动态歌词工程(--stage hyper)
    ├── index.html
    ├── package.json
    └── assets/
        ├── mtv-data.js
        ├── gsap.min.js
        ├── song.mp3
        └── images/

与其他 Skills 的关系

Skill角色
suno-music-creator上游:生成歌曲和歌词
whisper-transcribe依赖:转录时间轴
qiaomu-image-generator依赖:生成配图(即梦 API)
ffmpeg依赖:合成视频、烧录字幕、社交平台兼容编码
podcast-to-video参考:字幕和合成风格最佳实践
gsap / greensock/gsap-skillsHyper 模式动效规则来源:timeline、stagger、plugins、utils、performance

GSAP / HyperFrames 动效规则

详细规则见 references/gsap-mtv-motion.md。做 Hyper MTV 时至少遵守:

  • gsap.timeline({ paused: true }),注册 window.__timelines.main
  • 用 labels 和 position parameter 编排场景、歌词、节拍,不用散乱 delay
  • 优先 transform aliases 和 autoAlpha;少动画 layout 属性。
  • gsap.utils.wrap() / clamp() / toArray() 用于确定性映射,不用 Math.random()
  • 默认核心 GSAP 足够;SplitText、ScrambleText、MotionPath、DrawSVG、MorphSVG 等插件只在本地 asset 可用且显式注册时使用。

推荐工作流(Claude 生成描述)

最佳实践:让 Claude 分析歌词并生成视觉描述,而不是使用简单的关键词匹配。

Step 1: 准备阶段

python /Users/joe/.agents/skills/qiaomu-mtv-creator/scripts/create_mtv.py \
    --audio ~/乔木新知识库/04.素材/AI音乐/代码丛林.mp3 \
    --prepare-only \
    --scenes 8

这会输出每个场景的歌词,等待 Claude 生成视觉描述。

Step 2: Claude 生成描述

在 Claude Code 对话中:

用户:为以下歌词场景生成视觉描述(纯视觉语言,不要文字):

场景 1: "午夜的终端闪烁着光,键盘就是我的战场"
场景 2: "代码在眼前不停旋转,这个 Bug 藏得太深太远"
...

Claude:
场景 1: 深夜办公室,一个人影坐在发光的屏幕前,手指悬停在键盘上,周围是代码的光影
场景 2: 迷宫般的电路板,一个人在其中寻找出路,远处有微弱的光点
...

Step 3: 更新配置并生成

将 Claude 生成的描述更新到 visual_config.json,然后:

python /Users/joe/.agents/skills/qiaomu-mtv-creator/scripts/create_mtv.py \
    --audio ~/乔木新知识库/04.素材/AI音乐/代码丛林.mp3 \
    --visual-config ~/Videos/MTV/代码丛林_20260125/visual_config.json \
    --skip-transcribe

完整示例

从 Suno 歌曲到 MTV

# 1. 生成歌曲(suno-music-creator)
python /Users/joe/.agents/skills/suno-music-creator/scripts/generate_music.py \
    '{"title":"代码丛林","prompt":"[Verse 1]...","tags":"rock"}' \
    --download

# 2. 一键生成 MTV(本 skill)
python /Users/joe/.agents/skills/qiaomu-mtv-creator/scripts/create_mtv.py \
    --audio ~/乔木新知识��/04.素材/AI音乐/代码丛林.mp3 \
    --style newyorker \
    --ratio 9:16

自定义配图数量

# 指定生成 6 张配图
python /Users/joe/.agents/skills/qiaomu-mtv-creator/scripts/create_mtv.py \
    --audio song.mp3 \
    --scenes 6 \
    --style watercolor

使用已有素材

# 跳过转录,使用已有 SRT
python /Users/joe/.agents/skills/qiaomu-mtv-creator/scripts/create_mtv.py \
    --audio song.mp3 \
    --skip-transcribe \
    --subtitle existing.srt

# 跳过生图,使用已有图片
python /Users/joe/.agents/skills/qiaomu-mtv-creator/scripts/create_mtv.py \
    --audio song.mp3 \
    --skip-images \
    --images-dir ./my_images/

常见问题

问题原因解决方案
转录效果差音乐人声混合确保使用 --no-vad
配图风格不对描述包含风格词检查 visual_config.json
视频比例错误图片比例不匹配确保 --ratio 与图片一致
字幕不同步时间轴不准使用 --auto-correct
Twitter/X 上传失败 "宽高比太小"视频格式不兼容已自动修复(yuv420p + High profile)

字幕位置优化

根据各平台 UI 安全区域研究:

9:16 竖屏(TikTok/抖音)

  • 底部安全区域:250px(被 UI 按钮覆盖)
  • 字幕位置:距离底部 280px
  • 字体大小:32px
  • 右侧边距:120px(避开点赞/评论按钮)

16:9 横屏(YouTube/B站)

  • 底部安全区域:60px
  • 字幕位置:距离底部 60px
  • 字体大小:28px

视频格式兼容性

为确保社交媒体平台兼容,视频自动使用:

  • 编码:H.264 High Profile Level 4.0
  • 像素格式:yuv420p(不是 yuv444p)
  • 宽高比:SAR 1:1 + 正确的 DAR

依��安装

# Whisper
pip install faster-whisper

# FFmpeg (macOS)
brew install ffmpeg

# 图片处理
pip install Pillow

注意事项

1. 音乐转录:必须禁用 VAD(--no-vad),否则唱歌会被过滤 2. 配图描述:使用纯视觉语言,不要包含文字 3. 视频比例:抖音/TikTok 用 9:16,B站/YouTube 用 16:9 4. 生成时间:完整流程约 5-10 分钟(取决于配图数量) 5. SRT 版本必须匹配:Suno 为每个版本生成独立 SRT(歌名.srt 对应 歌名.mp3歌名-1.srt 对应 歌名-1.mp3),两者时间轴不同,混用会导致画面和歌词错位约10秒。使用 将进酒-1.mp3 时必须用 将进酒-1.srt。 6. Suno 可能生成重叠时间戳:部分条目 start 时间相同(如同时演唱),脚本已自动去重,不影响效果。

Related skills

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.