YouTube MCP服务器
一个强大的模型上下文协议(MCP)服务器,提供全面的YouTube功能和AI驱动的文本处理工具,部署为Cloudflare Worker。
🚀 Live服务器
服务器部署在:https://youtube-mcp-server.anis-ayari-perso.workers.dev
📋 特性
- YouTube视频搜索:使用详细的元数据搜索和分析YouTube视频
- 评论分析:分析视频评论以获得情感和见解
- AI驱动的文本工具:重写、总结、扩展、翻译和增强文本
- 搜索引擎优化:从成功的视频中提取关键字和标签
- 视频比较:比较多个视频的性能指标
- 脚本生成:创建完整的YouTube视频脚本
- 缓存:基于KV的缓存可提高性能
- MCP协议支持:完整的MCP协议实施
- REST API:直接REST端点,便于集成
- CORS已启用:可以从web浏览器调用
🛠️ 可用工具(共13个)
YouTube工具
1.YouTube视频搜索(search_youtube_videos)
使用详细的元数据搜索YouTube视频。
参数:
query(字符串,必填):搜索查询maxResults(数字,可选):最大结果(默认值:20)
退货: 视频ID、标题、描述、URL、缩略图、观看次数、持续时间、频道信息
2.分析视频评论(analyze_video_comments)
分析视频的评论情绪和主题。
参数:
videoId(字符串,必填):YouTube视频IDmaxComments(数字,可选):要分析的最大评论数(默认值:100)
退货: 情感分析、反复出现的主题、观众反馈见解
3.生成视频脚本(generate_video_script)
使用钩子、内容和CTA生成完整的YouTube视频脚本。
参数:
topic(字符串,必填):视频主题duration(字符串,可选):“短”、“中”、“长”(默认值:“中”)style(字符串,可选):“教育”、“娱乐”、“教程”、“vlog”(默认:“教育性”)targetAudience(字符串,可选):目标受众描述
退货: 带有时间戳、视觉建议和参与提示的完整脚本
4.提取YouTube搜索引擎优化(extract_youtube_seo)
从成功的视频中提取SEO关键字和标签。
参数:
query(字符串,必填):要分析的主题competitors(数字,可选):要分析的视频数量(默认值:10)
退货: 关键词、标题公式、标签、优化技术
5.比较视频(compare_videos)
比较多个视频的性能指标。
参数:
videoIds(array,必填):要比较的视频ID数组
退货: 绩效排名、成功因素、改进建议
6.分析视频景观(analyze_video_landscape)
分析现有视频并提出独特的内容角度。
参数:
query(字符串,必填):要分析的主题maxVideos(数字,可选):要分析的视频数量(默认值:10)
退货: 内容差距、独特的视频创意、目标受众
AI文本工具
7.OpenAI完成(openai_completion)
使用OpenAI模型生成文本。
参数:
prompt(字符串,必填):文本提示model(字符串,可选):OpenAI模型(默认:“gpt-4o-mini”)maxTokens(数字,可选):最大令牌数(默认值:1000)
8.重写文本(rewrite_text)
以不同的样式重写文本。
参数:
text(字符串,必填):要重写的文本style(字符串,可选):“专业”、“休闲”、“正式”、“创意”(默认为“专业”)
9.总结文本(summarize_text)
创建简洁的摘要。
参数:
text(字符串,必填):要摘要的文本length(字符串,可选):“短”、“中”、“长”(默认值:“中”)
10.展开文本(expand_text)
用其他详细信息展开文本。
参数:
text(字符串,必填):要展开的文本targetLength(字符串,可选):目标扩展(默认值:“double”)
11.修正语法(fix_grammar)
修正语法、拼写和标点符号。
参数:
text(字符串,必填):要修复的文本
12.翻译文本(translate_text)
将文本翻译成其他语言。
参数:
text(字符串,必填):要翻译的文本targetLanguage(字符串,可选):目标语言(默认:“西班牙语”)
13.简化文本(simplify_text)
简化文本以便于阅读。
参数:
text(字符串,必填):简化文本readingLevel(字符串,可选):“小学”、“高中”、“普通”(默认值:“普通”)
📡 API终点
REST端点
YouTube搜索
GET /youtube/search?query=&maxResults=OpenAI完成
POST /openai/completion
Content-Type: application/json
{
"prompt": "Your prompt here",
"model": "gpt-4o-mini",
"maxTokens": 1000
}文本增强端点
POST /text/rewrite
POST /text/summarize
POST /text/expand
POST /text/fix-grammar
POST /text/translate
POST /text/simplify
Content-Type: application/json
{
"text": "Your text here",
// Additional parameters based on endpoint
}MCP端点
列出所有工具
POST /mcp
Content-Type: application/json
{
"method": "tools/list"
}调用工具
POST /mcp
Content-Type: application/json
{
"method": "tools/call",
"params": {
"name": "tool_name",
"arguments": {
// tool-specific arguments
}
}
}💻 使用示例
示例1:分析视频性能
// Search for videos
const searchResponse = await fetch('https://youtube-mcp-server.anis-ayari-perso.workers.dev/mcp', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
method: 'tools/call',
params: {
name: 'search_youtube_videos',
arguments: { query: 'javascript tutorial', maxResults: 5 }
}
})
});
// Analyze comments from top video
const videoId = 'VIDEO_ID_HERE';
const commentsResponse = await fetch('https://youtube-mcp-server.anis-ayari-perso.workers.dev/mcp', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
method: 'tools/call',
params: {
name: 'analyze_video_comments',
arguments: { videoId, maxComments: 100 }
}
})
});示例2:生成优化内容
// Extract SEO insights
const seoResponse = await fetch('https://youtube-mcp-server.anis-ayari-perso.workers.dev/mcp', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
method: 'tools/call',
params: {
name: 'extract_youtube_seo',
arguments: { query: 'web development', competitors: 10 }
}
})
});
// Generate script based on insights
const scriptResponse = await fetch('https://youtube-mcp-server.anis-ayari-perso.workers.dev/mcp', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
method: 'tools/call',
params: {
name: 'generate_video_script',
arguments: {
topic: 'Web Development for Beginners',
duration: 'medium',
style: 'tutorial',
targetAudience: 'Complete beginners'
}
}
})
});示例3:比较竞争对手视频
const compareResponse = await fetch('https://youtube-mcp-server.anis-ayari-perso.workers.dev/mcp', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
method: 'tools/call',
params: {
name: 'compare_videos',
arguments: {
videoIds: ['VIDEO_ID_1', 'VIDEO_ID_2', 'VIDEO_ID_3']
}
}
})
});📝 响应格式
YouTube搜索响应
{
"videoId": "dQw4w9WgXcQ",
"title": "Video Title",
"description": "Video description...",
"url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
"thumbnail": {
"default": "https://i.ytimg.com/vi/dQw4w9WgXcQ/default.jpg",
"medium": "https://i.ytimg.com/vi/dQw4w9WgXcQ/mqdefault.jpg",
"high": "https://i.ytimg.com/vi/dQw4w9WgXcQ/hqdefault.jpg"
},
"publishedAt": "2024-01-01T00:00:00Z",
"channelTitle": "Channel Name",
"viewCount": "1000000",
"duration": "10:30",
"captions": []
}MCP工具响应
{
"content": [
{
"type": "text",
"text": "Tool execution result..."
}
],
"metadata": {
// Optional metadata specific to each tool
}
}🚀 性能特点
- 缓存:使用Cloudflare KV将结果缓存1小时
- 并发处理:可以并行调用多个工具
- 优化响应:大型响应结构高效
🔧 发展
地方发展
npm install
npm run dev部署到Cloudflare
npm run deploy环境变量
YOUTUBE_API_KEY:YouTube数据API v3密钥OPENAI_API_KEY:OpenAI API密钥CACHE:KV命名空间绑定(在wrangler.toml中配置)
🔒 安全
- 存储为Cloudflare Worker机密的API密钥
- 浏览器访问已启用CORS
- Cloudflare处理的速率限制
📊 用例
- 内容创作者:研究趋势、分析竞争、生成脚本
- SEO专家:提取关键字,优化标题和描述
- 市场研究人员:分析观众情绪和参与度
- 教育工作者:创建具有适当结构的教育内容
- 营销人员:比较活动绩效,找出内容差距
🤝 贡献
欢迎投稿!请打开问题或提交拉取请求。
📄 许可证
MIT许可证
📧 支持
有关问题和疑问,请在 .
