YT-nija🥷
一个全面的YouTube MCP(模型上下文协议)服务器,提供人工智能驱动的视频分析、播放控制、转录管理和高级内容处理功能。
特性
🎬 视频回放
- 在浏览器或VLC播放器中播放视频
- 使用ffplay进行纯音频播放
- 带时间戳控制的视频片段播放
- 主动播放会话管理
📊 数据检索
- 获取详细的视频信息(标题、观看次数、点赞、持续时间等)
- 获取所有视频的播放列表详细信息
- 检索频道信息和统计数据
- 搜索YouTube视频和音乐
- 下载多种质量的视频缩略图
📝 成绩单管理
- 获取官方视频记录
- 人工智能驱动的成绩单生成(官方不可用时)
- 将成绩单翻译成任何语言
- 设置带或不带时间戳的成绩单格式
🤖 AI驱动的分析
- 生成包含关键点的视频摘要
- 自动生成章节标记
- 提取具有相关性得分的相关关键字
- 检测主题和类别
- 创建AI驱动的视频亮点
安装
先决条件
- Node.js>=18.0.0
- npm>=9.0.0
- Google Gemini API密钥(人工智能功能所需)
- 可选:VLC媒体播放器(用于VLC播放)
- 可选:FFmpeg(用于音频播放和处理)
设置
- 克隆存储库:
git clone
cd yt-ninja- 安装依赖项:
npm install- 配置环境变量:
cp .env.example .env编辑 .env 并添加您的配置:
# Required
GEMINI_API_KEY=your-google-gemini-api-key
# Optional
DOWNLOAD_DIR=./downloads
TEMP_DIR=./temp
MAX_CONCURRENT_DOWNLOADS=3
LOG_LEVEL=info- 构建项目:
npm run build配置
环境变量
| 变量 | 必填 | 默认 | 描述 |
|---|---|---|---|
GEMINI_API_KEY | 是 | - | Google Generative AI API AI功能密钥 |
DOWNLOAD_DIR | 没有 | ./downloads | 下载文件目录 |
TEMP_DIR | 没有 | ./temp | 临时文件目录 |
MAX_CONCURRENT_DOWNLOADS | 没有 | 3 | 最大并发下载量 |
LOG_LEVEL | 没有 | info | 日志记录级别(错误、警告、信息、调试) |
获取Gemini API密钥
- 访问 谷歌人工智能工作室
- 使用您的Google帐户登录
- 单击“创建API密钥”
- 复制密钥并将其添加到您的
.env文件
MCP配置
添加到MCP设置文件(mcp.json):
{
"mcpServers": {
"yt-ninja": {
"command": "node",
"args": ["/path/to/yt-ninja/dist/index.js"],
"env": {
"GEMINI_API_KEY": "your-api-key-here"
},
"disabled": false
}
}
}可用工具
播放工具
play_youtube_video
在浏览器或VLC播放器中播放YouTube视频。
参数:
url(字符串,必填):YouTube视频URLplayer(字符串,可选):玩家类型-browser或vlc(默认值:browser)
例子:
{
"url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
"player": "browser"
}数据检索工具
get_video_info
获取有关YouTube视频的全面信息。
参数:
url(字符串,必填):YouTube视频URL
退货: 视频标题、描述、频道、视图、点赞、持续时间、标签、缩略图等。
get_playlist_info
获取有关YouTube播放列表的信息。
参数:
url(字符串,必填):YouTube播放列表URL
退货: 播放列表标题、描述、视频计数、总持续时间、视频列表
get_channel_info
获取有关YouTube频道的信息。
参数:
channelId(字符串,必填):频道ID或URL
退货: 频道名称、描述、订阅者数量、总观看次数、视频数量
search_youtube
在YouTube上搜索视频。
参数:
query(字符串,必填):搜索查询maxResults(数字,可选):最大结果(1-50,默认值:10)
退货: 包含视频详细信息的搜索结果数组
search_music
在YouTube上专门搜索音乐。
参数:
query(字符串,必填):音乐搜索查询maxResults(数字,可选):最大结果(1-50,默认值:10)
退货: 音乐搜索结果数组
download_thumbnail
下载视频缩略图。
参数:
url(字符串,必填):YouTube视频URLoutputPath(字符串,可选):输出文件路径quality(字符串,可选):质量-maxres,high,medium,default(默认值:maxres)
成绩单工具
get_transcript
获取视频的文字记录/字幕。
参数:
url(字符串,必填):YouTube视频URLlanguage(字符串,可选):语言代码(例如,'en'、'es'、'fr')
退货: 转录文本、语言、时间戳、源类型
translate_transcript
将视频转录本翻译成另一种语言。
参数:
url(字符串,必填):YouTube视频URLtargetLanguage(字符串,必填):目标语言代码
退货: 带有原始时间戳的翻译稿
AI分析工具
summarize_video
生成基于AI的视频摘要。
参数:
url(字符串,必填):YouTube视频URLmaxWords(数字,可选):摘要中的最大字数(默认值:200)
退货: 摘要文本、要点、字数
generate_chapters
自动为视频生成章节标记。
参数:
url(字符串,必填):YouTube视频URL
退货: 带有时间戳、标题和描述的章节数组
get_keywords
从视频中提取相关关键字。
参数:
url(字符串,必填):YouTube视频URLcount(数字,可选):关键字数量(默认值:15)
退货: 具有相关性得分和频率的关键字数组
detect_topics
检测视频中的主题和类别。
参数:
url(字符串,必填):YouTube视频URL
退货: 一系列具有置信度得分和类别的主题
generate_video_highlights
生成AI驱动的视频亮点。
参数:
url(字符串,必填):YouTube视频URLcount(数字,可选):突出显示的数量(5-10,默认值:7)
退货: 带有时间戳、描述、原因和分数的精彩时刻数组
使用示例
与一起使用\\
人工智能
配置为MCP服务器后,您可以通过自然语言使用YT-NINJA:
"Get information about this video: https://www.youtube.com/watch?v=dQw4w9WgXcQ"
"Summarize this YouTube video in 150 words"
"Generate chapters for this tutorial video"
"Extract the top 20 keywords from this video"
"Get the transcript and translate it to Spanish"程序化使用
import { dataManager, aiAnalyzer, transcriptManager } from 'yt-ninja';
// Get video info
const videoInfo = await dataManager.getVideoInfo('https://youtube.com/watch?v=...');
// Generate summary
const summary = await aiAnalyzer.summarizeVideo('https://youtube.com/watch?v=...', 200);
// Get transcript
const transcript = await transcriptManager.getTranscript('https://youtube.com/watch?v=...');发展
脚本
npm run dev-以热重载的开发模式运行npm run build-为生产而建npm start-启动生产服务器npm run lint-Lint代码npm run format-使用Prettier格式化代码npm run type-check-检查TypeScript类型
项目结构
yt-ninja/
├── src/
│ ├── index.ts # Entry point
│ ├── server.ts # MCP server setup
│ ├── integrations/ # External service integrations
│ │ ├── youtube.ts # YouTube API client
│ │ ├── genai.ts # Google GenAI client
│ │ ├── ffmpeg.ts # FFmpeg integration
│ │ └── process.ts # Process management
│ ├── managers/ # Feature managers
│ │ ├── DataManager.ts # Data retrieval
│ │ ├── PlaybackManager.ts # Playback control
│ │ ├── TranscriptManager.ts # Transcript operations
│ │ ├── AIAnalyzer.ts # AI analysis
│ │ ├── MediaProcessor.ts # Media processing
│ │ └── AdvancedFeaturesManager.ts # Advanced features
│ ├── types/ # TypeScript type definitions
│ └── utils/ # Utility functions
├── dist/ # Compiled output
├── downloads/ # Downloaded files
├── .env # Environment configuration
└── package.json错误处理
YT-NINJA提供详细的错误消息和建议:
{
"success": false,
"error": {
"code": "INVALID_URL",
"message": "Invalid YouTube video URL",
"details": { "url": "..." },
"suggestions": [
"Provide a valid YouTube video URL",
"Example: https://www.youtube.com/watch?v=VIDEO_ID"
]
}
}