Token导航 LogoToken导航

MCP Server · 音视频

YouTube Transcript Fetcher (YTT)

使用Whisper AI转录技术从YouTube视频中获取转录文本,支持多种输出格式,无需YouTube API密钥。

stdio官方级别未说明来源级核验工具 3
命令行工具PythonClaude视频处理Claude DesktopCursorVS Code

快速开始

作者 / 组织
AndrewCTF
提供方
AndrewCTF
运行时
Python

工具数量

3

来源目录标注

资源数量

0

来源目录标注

提示词数量

0

来源目录标注

GitHub Star

2

仓库热度

收录来源

2 个

MCP World

选型结论

YouTube Transcript Fetcher (YTT) 属于音视频类 MCP Server,公开资料标注 3 个工具,通过stdio 本地进程接入,适配 Claude Desktop、Claude、Cursor,有可以直接复制的安装命令;接入前要先准备 API Key。

分类

音视频

传输方式

stdio

认证方式

API Key

部署方式

仅本地运行

安装与配置

安装命令

python -m venv .venv

公开命令不是通用的启动方式,拼不出可靠配置示例;请在客户端 MCP 配置里按官方文档填写 command 和 args。

上手步骤

  1. 1

    准备运行环境

    stdio 服务在本地起进程,需要先装好 Python,再按安装命令拉取依赖。

  2. 2

    安装服务

    复制下面的安装命令执行;命令里带占位符的位置换成自己的密钥或路径。

  3. 3

    写入客户端配置

    在客户端的 MCP 配置里填启动命令和参数,保存后完全退出客户端再打开,让新配置生效。

  4. 4

    验证是否可用

    连接成功后客户端会列出 3 个工具,随便调一个只读工具确认能返回结果。

接入前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

详细介绍

YouTube转录费彻

使用Whisper AI转录从任何YouTube视频中获取转录。在YouTube上搜索并获得最佳结果的成绩单。不需要YouTube API密钥。

特性

  • Whisper电动 --最先进的AI转录,99%以上的准确率
  • YouTube搜索 --搜索YouTube并获取最佳结果的成绩单
  • 不需要API密钥 -在没有YouTube数据API证书的情况下工作
  • 多种格式 --文本、JSON、SRT、VTT输出
  • 缓存 --SQLite支持的缓存避免了重新转录
  • 无费率限制 -Whisper在本地运行,没有外部API限制
  • CLI和库 --用作命令行工具或Python模块
  • MCP服务器 --通过模型上下文协议与人工智能工具集成

安装

# Clone the repository
git clone https://github.com/andrewctf/ytt.git
cd ytt

# Create virtual environment
python -m venv .venv
source .venv/bin/activate  # Linux/Mac
.venv\Scripts\activate     # Windows

# Install dependencies
pip install -r requirements.txt

# Optional: GPU support
pip install torch torchvision --index-url https://download.pytorch.org/whl/cu128
注: 有关GPU/CUDA的详细设置,请参阅 QUICKSTART.md.

Whisper的附加设置

Whisper需要 ffmpeg 用于音频提取:

窗户(带翼):

winget install ffmpeg

macOS:

brew install ffmpeg

Linux:

sudo apt install ffmpeg

快速开始

有关详细的安装和设置说明,请参阅 QUICKSTART.md.

命令行界面

# Get transcript (Whisper is used by default)
python cli.py transcript VIDEO_ID

# Or with a full YouTube URL
python cli.py transcript "https://www.youtube.com/watch?v=a1JTPFfshI0"

# Different output formats
python cli.py transcript VIDEO_ID --format json
python cli.py transcript VIDEO_ID --format srt
python cli.py transcript VIDEO_ID --format vtt

# Save to file
python cli.py transcript VIDEO_ID --output transcript.txt

# Batch processing
python cli.py transcript VIDEO_ID1 VIDEO_ID2 VIDEO_ID3

# Search YouTube for videos and get transcripts
python cli.py search "Python tutorial" --limit 5 --with-transcripts

# Search only (no transcripts)
python cli.py search "Python tutorial" --limit 10

# JSON output for search
python cli.py search "Python tutorial" --format json

# Cache management
python cli.py cache-stats
python cli.py cache-stats --clean  # Remove expired entries

Python库

from src.service import get_transcript
from src.search_service import search, search_and_get_transcripts

# Basic usage
result = await get_transcript("VIDEO_ID")
print(result.content)

# With options
result = await get_transcript(
    "VIDEO_ID",
    language="en",
    output_format="json",
    use_cache=True,
)

# Access metadata
print(f"Source: {result.source}")      # 'whisper' or 'innertube'
print(f"Language: {result.language}")   # Detected language
print(f"Video ID: {result.video_id}")

# Search YouTube for videos
results = await search("Python tutorial", max_results=5)
for video in results:
    print(f"{video.title} ({video.video_id}) - {video.channel_name}")

# Search and get transcripts for results
results = await search_and_get_transcripts("Python tutorial", max_results=3, language="en")
for video, transcript in results:
    if transcript:
        print(f"{video.title}: {transcript.content[:100]}...")

对于同步使用:

import asyncio
from src.service import get_transcript
from src.search_service import search

def fetch_transcript(video_id):
    return asyncio.run(get_transcript(video_id))

def search_videos(query, max_results=5):
    return asyncio.run(search(query, max_results=max_results))

result = fetch_transcript("VIDEO_ID")
print(result.content)

videos = search_videos("Python tutorial")

MCP服务器

注: 看 QUICKSTART.md 有关Claude Desktop、Cursor和VS Code的详细配置。

启动MCP服务器:

python -m mcp_server.server

服务器公开了三个工具:

  • get_transcript -获取单个视频的文字记录
  • get_transcripts_batch -同时获取多个视频的转录
  • search_videos -在YouTube上搜索与查询匹配的视频

或者通过添加到MCP设置中与Claude Desktop集成:

{
  "mcpServers": {
    "yt-transcript": {
      "command": "python",
      "args": ["-m", "mcp_server.server"],
      "cwd": "/absolute/path/to/ytt"
    }
  }
}

运作原理

Video ID → Cache Check
              ↓ found?
         Return Cached
              ↓ not found
         Whisper (primary)
         - Download audio via yt-dlp
         - Transcribe with faster-whisper
         - Returns word-level timestamps
              ↓ fails?
         Innertube API (fallback)
         - Extract API key from video page
         - Fetch caption tracks
         - Parse JSON3 timed text
              ↓
         Cache Result
              ↓
         Format & Return

耳语(初级)

  • 使用下载音频 yt-dlp
  • 转录使用 faster-whisper (CPU优化)
  • 返回单词级时间戳和分段文本
  • 适用于任何带音频的视频
  • ~1-3倍实时处理速度

Innertube API(回退)

  • 抓取YouTube的内部API
  • 不需要API密钥
  • 快速(每段视频约0.5-2s)
  • 约85%的覆盖率(一些视频缺少字幕)
  • 速率限制(每个IP约5个需求/10秒)

输出格式

文本(默认)

Good morning, here we are, a live suturing course like nobody else has ever
done and what are we covering, we're covering every suturing technique...

JSON

{
  "video_id": "a1JTPFfshI0",
  "language": "en",
  "source": "whisper",
  "segments": [
    {"start": 0.0, "end": 4.5, "text": "Good morning, here we are..."},
    {"start": 4.5, "end": 9.2, "text": "a live suturing course..."}
  ]
}

SRT(SubRip)

1
00:00:00,000 --> 00:00:04,500
Good morning, here we are, a live suturing course...

2
00:00:04,500 --> 00:00:09,200
a live suturing course like nobody else...

VTT(网络VTT)

WEBVTT

00:00:00.000 --> 00:00:04.500
Good morning, here we are, a live suturing course...

00:00:04.500 --> 00:00:09.200
a live suturing course like nobody else...

配置

编辑 config.py 要自定义行为:

class Config:
    # Whisper settings
    WHISPER_MODEL = "base"      # tiny/base/small/medium/large
    WHISPER_FALLBACK_ENABLED = True

    # Cache settings
    CACHE_TTL_DAYS = 7
    CACHE_DB_PATH = ".transcript_cache.db"

    # Rate limiting (for Innertube fallback)
    RATE_LIMIT_RATE = 0.5       # tokens per second
    RATE_LIMIT_BURST = 5       # max bucket size

    # Batch processing
    MAX_BATCH_SIZE = 50

Whisper型号

型号速度精度内存
微小10倍约75%约1GB
基数7x~85%~1GB
小4x~90%~2GB
中等2x~95%~5GB
大1x~97%~6GB

这 base 该模型推荐用于大多数用例——足够快速和准确。

文件结构

ytt/
├── src/
│   ├── __init__.py
│   ├── fetcher.py          # Innertube API client
│   ├── whisper_runner.py    # Whisper transcription
│   ├── parser.py            # Caption parsing utilities
│   ├── formatters.py        # Output formatters
│   ├── cache.py             # SQLite cache
│   ├── rate_limiter.py      # Token bucket
│   ├── service.py           # Orchestrator
│   ├── searcher.py          # YouTube search
│   ├── search_cache.py      # Search result cache
│   ├── search_service.py    # Search orchestrator
│   ├── cuda_dll_manager.py  # Auto-download CUDA libraries
│   └── exceptions.py        # Custom exceptions
├── mcp_server/
│   ├── __init__.py
│   └── server.py           # FastMCP server
├── cli.py                   # CLI entrypoint
├── main.py                  # Library entrypoint
├── config.py                # Configuration
├── requirements.txt         # Core dependencies
├── requirements-mcp.txt     # MCP dependencies
├── README.md
└── QUICKSTART.md

故障排除

“没有名为'rich'的模块”

安装依赖项:

pip install -r requirements.txt

Whisper失败,显示“未找到ffmpeg”

安装ffmpeg(请参阅上面的安装部分)。

转录速度慢

  • 使用较小的Whisper型号(base 而不是 large)
  • 通过更改使用GPU加速 device="cpu" 到 device="cuda" 在 whisper_runner.py
  • 启用缓存以避免重新转录

Innertube的速率限制

Innertube回退受YouTube的速率限制(约5个req/10s)。使用Whisper作为主要(默认)来避免这种情况。缓存还可以防止冗余请求。

缓存不工作

检查缓存统计信息:

python cli.py cache-stats

清除过期条目:

python cli.py cache-stats --clean

发展

运行测试

pytest

格式代码

black src/
ruff check src/

许可证

MIT许可证

工具与能力

工具数量

3

资源数量

0

提示词数量

0

能力标签

AI转录Python本地部署YouTube工具视频处理文本提取CLI工具

支持客户端

Claude DesktopClaudeCursorVS Code

数量来自来源目录的标注,具体工具清单以官方文档为准。

典型使用场景

语音转文字

把会议录音转成文字,再整理要点。

文字转语音

把文案转成配音,调整语速和音色。

视频素材处理

提取字幕、剪出片段、生成封面。

选择建议

值得选的地方

  • 只提供 3 个工具,职责集中,接入后不容易误操作。
  • 有现成的安装命令,不用自己找入口,照着跑就能起服务。
  • 已经适配 Claude Desktop、Claude、Cursor,换客户端不用重新研究配置。

先想清楚的地方

  • stdio 方式要求本地装好 Python,换机器要重新装一遍。
  • 需要自备API Key,没有凭据没法直接试。
  • 公开摘要偏短,具体能力和限制要回到仓库确认。

更适合

  • 需要在音视频场景里让模型直接调用外部能力的人。
  • 已经在用 Claude Desktop 的用户,接入路径最短。
  • 想先快速试一下、能接受在本地跑服务的人。

不太适合

  • 完全不想在本地装环境的人。
  • 暂时拿不到API Key的人。
  • 需要厂商级 SLA 和技术支持的生产环境。

同类对比

5 个同类
MCP Server工具数传输方式安装命令收录来源最后核验
YouTube Transcript Fetcher (YTT)

MCP World · 本页

3stdio有2 个2026-05-17
Youtube E0eb3510

MCP World

0stdio有1 个2026-05-17
Ableton MCP B7b69a6a

MCP World

16stdio有2 个2026-05-17
Voicemode MCP

MCP World

0stdio有3 个2026-05-17
Short Video Maker MCP

MCP World

0stdio有3 个2026-05-17

按同分类和工具数量挑出最接近的几条,字段以各自详情页为准。

常见问题

5 条

YouTube Transcript Fetcher (YTT) 怎么安装?

公开资料给出的安装命令是 python -m venv .venv,运行环境为 Python。装完后按客户端要求写进 MCP 配置,重启客户端生效。

YouTube Transcript Fetcher (YTT) 怎么在 Claude Desktop、Cursor 里配置?

它是stdio 本地进程,客户端配置里要写启动命令和参数,运行环境是 Python;保存后完全退出客户端再打开,配置才会生效。

YouTube Transcript Fetcher (YTT) 收费吗?

本站只整理公开资料,不代收费用,也没有标注具体价格。是否收费取决于服务本身和背后的接口额度,正式使用前按官方说明确认。

YouTube Transcript Fetcher (YTT) 需要 API Key 吗?

公开资料标注的认证方式是API Key,也就是要先拿到凭据才能连上;凭据只填在自己本地的配置里,不要写进公开仓库。

YouTube Transcript Fetcher (YTT) 支持哪些客户端?

公开资料标注支持 Claude Desktop、Claude、Cursor、VS Code;其他客户端只要能配置 MCP Server,也能用同样的命令或地址接入。

来源信息

继续浏览同类 MCP