YouTube字幕提取服务

一个TypeScript协议服务器,用于从YouTube视频中提取字幕,支持多种语言和格式,适用于本地开发环境。

  • by sinco-lab
  • TypeScript
  • 本地部署
  • 40 星标
  • 更新于
在 GitHub 查看 sinco-lab/mcp-youtube-transcript

使用说明

MCP YouTube转录服务器

一个TypeScript模型上下文协议服务器,用于检索Claude Desktop、Cursor、Cline、Codex和其他MCP兼容客户端的YouTube转录。它是为当地人设计的 npx 因此,转录请求是从您自己的计算机而不是远程代理发出的。

目录

特性

关键能力:

  • 从YouTube视频中提取文字记录
  • 支持多种语言
  • 当前YouTube字幕响应的Android InnerTube回退
  • 兼容的工具名称: get_transcripts 和 get_transcript
  • 带时间戳的成绩单输出 get_timed_transcript
  • 视频元数据和可用的转录语言
  • 使用连续或段落模式设置文本格式
  • 检索视频标题和元数据
  • 自动段落分割
  • 文本规范化和HTML实体解码
  • 稳健的错误处理
  • 时间戳和重叠检测

入门指南

先决条件

  • Node.js 18或更高版本

安装

使用本地 npx 配置,以便从您自己的计算机而不是远程MCP代理发送转录请求。

  1. 创建或编辑Claude Desktop配置文件:

    • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
    • 窗户: %APPDATA%\Claude\claude_desktop_config.json
  2. 添加以下配置:

{
  "mcpServers": {
    "youtube-transcript": {
      "command": "npx",
      "args": [
        "-y",
        "@sinco-lab/mcp-youtube-transcript"
      ]
    }
  }
}

macOS的快速设置脚本:

# Create directory if it doesn't exist
mkdir -p ~/Library/Application\ Support/Claude

# Create or update config file
cat > ~/Library/Application\ Support/Claude/claude_desktop_config.json << 'EOL'
{
  "mcpServers": {
    "youtube-transcript": {
      "command": "npx",
      "args": [
        "-y",
        "@sinco-lab/mcp-youtube-transcript"
      ]
    }
  }
}
EOL

用法

基本配置

要与Claude Desktop/Cursor/cline一起使用,请确保您的配置匹配:

{
  "mcpServers": {
    "youtube-transcript": {
      "command": "npx",
      "args": ["-y", "@sinco-lab/mcp-youtube-transcript"]
    }
  }
}

码头工人

该存储库包括一个用于本地容器使用的生产Dockerfile:

docker build -t mcp-youtube-transcript .

MCP客户端配置:

{
  "mcpServers": {
    "youtube-transcript": {
      "command": "docker",
      "args": ["run", "--rm", "-i", "mcp-youtube-transcript"]
    }
  }
}

测试

使用克劳德应用程序

  1. 安装后重新启动Claude应用程序
  2. 使用一个简单的命令进行测试:
    https://www.youtube.com/watch?v=AJpK3YTTKZ4 Summarize this video
    

输出示例:

与MCP检查员一起

# Clone and setup
git clone https://github.com/sinco-lab/mcp-youtube-transcript.git
cd mcp-youtube-transcript
npm install
npm run build

# Launch inspector
npx @modelcontextprotocol/inspector node "dist/index.js"

# Access http://localhost:6274 and try these commands:
# 1. List Tools: clink `List Tools`
# 2. Test get_transcripts with:
#    url: "https://www.youtube.com/watch?v=AJpK3YTTKZ4"
#    lang: "en" (optional; omit to use the best available caption track)
#    enableParagraphs: false (optional)

故障排除和维护

检查克劳德日志

要监视Claude的日志,可以使用以下命令:

tail -n 20 -f ~/Library/Logs/Claude/mcp*.log

这将显示日志文件的最后20行,并在添加新条目时继续显示。

备注:Claude应用程序会自动在MCP服务器日志文件前添加前缀 mcp-server-。例如,我们的服务器日志将被写入 mcp-server-youtube-transcript.log.

清洁 npx 缓存

如果您遇到与 npx 缓存,您可以使用以下命令手动清理它:

rm -rf ~/.npm/_npx

这将删除缓存的包,并允许您重新开始。

工具

get_transcripts

从YouTube视频中获取文字记录。

参数:

  • url (字符串,必填):YouTube视频URL或ID
  • lang (字符串,可选):语言代码。如果省略,则使用最佳可用字幕轨道。
  • enableParagraphs (布尔值,可选):启用段落模式。违约: false.

get_transcript

别名 get_transcripts 为了与其他YouTube转录MCP服务器兼容。

get_timed_transcript

获取每个字幕段带有一行时间戳的转录文本。

参数:

  • url (字符串,必填):YouTube视频URL或ID
  • lang (字符串,可选):语言代码。如果省略,则使用最佳可用字幕轨道。

输出示例:

[00:00:01.250] Hello and welcome
[00:00:03.500] Today we are going to...

获取_视频_信息

获取基本视频元数据和可用的转录语言,而不返回完整的转录。

参数:

  • url (字符串,必填):YouTube视频URL或ID

获取可用语言

列出YouTube视频的可用转录语言。在使用特定命令重试之前,请使用此命令 lang 价值。

参数:

  • url (字符串,必填):YouTube视频URL或ID

发展

项目结构

├── src/
│ ├── index.ts            # Server entry point
│ ├── youtube.ts          # YouTube transcript fetching logic
├── tests/                # Node test runner coverage
├── docs/                 # Maintenance notes
├── Dockerfile            # Local container build
├── dist/                 # Compiled output
└── package.json

关键组件

  • YouTubeTranscriptFetcher:核心转录提取功能
  • YouTubeUtils:文本处理和实用程序

特性和功能

  • 错误处理:

    • 无效的URL/IDs
    • 不可用的成绩单
    • 语言可用性
    • 网络错误
    • 速率限制
    • YouTube客户端强制执行导致的空标题响应
  • 文本处理:

    • HTML实体解码
    • 标点符号规范化
    • 空间归一化
    • srv3、经典XML, json3,以及VTT字幕解析
    • 智能段落检测

YouTube访问说明

YouTube没有提供官方的公共API来下载任意视频的字幕。此服务器使用暴露给web和Android客户端的YouTube内部字幕数据。YouTube仍可能拒绝来自某些网络、托管环境或远程MCP提供商的请求。当这种情况发生时,服务器现在返回更具体的诊断,而不是通用的诊断 No transcripts found 错误。

贡献

我们欢迎捐款!请随时提交问题和拉取请求。

许可证

此项目根据MIT许可证获得许可-请参阅 许可证 文件以获取详细信息。

相关项目