mcpField
C
caption-clip

caption-clip

github.com/kwindla创意与媒体368 次安装39 周前更新
代码仓库

关于 caption-clip

用于制作 YouTube 字幕片段的工作流技能。它下载指定时间段的视频,使用 Deepgram 转录,支持清理字幕,并将样式化字幕烧录到视频中。

主要功能

  1. 01下载指定时间段的 YouTube 视频
  2. 02使用 ffmpeg 转换为 MP4
  3. 03使用 Deepgram 转录音频
  4. 04生成并编辑 SRT 字幕
  5. 05将样式化字幕烧录进视频

适用场景

  1. 01制作带字幕的 YouTube 视频片段
  2. 02为视频片段准备字幕
  3. 03修正转录并删除填充词
  4. 04生成内嵌字幕的视频

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/kwindla/skill-caption-clip --skill caption-clip

安装后在 Claude Code 中输入/caption-clip确认已加载。

附带文件README.mdscripts/json-to-srt.py

详细介绍

给 YouTube 视频片段添加字幕

使用时间戳下载 YouTube 视频片段,通过 Deepgram 转录,并嵌入样式化字幕。

前提条件

  • 已安装 yt-dlp
  • 已安装 ffmpeg
  • .env 文件(或环境变量)中包含 DEEPGRAM_API_KEY
  • Avenir Next 字体(不可用时会回退到 Arial)

工作流

步骤 1:下载片段

使用 yt-dlp 下载 YouTube 视频的特定片段:

yt-dlp --download-sections "*START-END" -o "clip_name.%(ext)s" "YOUTUBE_URL"

时间戳为 02:53-04:15 的示例:

yt-dlp --download-sections "*02:53-04:15" -o "clip_intro.%(ext)s" "https://www.youtube.com/watch?v=VIDEO_ID"
步骤 2:转换为 MP4

使用 ffmpeg 默认设置确保编码一致:

ffmpeg -i clip_name.webm -y clip_name.mp4
步骤 3:使用 Deepgram 转录

从 .env 加载 API 密钥并调用 Deepgram API:

DEEPGRAM_API_KEY=$(grep '^DEEPGRAM_API_KEY=' .env | cut -d'=' -f2 | tr -d '"' | tr -d "'")

curl -s --request POST \
  --url 'https://api.deepgram.com/v1/listen?model=nova-2&smart_format=true&punctuate=true&utterances=true' \
  --header "Authorization: Token $DEEPGRAM_API_KEY" \
  --header 'Content-Type: audio/mp4' \
  --data-binary @clip_name.mp4 > clip_transcript.json
步骤 4:生成 SRT

使用随附脚本将 Deepgram JSON 转换为 SRT 格式:

python3 ~/.claude/skills/caption-clip/scripts/json-to-srt.py clip_transcript.json clip.srt
步骤 5:清理转录文本

读取生成的 SRT 文件,并创建清理后的版本(clip_clean.srt):

  1. 修正转录错误 - 更正听错的词语
  2. 删除填充词 - 删除:“like”“you know”“I'd say”“yeah”“um”“uh”“sort of”“kind of”
  3. 合并片段 - 将简短话语合并为完整句子
  4. 提高可读性 - 调整措辞,使其读起来比听起来更流畅
  5. 修正时间戳 - 确保时间有效(例如,00:00:60 应为 00:01:00)

将清理后的内容写入 clip_clean.srt。

步骤 6:嵌入字幕

应用带半透明背景的样式化字幕:

ffmpeg -i clip_name.mp4 \
  -vf "subtitles=clip_clean.srt:force_style='FontSize=24,FontName=Avenir Next Medium,PrimaryColour=&H00FFFFFF,BackColour=&H80000000,BorderStyle=4,Outline=0,Shadow=0,MarginV=30,MarginL=40,MarginR=40'" \
  -c:a copy -y clip_captioned.mp4

字幕样式参考

参数值描述
FontSize24字号
FontNameAvenir Next Medium简洁的无衬线字体(备用字体使用 Arial)
PrimaryColour&H00FFFFFF白色文字(AABBGGRR 格式)
BackColour&H8000000050% 透明度的黑色背景
BorderStyle4使用 BackColour 的不透明框
MarginV30距底部的垂直边距
MarginL/R40水平边距

备用字体

如果 Avenir Next 不可用,以下字体也适合字幕:

  • SF Pro Display
  • Helvetica Neue
  • Futura
  • Arial(通用备用字体)

检查可用字体:

fc-list : family | sort -u | grep -iE '(avenir|sf pro|helvetica|futura)'

输出文件

完成工作流后:

文件描述
clip_name.mp4下载的原始片段
clip_transcript.jsonDeepgram 原始转录结果(保留以便重新运行)
clip.srt自动生成的字幕
clip_clean.srt清理/编辑后的字幕
clip_captioned.mp4已嵌入字幕的最终视频

评论

支持 Markdown