From agi-super-team
Generates SRT/ASS subtitle files from lyrics text with time synchronization, and burns subtitles into video using FFmpeg.
How this skill is triggered — by the user, by Claude, or both
Slash command
/agi-super-team:video-lyrics-subtitleThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
> 视频歌词字幕生成引擎:从歌词文本 + 时间轴 → SRT/ASS 字幕 → FFmpeg 烧录到视频
视频歌词字幕生成引擎:从歌词文本 + 时间轴 → SRT/ASS 字幕 → FFmpeg 烧录到视频
歌词字幕、lyrics subtitle、字幕烧录、字幕生成、SRT、ASS、bilingual subtitle、双语字幕、字幕文件、字幕制作
从歌词文本(纯文本或 LRC 格式)+ 时间轴信息,生成 SRT/ASS 字幕文件,并可通过 FFmpeg 烧录到视频中。
lyrics.txt + audio.mp3
→ generate_srt.py (生成 SRT 时间轴)
→ generate_ass.py (可选:生成 ASS 高级样式 / KTV 效果)
→ burn_subtitles.sh (FFmpeg 烧录到视频)
→ final_with_subtitles.mp4
所有脚本在 scripts/ 子目录下:
| 脚本 | 功能 |
|---|---|
scripts/generate_srt.py | 从歌词文本 + 时间轴生成 SRT 字幕 |
scripts/generate_ass.py | SRT → ASS 转换(支持 KTV 高亮) |
scripts/burn_subtitles.sh | FFmpeg 烧录字幕到视频 |
| 输入 | 文件 | 说明 |
|---|---|---|
| 歌词原文 | lyrics/lyrics.txt | 纯文本或 LRC 格式带时间戳 |
| 中文翻译 | lyrics/lyrics_cn.txt | 可选,用于双语字幕 |
| 音频文件 | audio/song_final.mp3 | 用于获取总时长(纯文本歌词时) |
| 视频文件 | video/*.mp4 | 烧录目标 |
python3 scripts/generate_srt.py <lyrics_file> [options]
| 参数 | 说明 |
|---|---|
lyrics_file | 歌词文件路径(LRC 或纯文本) |
--audio <file> | 音频文件,用于获取总时长(纯文本歌词时必须) |
--duration <seconds> | 总时长(秒),替代 --audio |
--bilingual <cn_file> | 中文翻译文件,生成双语 SRT |
--json-timeline <file> | 带时间轴的 JSON 文件(如 chloe_lyrics_parsed.json) |
-o / --output <file> | 输出 SRT 文件路径(默认 stdout) |
[00:00.00](纯音乐前奏)
[00:15.00]樱花落尽时 花瓣纷飞如雪
[00:20.00]你的笑容 在记忆中凋谢
需要 --audio 或 --duration 指定总时长,每行歌词等间隔分配时间。
空行表示纯音乐段,自动标注 (纯音乐)。
通过 --json-timeline 传入带 sections[].lines[] 结构的 JSON 文件,
支持精确的 start/end 时间。
(纯音乐)\N 分隔HH:MM:SS,mmm(SRT 标准)# LRC 歌词 → SRT
python3 scripts/generate_srt.py lyrics/lyrics.lrc -o subtitles/lyrics.srt
# 纯文本歌词 + 音频时长 → SRT
python3 scripts/generate_srt.py lyrics/lyrics.txt --audio audio/song_final.mp3 -o subtitles/lyrics.srt
# 双语字幕
python3 scripts/generate_srt.py lyrics/lyrics.txt --audio audio/song_final.mp3 \
--bilingual lyrics/lyrics_cn.txt -o subtitles/lyrics_bilingual.srt
# JSON 时间轴 → SRT
python3 scripts/generate_srt.py lyrics/lyrics.txt \
--json-timeline script/chloe_lyrics_parsed.json \
-o subtitles/lyrics.srt
python3 scripts/generate_ass.py <srt_file> [options]
| 参数 | 说明 |
|---|---|
srt_file | 输入 SRT 文件路径 |
--style <ktv|simple> | 样式模式(默认 simple) |
--font <name> | 字体名称(默认 Noto Sans CJK SC) |
--fontsize <size> | 字体大小(默认 48) |
--primary-color <hex> | 主文字颜色(默认 #FFFFFF) |
--outline-color <hex> | 描边颜色(默认 #000000) |
--back-color <hex> | 背景色(默认 #80000000 半透明黑) |
-o / --output <file> | 输出 ASS 文件路径(默认同名 .ass) |
\kt 标签)# 简单样式
python3 scripts/generate_ass.py subtitles/lyrics.srt -o subtitles/lyrics.ass
# KTV 样式
python3 scripts/generate_ass.py subtitles/lyrics.srt --style ktv -o subtitles/lyrics.ass
# 自定义字体和颜色
python3 scripts/generate_ass.py subtitles/lyrics.srt \
--font "Source Han Sans CN" --fontsize 52 \
--primary-color "#FFD700" -o subtitles/lyrics.ass
bash scripts/burn_subtitles.sh <video_file> <subtitle_file> [output_file]
<video>_with_subtitles.mp4~/tools/ffmpeg# SRT 硬字幕
ffmpeg -i video.mp4 -vf "subtitles=lyrics.srt" -c:a copy output.mp4
# ASS 硬字幕
ffmpeg -i video.mp4 -vf "ass=lyrics.ass" -c:a copy output.mp4
# 烧录 SRT 字幕
bash scripts/burn_subtitles.sh video/phase1_preview.mp4 subtitles/lyrics.srt video/final_with_subtitles.mp4
# 烧录 ASS 字幕
bash scripts/burn_subtitles.sh video/phase1_preview.mp4 subtitles/lyrics.ass video/final_with_subtitles.mp4
所有 MV 项目遵循以下文件结构:
~/clawd/projects/MediaClaw/output/<project-name>/
├── lyrics/ # 🎵 歌词(必须有)
│ ├── lyrics.txt # 歌词原文(纯文本或LRC)
│ ├── lyrics_cn.txt # 中文翻译(可选)
│ └── lyrics.json # 带时间轴的JSON(程序生成)
├── subtitles/ # 📝 字幕文件(程序生成)
│ ├── lyrics.srt # SRT格式
│ ├── lyrics_bilingual.srt # 双语SRT
│ └── lyrics.ass # ASS格式(KTV效果)
├── audio/ # 🎶 音频
│ └── song_final.mp3 # 最终版音频
├── video/ # 🎬 视频
│ ├── clips/ # 各clip片段
│ └── final_with_subtitles.mp4 # 最终带字幕视频
├── frames/ # 🖼️ 参考帧图片
└── script/ # 📜 剧本/计划
├── mv_script.json # MV脚本
└── edit_plan.json # 剪辑计划
| 内容 | 固定路径 | 说明 |
|---|---|---|
| 歌词原文 | lyrics/lyrics.txt | 纯文本或 LRC |
| 中文翻译 | lyrics/lyrics_cn.txt | 可选 |
| SRT 字幕 | subtitles/lyrics.srt | 单语 |
| 双语 SRT | subtitles/lyrics_bilingual.srt | 双语 |
| ASS 字幕 | subtitles/lyrics.ass | KTV 效果 |
| 最终视频 | video/final_with_subtitles.mp4 | 带字幕成品 |
禁止随意命名(如 sub01.srt、lyrics_raw_v2.txt、final_v3_new.mp4)。
所有文件必须遵循以上命名规范。
# 设置项目路径
PROJECT=~/clawd/projects/MediaClaw/output/chloe-sakura-mv
SKILL=~/clawd/skills/video-lyrics-subtitle
# 1. 生成 SRT 字幕(从 LRC 歌词)
python3 $SKILL/scripts/generate_srt.py \
$PROJECT/lyrics/lyrics.txt \
--json-timeline $PROJECT/script/sakura_mv_final.json \
-o $PROJECT/subtitles/lyrics.srt
# 2. 生成 ASS 字幕(KTV 风格)
python3 $SKILL/scripts/generate_ass.py \
$PROJECT/subtitles/lyrics.srt \
--style ktv \
-o $PROJECT/subtitles/lyrics.ass
# 3. 烧录字幕到视频
bash $SKILL/scripts/burn_subtitles.sh \
$PROJECT/video/phase1_preview_sakura_mv.mp4 \
$PROJECT/subtitles/lyrics.ass \
$PROJECT/video/final_with_subtitles.mp4
npx claudepluginhub aaaaqwq/agi-super-team --plugin agi-super-teamMatches MP3 lyrics segments to video clips with time-axis alignment, emotion mapping, subtitle burning, and audio mixing. Useful for AI MV makers syncing lyrics to visuals.
Generate viral-ready karaoke / lyric-video subtitles with per-word highlighting in one command. Adaptive font size from media resolution. Ready-made style presets for TikTok, Reels, Shorts, 抖音, 小红书, YouTube, and cinematic long-form. Trigger on "karaoke 字幕", "卡拉OK", "lyric video", "逐词歌词", "按字高亮", "TikTok 字幕", "抖音字幕", "Reels caption", "Shorts caption", "小红书歌词", "viral subtitles", "爆款字幕", or when a song / podcast / video clip is given and per-word highlighted captions are asked for. For general caption format conversion without karaoke styling, use /lai-caption.
Turns a music track into a beat-synced video (lyric video, slideshow, or kinetic promo) using HyperFrames. Music drives all pacing; zero assets needed for a complete video.