YouTube 到 LinkedIn MCP 服务器
一个模型上下文协议 (MCP) 服务器,可自动根据 YouTube 视频生成 LinkedIn 帖子草稿。该服务器基于 YouTube 视频脚本提供高质量、可编辑的内容草稿。
特征
YouTube 成绩单提取:使用视频 URL 从 YouTube 视频中提取成绩单
文字记录摘要:使用 OpenAI GPT 生成视频内容的简明摘要
LinkedIn 帖子生成:创建具有可自定义语气和风格的专业 LinkedIn 帖子草稿
模块化 API 设计:简洁的 FastAPI 实现,具有明确定义的端点
容器化部署:准备在 Smithery 上部署
Related MCP server: YouTube Translate MCP
设置说明
先决条件
Python 3.8+
Docker(用于容器化部署)
OpenAI API 密钥
YouTube 数据 API 密钥(可选,但建议用于更好的元数据)
本地开发
克隆存储库:
git clone <repository-url> cd yt-to-linkedin创建虚拟环境并安装依赖项:
python -m venv venv source venv/bin/activate # On 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_密钥 | 用于摘要和帖子生成的 OpenAI API 密钥 | 否(可在请求中提供) |
YouTube API 密钥 | 用于获取视频元数据的 YouTube 数据 API 密钥 | 否(可在请求中提供) |
港口 | 运行服务器的端口(默认值:8000) | 不 |
注意:虽然 API 密钥的环境变量是可选的(因为它们可以在每个请求中提供),但建议在本地开发和测试时设置它们。部署到 Smithery 时,用户需要在请求中提供自己的 API 密钥。
执照
麻省理工学院