使用说明
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 <repository-url>
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"
]
}
}