mcpField
Y
youtube-transcribe-skill

youtube-transcribe-skill

github.com/feiskyer创意与媒体1.7k354 次安装4 周前更新
代码仓库

关于 youtube-transcribe-skill

用于提取 YouTube 视频字幕并将带时间戳的文本保存到本地。优先尝试 `yt-dlp`,失败时可通过 Chrome DevTools MCP 自动操作浏览器。

主要功能

  1. 01验证 YouTube 链接格式
  2. 02使用 `yt-dlp` 提取字幕
  3. 03通过 Chrome DevTools MCP 备用提取
  4. 04输出带时间戳的纯文本

适用场景

  1. 01保存 YouTube 视频字幕
  2. 02通过浏览器自动化提取转录文本

MCP 相关

命令行方式失败或不可用时,技能通过 Chrome DevTools MCP 打开 YouTube、显示转录面板、提取片段并关闭页面。

安装

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

$npx skills add https://github.com/feiskyer/claude-code-settings --skill youtube-transcribe-skill

安装后在 Claude Code 中输入/youtube-transcribe-skill确认已加载。

详细介绍

YouTube 转录稿提取

从 YouTube 视频 URL 提取字幕/转录稿,并保存为本地文件。

YouTube URL 输入:$ARGUMENTS

第 1 步:验证 URL

确认输入的是有效的 YouTube URL(支持 youtube.com/watch?v=、youtu.be/ 和 youtube.com/shorts/ 格式)。如果参数中未提供 URL,请检查对话上下文中是否有 YouTube 链接。

第 2 步:CLI 快速提取(优先尝试)

使用命令行工具快速提取字幕。

2.1 检查工具是否可用

执行 which yt-dlp。

  • 如果找到 yt-dlp,继续执行 2.2。
  • 如果未找到 yt-dlp,跳转到第 3 步。
2.2 获取视频标题
yt-dlp --cookies-from-browser=chrome --get-title "[VIDEO_URL]"
  • 提示:始终添加 --cookies-from-browser,以避免登录限制。默认使用 chrome。
  • 如果因浏览器错误而失败(例如 “Could not open Chrome”),请询问用户可用的浏览器(例如 firefox、safari、edge),然后重试。
2.3 下载字幕
yt-dlp --cookies-from-browser=chrome --write-auto-sub --write-sub --sub-lang zh-Hans,zh-Hant,en --skip-download --output "<Video Title>.%(ext)s" "[VIDEO_URL]"
2.4 转换为纯文本

yt-dlp 会将字幕保存为 .vtt 或 .srt 文件。将下载的文件转换为纯文本 Timestamp Text 格式:

  1. 读取下载的字幕文件(.vtt 或 .srt)。
  2. 删除 VTT/SRT 标头、样式标签和重复行。
  3. 保存为 <Video Title>.txt,每行包含一条 Timestamp Text 条目。
2.5 验证结果
  • 退出代码为 0:转换并保存字幕文件,然后报告完成情况。
  • 退出代码非 0:
    • 如果错误与浏览器/Cookie 有关,请询问用户正确的浏览器并重试。
    • 如果是其他错误(例如视频不可用),继续执行第 3 步。

第 3 步:浏览器自动化(备用方案)

当 CLI 方法失败或缺少 yt-dlp 时,使用 Chrome DevTools MCP 通过浏览器 UI 自动化提取字幕。

3.1 检查工具是否可用

检查 Chrome DevTools MCP 工具是否可用(查找名称类似 chrome__new_page 的工具)。

如果 Chrome DevTools MCP 不可用,且在第 2 步中未找到 yt-dlp,则停止并通知用户:“无法继续。请安装 yt-dlp(用于快速 CLI 提取),或配置 Chrome DevTools MCP(用于浏览器自动化)。”

3.2 打开视频页面

使用 Chrome DevTools MCP new_page 打开视频 URL。

3.3 分析页面状态

使用 Chrome DevTools MCP take_snapshot 读取页面的无障碍树。

3.4 展开视频说明

“显示转录稿”按钮通常隐藏在折叠的视频说明区域中。

  1. 在快照中查找标记为 “…more”、“…更多” 或 “Show more” 的按钮(位于视频标题下方的说明区域中)。
  2. 使用 Chrome DevTools MCP click 点击该按钮。
3.5 打开转录稿面板
  1. 使用 Chrome DevTools MCP take_snapshot 获取更新后的 UI。
  2. 查找标记为 “Show transcript”、“显示转录稿” 或 “内容转文字” 的按钮。
  3. 使用 Chrome DevTools MCP click 点击该按钮。
  4. 如果未找到该按钮,视频可能没有可用的转录稿 — 通知用户并停止。
3.6 通过 DOM 提取内容

直接读取无障碍树中的长转录稿列表会很慢且消耗大量令牌。改用 Chrome DevTools MCP evaluate_script 执行以下 JavaScript:

() => {
  const segments = document.querySelectorAll("ytd-transcript-segment-renderer");
  if (!segments.length) return "BUFFERING";
  return Array.from(segments)
    .map((seg) => {
      const time = seg.querySelector(".segment-timestamp")?.innerText.trim();
      const text = seg.querySelector(".segment-text")?.innerText.trim();
      return `${time} ${text}`;
    })
    .join("\n");
};

如果返回 "BUFFERING",请等待几秒后重试(最多尝试 3 次)。

3.7 保存并清理
  1. 将提取的文本保存为 <Video Title>.txt。
  2. 使用 Chrome DevTools MCP close_page 释放资源。

输出要求

  • 将字幕文件保存到当前工作目录。
  • 文件名格式:<Video Title>.txt
  • 文件内容格式:每行应为 Timestamp Subtitle Text。
  • 完成后报告:文件路径、字幕语言和总行数。

评论

支持 Markdown