MCP YouTube到LinkedIn生成器
一种模型上下文协议(MCP)服务器,可自动从YouTube视频生成LinkedIn帖子草稿。该服务器根据YouTube视频字幕提供高质量、可编辑的内容草稿。
服务介绍
YouTube to LinkedIn MCP 服务器
一个模型上下文协议(MCP)服务器,能够自动化地从YouTube视频生成LinkedIn帖子草稿。该服务器基于YouTube视频的字幕提供高质量、可编辑的内容草稿。
功能
- YouTube 字幕提取:使用视频URL从YouTube视频中提取字幕
- 字幕总结:使用OpenAI GPT生成简洁的视频内容摘要
- LinkedIn 帖子生成:创建具有自定义语气和风格的专业LinkedIn帖子草稿
- 模块化API设计:清晰的FastAPI实现,带有明确定义的端点
- 容器化部署:准备在Smithery上部署
设置说明
前提条件
- Python 3.8+
- Docker(用于容器化部署)
- OpenAI API密钥
- YouTube数据API密钥(可选,但推荐以获得更好的元数据)
本地开发
-
克隆仓库:
git clone <repository-url> cd yt-to-linkedin -
创建虚拟环境并安装依赖项:
python -m venv venv source venv/bin/activate # 在Windows上: venv\Scripts\activate pip install -r requirements.txt -
在项目根目录下创建一个包含您的API密钥的
.env文件:OPENAI_API_KEY=your_openai_api_key YOUTUBE_API_KEY=your_youtube_api_key -
运行应用程序:
uvicorn app.main:app --reload -
访问 http://localhost:8000/docs 上的API文档
Docker 部署
-
构建Docker镜像:
docker build -t yt-to-linkedin-mcp . -
运行容器:
docker run -p 8000:8000 --env-file .env yt-to-linkedin-mcp
Smithery 部署
-
确保已安装并配置了Smithery CLI。
-
部署到Smithery:
smithery deploy
API 端点
1. 字幕提取
端点: /api/v1/transcript
方法: POST
描述: 从YouTube视频中提取字幕
请求体:
{
"youtube_url": "https://www.youtube.com/watch?v=VIDEO_ID",
"language": "en",
"youtube_api_key": "your_youtube_api_key" // Optional, provide your own YouTube API key
}
响应:
{
"video_id": "VIDEO_ID",
"video_title": "Video Title",
"transcript": "Full transcript text...",
"language": "en",
"duration_seconds": 600,
"channel_name": "Channel Name",
"error": null
}
2. 字幕总结
端点: /api/v1/summarize
方法: POST
描述: 从视频字幕生成摘要
请求体:
{
"transcript": "Video transcript text...",
"video_title": "Video Title",
"tone": "professional",
"audience": "general",
"max_length": 250,
"min_length": 150,
"openai_api_key": "your_openai_api_key" // Optional, provide your own OpenAI API key
}
响应:
{
"summary": "Generated summary text...",
"word_count": 200,
"key_points": [
"Key point 1",
"Key point 2",
"Key point 3"
]
}
3. LinkedIn 帖子生成
端点: /api/v1/generate-post
方法: POST
描述: 根据视频摘要生成LinkedIn帖子
请求体:
{
"summary": "Video summary text...",
"video_title": "Video Title",
"video_url": "https://www.youtube.com/watch?v=VIDEO_ID",
"speaker_name": "Speaker Name",
"hashtags": ["ai", "machinelearning"],
"tone": "professional",
"voice": "first_person",
"audience": "technical",
"include_call_to_action": true,
"max_length": 1200,
"openai_api_key": "your_openai_api_key" // Optional, provide your own OpenAI API key
}
响应:
{
"post_content": "Generated LinkedIn post content...",
"character_count": 800,
"estimated_read_time": "About 1 minute",
"hashtags_used": ["#ai", "#machinelearning"]
}
4. 输出格式化
端点: /api/v1/output
方法: POST
描述: 格式化LinkedIn帖子以便输出
请求体:
{
"post_content": "LinkedIn post content...",
"format": "json"
}
响应:
{
"content": {
"post_content": "LinkedIn post content...",
"character_count": 800
},
"format": "json"
}
环境变量
| 变量 | 描述 | 是否必需 |
|---|---|---|
| OPENAI_API_KEY | 用于生成摘要和帖子的 OpenAI API 密钥 | 否(可以在请求中提供) |
| YOUTUBE_API_KEY | 用于获取视频元数据的 YouTube Data API 密钥 | 否(可以在请求中提供) |
| PORT | 运行服务器的端口(默认:8000) | 否 |
注意:虽然 API 密钥的环境变量是可选的(因为它们可以在每次请求中提供),但建议在本地开发和测试时设置这些变量。当部署到 Smithery 时,用户需要在请求中提供他们自己的 API 密钥。
许可证
MIT