YouTube到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
cd yt-to-linkedin- 创建虚拟环境并安装依赖项:
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
pip install -r requirements.txt- 创建一个
.env使用API密钥在项目根目录中创建文件:
OPENAI_API_KEY=your_openai_api_key
YOUTUBE_API_KEY=your_youtube_api_key- 运行应用程序:
uvicorn app.main:app --reload- 访问API文档:http://localhost:8000/docs
Docker部署
- 构建Docker镜像:
docker build -t yt-to-linkedin-mcp .- 运行容器:
docker run -p 8000:8000 --env-file .env yt-to-linkedin-mcpSmithery部署
- 确保已安装并配置Smithery CLI。
- 部署到Smithery:
smithery deployAPI终点
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数据API密钥 | 否(可在请求中提供) |
| PORT | 运行服务器的端口(默认值:8000) | 否 |
备注:虽然API键的环境变量是可选的(因为它们可以在每个请求中提供),但建议为本地开发和测试设置它们。当部署到Smithery时,用户需要在请求中提供自己的API密钥。
许可证
麻省理工学院
