YouTube转录检索系统

一个MCP服务器,用于检索YouTube视频转录,将其索引到向量数据库中,并支持对单个视频或整个索引集合进行语义搜索。

  • by mufradhossain
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 mufradhossain/antigravity-youtube-rag

使用说明

🎥 YouTube转录RAG系统

100%人工智能生成 |完全由 反重力 (谷歌的Gemini 3 Pro集成开发环境) 零人为编写的代码

MCP(模型上下文协议)服务器,用于检索YouTube视频转录本,在矢量数据库(ChromaDB)中对其进行索引,并对单个视频或整个索引集合进行语义搜索。


✨ 特性

  • 🎯 提取和索引:自动下载YouTube成绩单,按时间分组,并存储嵌入内容
  • 🔍 语义搜索:使用自然语言查询特定视频或整个收藏
  • 💾 持久性:数据保存到磁盘并在容器重新启动后仍然有效
  • 🐳 Docker化:使用Docker Compose轻松部署
  • 🤖 MCP集成:与Claude Desktop和其他MCP客户端无缝协作
  • ⚡ 本地嵌入:用途 all-MiniLM-L6-v2 用于快速离线语义搜索

🚀 快速开始

先决条件

  • 已安装Docker和Docker Compose
  • Python 3.11+(用于模型设置)

1.️⃣ 下载嵌入模型

首次运行前,在本地下载模型:

python setup_model.py

这将下载 all-MiniLM-L6-v2 型号(~100MB) models/ 目录。

2.️⃣ 启动服务器

docker-compose up --build

等待日志消息:

Starting YouTube Transcript RAG MCP Server...

3.️⃣ 连接到克劳德桌面

  1. 找到您的Claude Desktop配置文件:

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

{
  "mcpServers": {
    "youtube-rag": {
      "command": "docker",
      "args": [
        "exec",
        "-i",
        "youtube-rag-mcp",
        "python",
        "stdio_launcher.py"
      ]
    }
  }
}
  1. 重新启动克劳德桌面

🛠️ 可用的MCP工具

fetch_and_index_transcript

检索并索引YouTube视频的文字记录。

输入:

  • youtube_url (string):完整的YouTube视频URL

输出: 带状态和块计数的JSON

例子:

Please fetch and index this video: https://www.youtube.com/watch?v=T-D1KVIuvjA

query_video

在特定视频的转录中进行语义搜索。

输入:

  • youtube_url (string):目标视频URL
  • question (string):搜索查询
  • top_k (int,默认值=3):要返回的结果数

输出: 带有相关转录块和时间戳的JSON

例子:

Query the video https://www.youtube.com/watch?v=T-D1KVIuvjA with the question "What is Python used for?"

query_all_videos

在所有索引的视频转录中进行语义搜索。

输入:

  • question (string):搜索查询
  • top_k (int,默认值=5):要返回的结果数

输出: JSON,包含任何索引视频的相关结果

例子:

Search all videos for "machine learning concepts"

list_indexed_videos

显示数据库中当前的所有视频。

输入: 无

输出: 带元数据的JSON视频列表

例子:

List all indexed videos

🔧 配置

环境变量 .env:

变量 描述 默认值
CHROMA_PERSIST_DIRECTORY ChromaDB数据路径 /app/chroma-data
EMBEDDING_MODEL 句子转换器模型路径 /app/models/all-MiniLM-L6-v2
LOG_LEVEL 日志记录级别 INFO
CHUNK_TARGET_DURATION 目标块持续时间(秒) 150
CHUNK_OVERLAP 块重叠(秒) 30
DEFAULT_TOP_K 默认结果数 3

🔍 数据库检查

使用附带的包装器脚本检查数据库:

# Show statistics
python inspect_docker.py stats

# List all indexed videos
python inspect_docker.py list

# Inspect a specific video
python inspect_docker.py inspect VIDEO_ID --full

📁 项目结构

youtube-transcript-rag/
├── mcp-server/              # Main application directory
│   ├── services/            # Core services (ChromaDB, embeddings, chunking)
│   ├── tools/               # MCP tool implementations
│   ├── utils/               # Utility functions
│   ├── server.py            # FastMCP server
│   ├── stdio_launcher.py    # Claude Desktop integration
│   ├── db_inspector.py      # Database inspection tool
│   └── Dockerfile           # Container definition
├── docker-compose.yml       # Docker Compose configuration
├── setup_model.py           # Model download script
├── inspect_docker.py        # Database inspection wrapper
└── .env                     # Environment variables

🎬 演示工作流程

看 demo_script.md 完整的演示流程包括:

  • 为多个视频建立索引
  • 查询特定视频
  • 跨视频语义搜索
  • 持久性验证

🐛 故障排除

没有可用的成绩单

有些视频没有字幕/文字记录。在这种情况下,该工具将返回错误。

Docker构建速度慢

第一个构建下载嵌入模型(~100MB)和依赖关系。后续构建使用Docker的缓存。

未找到容器

确保容器正在运行:

docker ps | grep youtube-rag-mcp

如果没有运行,请启动它:

docker-compose up -d

🤖 关于本项目

整个项目是由 反重力,运行Gemini 3 Pro的谷歌新的人工智能IDE。

挑战: 为YouTube转录RAG创建一个生产就绪的MCP服务器

结果: 一个功能齐全、码头化、生产就绪的应用程序,具有:

  • ✅ 干净的架构,适当分离关注点
  • ✅ 全面的错误处理
  • ✅ Docker容器化
  • ✅ MCP集成
  • ✅ 数据库检查工具
  • ✅ 完整的文件

人类编写的代码行: 0

这展示了人工智能辅助开发的力量和现代人工智能编码助手的能力。


📝 许可证

麻省理工学院许可证-欢迎将此项目用作模板或学习资源!


🙏 致谢


由以下材料制成✨ 反重力(双子座3 Pro)