YouTube字幕提取服务

一个通过yt-dlp从YouTube视频中提取字幕和元数据的MCP服务器,适用于内容分析和视频处理场景。

  • by dprothero
  • JavaScript
  • 本地部署
  • 更新于
在 GitHub 查看 dprothero/yt-transcript-mcp

使用说明

YouTube转录MCP服务器

一种模型上下文协议(MCP)服务器,使用yt-dlp从YouTube视频中提取转录本。

特性

  • 两个工具:
    • get_transcript -从YouTube视频中提取文字记录
    • get_video_info -获取视频元数据,包括标题、描述、上传者等
  • URL验证:在处理之前验证YouTube URL
  • 自动清理:读取后删除下载的文件
  • 错误处理:对命令失败和丢失的文件进行适当的错误处理
  • TypeScript:具有全面测试的全类型代码库

先决条件

所需软件

  1. Node.js (版本18或更高)

    node --version  # Should be 18.0.0 or higher
    
  2. yt-dlp -YouTube视频下载器

    在Windows上:

    winget install yt-dlp.yt-dlp
    

    在 macOS 上:

    brew install yt-dlp
    

    在Linux/WSL上:

    pip install yt-dlp
    

    验证安装:

    yt-dlp --version
    

安装

  1. 克隆或下载此存储库

    git clone <repository-url>
    cd yt-transcript-mcp
    
  2. 安装依赖项

    npm install
    
  3. 构建项目

    npm run build
    

用法

MCP检验员测试

测试服务器的最简单方法:

npx @modelcontextprotocol/inspector npm run dev

这将打开一个web界面,您可以在其中:

  • 查看可用工具
  • 测试 get_transcript 带有YouTube URL的工具
  • 查看实时响应

与Claude Desktop集成

添加到您的Claude Desktop MCP配置文件中:

地点:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • 视窗: %APPDATA%\Claude\claude_desktop_config.json

配置:

{
  "mcpServers": {
    "yt-transcript": {
      "command": "node",
      "args": ["/path/to/yt-transcript-mcp/dist/index.js"]
    }
  }
}

替换 /path/to/yt-transcript-mcp/ 与这个项目的实际路径。

直接命令行使用

node dist/index.js

服务器通过stdio上的JSON-RPC进行通信。

api参考

get_transcript工具

说明: 使用yt-dlp从YouTube视频URL中提取文字记录

输入架构:

{
  "type": "object",
  "properties": {
    "url": {
      "type": "string",
      "description": "YouTube video URL to extract transcript from"
    }
  },
  "required": ["url"]
}

示例用法:

{
  "name": "get_transcript",
  "arguments": {
    "url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ"
  }
}

答复: 以WebVTT格式返回成绩单内容。

get_video_info工具

说明: 从YouTube视频URL获取视频元数据,包括标题、描述、上传者和其他详细信息

输入架构:

{
  "type": "object",
  "properties": {
    "url": {
      "type": "string",
      "description": "YouTube video URL to get information from"
    }
  },
  "required": ["url"]
}

示例用法:

{
  "name": "get_video_info",
  "arguments": {
    "url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ"
  }
}

答复: 返回一个包含视频元数据的JSON对象,包括:

  • title -视频标题
  • description -视频描述
  • uploader -频道/上传者名称
  • upload_date -上传日期(YYYYMMDD格式)
  • duration -视频持续时间(秒)
  • view_count -浏览次数
  • like_count -点赞数
  • channel -频道名称
  • tags -视频标签数组
  • thumbnail -缩略图URL
  • webpage_url -原始视频URL

支持的URL格式(两种工具)

  • https://www.youtube.com/watch?v=VIDEO_ID
  • https://youtu.be/VIDEO_ID
  • http://youtube.com/watch?v=VIDEO_ID
  • youtube.com/watch?v=VIDEO_ID
  • youtu.be/VIDEO_ID

发展

脚本

  • npm run dev -使用热重载运行开发服务器
  • npm run build -将TypeScript构建为JavaScript
  • npm test -运行单元测试
  • npm run test:watch -在监视模式下运行测试
  • npm run typecheck -运行TypeScript类型检查
  • npm run lint -运行ESLint(如果已配置)

项目结构

yt-transcript-mcp/
├── src/
│   ├── index.ts          # Main MCP server implementation
│   ├── test-utils.ts     # Utility functions for testing
│   └── index.test.ts     # Unit tests
├── dist/                 # Built JavaScript files
├── package.json
├── tsconfig.json
├── vitest.config.ts
└── README.md

运行测试

npm test

测试包括:

  • 各种YouTube URL格式的URL验证
  • 无效URL的错误处理

运作原理

get_transcript工具

  1. URL验证:服务器验证提供的URL是否为有效的YouTube URL
  2. 转录提取:用途 yt-dlp --write-auto-sub --skip-download <url> 仅下载成绩单
  3. 文件处理:读取下载的.vtt转录文件
  4. 清理:读取后自动删除下载的文件
  5. 响应:将成绩单内容返回给MCP客户端

get_video_info工具

  1. URL验证:服务器验证提供的URL是否为有效的YouTube URL
  2. 元数据抽取:用途 yt-dlp --write-info-json --skip-download <url> 下载视频元数据
  3. JSON处理:读取并解析下载的.info.json文件
  4. 数据筛选:提取相关元数据字段(标题、描述等)
  5. 清理:读取后自动删除下载的文件
  6. 响应:将格式化的元数据作为JSON返回给MCP客户端

错误处理

服务器处理各种错误情况:

  • URL无效:非YouTube URL返回错误
  • 命令失败:处理yt-dlp执行错误
  • 缺少成绩单:未找到成绩单文件时报告
  • 文件系统错误:处理文件读/写问题

故障排除

常见问题

  1. “未找到yt-dlp”

    • 确保yt-dlp已安装并在PATH中可用
    • 试着跑步 yt-dlp --version 验证安装
  2. “未找到成绩单文件”

    • 视频可能没有自动生成或手动字幕
    • 尝试使用您知道有字幕的其他视频
  3. “权限被拒绝”

    • 确保服务器在当前目录中具有写入权限
    • 检查文件系统权限
  4. MCP连接问题

    • 验证Node.js版本(需要18+)
    • 检查构建文件是否存在于 dist/
    • 确保MCP配置中的路径正确

许可证

MIT许可证-有关详细信息,请参阅许可证文件。