🎬 yt-dlp-mcp
<div align="center">
一款强大的MCP服务器,将视频平台功能带入您的AI代理

与Claude、Dive和其他兼容MCP的AI系统集成。下载视频、提取元数据、获取字幕等——全部通过自然语言。
特性 • 安装 • 工具 • 使用示例 • 文档
</div>
✨ 特性
<table>
<tr>
<td width="50%">
🔍 搜索与发现
- 分页支持的YouTube搜索
- JSON或Markdown输出格式
- 按相关性和质量过滤
📊 元数据提取
- 全面的视频信息
- 频道详情和统计数据
- 上传日期、标签、类别
- 不需要下载内容
📝 字幕与转录
- 下载VTT格式的字幕
- 生成干净的文本转录
- 多语言支持
- 自动生成字幕
</td>
<td width="50%">
🎥 视频下载
- 分辨率控制(480p-1080p)
- 视频剪辑支持
- 平台无关(YouTube、Facebook等)
- 保存到下载文件夹
🎵 音频提取
- 最佳音质音频(M4A/MP3)
- 直接音频下载
- 完美适用于播客和音乐
🛡️ 隐私与安全
- 无跟踪或分析
- 通过yt-dlp直接下载
- Zod模式验证
- 限制字符长度以确保LLM安全
</td>
</tr>
</table>
🚀 安装
先决条件
在您的系统上安装yt-dlp:
<table>
<tr>
<th>平台</th>
<th>命令</th>
</tr>
<tr>
<td>🪟 <strong>Windows</strong></td>
<td><code>winget install yt-dlp</code></td>
</tr>
<tr>
<td>🍎 <strong>macOS</strong></td>
<td><code>brew install yt-dlp</code></td>
</tr>
<tr>
<td>🐧 <strong>Linux</strong></td>
<td><code>pip install yt-dlp</code></td>
</tr>
</table>
使用Dive Desktop快速设置
- 打开Dive Desktop
- 点击**"+ 添加MCP服务器"**
- 粘贴以下配置:
{
"mcpServers": {
"yt-dlp": {
"command": "npx",
"args": ["-y", "@kevinwatt/yt-dlp-mcp"]
}
}
}
- 点击**"保存"**,现在可以使用了!🎉
手动安装
npm install -g @kevinwatt/yt-dlp-mcp
🛠️ 可用工具
所有工具都以前缀ytdlp_开头,以避免与其他MCP服务器命名冲突。
🔍 搜索与发现
<table>
<tr>
<th width="30%">工具</th>
<th width="70%">描述</th>
</tr>
<tr>
<td><code>ytdlp_search_videos</code></td>
<td>
分页支持的YouTube搜索
- 参数:
query, maxResults, offset, response_format
- 返回: 包含标题、频道、时长、URL的视频列表
- 支持: JSON和Markdown格式
</td>
</tr>
</table>
📝 字幕与转录
<table>
<tr>
<th width="30%">工具</th>
<th width="70%">描述</th>
</tr>
<tr>
<td><code>ytdlp_list_subtitle_languages</code></td>
<td>
列出视频的所有可用字幕语言
- 参数:
url
- 返回: 可用语言、格式、自动生成状态
</td>
</tr>
<tr>
<td><code>ytdlp_download_video_subtitles</code></td>
<td>
下载带有时间戳的VTT格式字幕
- 参数:
url, language (可选)
- 返回: 原始VTT字幕内容
</td>
</tr>
<tr>
<td><code>ytdlp_download_transcript</code></td>
<td>
生成干净的纯文本转录
- 参数:
url, language (可选)
- 返回: 清理过的文本,不包含时间戳或格式
</td>
</tr>
</table>
🎥 视频与音频下载
<table>
<tr>
<th width="30%">工具</th>
<th width="70%">描述</th>
</tr>
<tr>
<td><code>ytdlp_download_video</code></td>
<td>
下载视频到下载文件夹
- 参数:
url, resolution, startTime, endTime
- 分辨率: 480p, 720p, 1080p, 最佳
- 支持: 视频剪辑
</td>
</tr>
<tr>
<td><code>ytdlp_download_audio</code></td>
<td>
提取并下载仅音频
</td>
</tr>
</table>
📊 元数据
<table>
<tr>
<th width="30%">工具</th>
<th width="70%">描述</th>
</tr>
<tr>
<td><code>ytdlp_get_video_metadata</code></td>
<td>
提取全面的视频元数据到JSON
- 参数:
url, fields (可选数组)
- 返回: 完整元数据或筛选字段
- 包括: 浏览量、点赞数、上传日期、标签、格式等
</td>
</tr>
<tr>
<td><code>ytdlp_get_video_metadata_summary</code></td>
<td>
获取人类可读的元数据摘要
</td>
</tr>
</table>
💡 使用示例
搜索视频
"搜索Python编程教程"
"查找前20个机器学习视频"
"搜索'react hooks教程'并显示结果10-20"
"以JSON格式搜索JavaScript课程"
获取元数据
"获取https://youtube.com/watch?v=...的元数据"
"给我这个视频的标题、频道和浏览次数"
"提取仅时长和上传日期"
"给我这个视频信息的快速摘要"
下载字幕与转录
"列出https://youtube.com/watch?v=...的可用字幕"
"从这个视频下载英文字幕"
"获取这个视频的西班牙语干净转录"
"下载繁体中文(zh-Hant)转录"
下载内容
"以1080p下载此视频:https://youtube.com/watch?v=..."
"从这个YouTube视频下载音频"
"从1:30到2:45下载这个视频"
"将这个Facebook视频保存到我的下载文件夹"
📖 文档
🔧 配置
环境变量
# 下载目录(默认:~/Downloads)
YTDLP_DOWNLOADS_DIR=/path/to/downloads
# 默认分辨率(默认:720p)
YTDLP_DEFAULT_RESOLUTION=1080p
# 默认字幕语言(默认:en)
YTDLP_DEFAULT_SUBTITLE_LANG=en
# 字符限制(默认:25000)
YTDLP_CHARACTER_LIMIT=25000
# 最大转录长度(默认:50000)
YTDLP_MAX_TRANSCRIPT_LENGTH=50000
🏗️ 架构
构建于
- yt-dlp - 视频提取引擎
- MCP SDK - 模型上下文协议
- Zod - TypeScript优先模式验证
- TypeScript - 类型安全和开发者体验
关键特性
- ✅ 类型安全: 完全的TypeScript严格模式
- ✅ 验证输入: Zod模式进行运行时验证
- ✅ 字符限制: 自动截断以防止上下文溢出
- ✅ 工具注释: readOnly, destructive, idempotent提示
- ✅ 错误指导: 对LLMs有操作性的错误消息
- ✅ 模块化设计: 清晰的责任分离
📊 响应格式
JSON格式
适合程序化处理:
{
"total": 50,
"count": 10,
"offset": 0,
"videos": [...],
"has_more": true,
"next_offset": 10
}
Markdown格式
人类可读的显示:
找到50个视频(显示10个):
1. **视频标题**
📺 频道: 创作者名称
⏱️ 时长: 10:30
🔗 URL: https://...
🔒 隐私与安全
- 无跟踪: 直接下载,无分析
- 输入验证: Zod模式防止注入
- URL验证: 严格的URL格式检查
- 字符限制: 防止上下文溢出攻击
- 默认只读: 大多数工具不会修改系统状态
🤝 贡献
欢迎贡献!请查看我们的贡献指南。
- 分叉仓库
- 创建一个功能分支 (
git checkout -b feature/amazing-feature)
- 提交更改 (
git commit -m '添加精彩功能')
- 推送到分支 (
git push origin feature/amazing-feature)
- 打开拉取请求
📝 许可证
本项目采用MIT许可证 - 查看LICENSE文件了解详情。
🙏 致谢
📚 相关项目
<div align="center">
⬆ 返回顶部
</div>