LinkedIn自动化服务

一个用于LinkedIn自动化的FastMCP服务器,提供全面的LinkedIn API集成,支持创建、更新和删除带有媒体(图片、视频、文档)的帖子。

  • by Lnxtanx
  • Python
  • 本地部署
  • 4 星标
  • 更新于
在 GitHub 查看 Lnxtanx/LinkedIn-MCP

使用说明

LinkedIn MCP 服务器

一个用于LinkedIn自动化的FastMCP服务器,提供全面的LinkedIn API集成,支持创建、更新和删除带有媒体(图片、视频、文档)的帖子。

🚀 特点

核心工具

  • 创建帖子创建包含文本、图片、视频或文档的LinkedIn帖子
  • 更新帖子更新现有的LinkedIn帖子文本
  • 删除帖子删除LinkedIn帖子(支持UGC和分享两种格式)

媒体支持

  • 文本简单的文本帖子
  • 图像图片上传(JPG、PNG、GIF)
  • 视频视频上传(MP4、MOV、AVI格式)支持延长超时时间
  • 文件文件上传(PDF、DOC、DOCX、PPT、PPTX格式)

高级功能

  • 智能超时处理(大文件最多可支持10分钟)
  • 基于文件大小的动态视频处理等待时间
  • 为POST操作进行正确的URN编码
  • 全面的错误处理和进度反馈
  • 支持UGC帖子和传统Share帖子

📋 前提条件

  • Python 3.10 或更高版本
  • uv 包管理器
  • 拥有API访问权限的LinkedIn开发者账户
  • 具有所需权限的有效LinkedIn访问令牌

LinkedIn API所需权限

  • w_member_social对成员社交帖子的写入访问权限
  • (可选) r_liteprofile读取基本资料信息

🛠 安装

  1. 克隆或下载该项目

    mkdir linkedin-mcp
    cd linkedin-mcp
    
  2. 安装依赖项

    uv init
    uv add fastmcp>=2.12.4 requests
    
  3. 设置LinkedIn API凭据

    • 在LinkedIn上创建一个开发者应用 LinkedIn开发者门户
    • 生成一个访问令牌,使用 w_member_social 许可;权限
    • 获取您的成员URN(个人LinkedIn个人资料URN)

⚙️ 配置

更新以下变量中的 main.py 使用您的LinkedIn凭据:

# LinkedIn API Credentials (REPLACE WITH YOUR VALUES)
LINKEDIN_ACCESS_TOKEN = "YOUR_ACCESS_TOKEN_HERE"
LINKEDIN_MEMBER_URN = "urn:li:person:YOUR_MEMBER_ID"
LINKEDIN_API_BASE = "https://api.linkedin.com/v2"

如何获取你的认证资格

  1. 访问令牌:

    • 前往LinkedIn开发者门户
    • 创建一个应用程序并提出请求 w_member_social 许可;权限
    • 在您的应用设置中生成访问令牌
  2. 成员统一资源名称(URN):

    • 使用LinkedIn API /me 获取您个人资料的终端点
    • 从响应中提取URN
    • 格式: urn:li:person:XXXXXXXXXX

🚀 使用方法

启动服务器

# Start in development mode
uv run fastmcp dev main.py

服务器将在 http://localhost:6274 配备MCP Inspector用于测试。

工具示例

1. 创建文本帖子

create_post(
    content="Hello LinkedIn! This is my first MCP post.",
    media_type="TEXT"
)

2. 创建图片帖子

create_post(
    content="Check out this amazing image!",
    media_type="IMAGE",
    file_path="C:/path/to/your/image.jpg"
)

3. 创建视频帖子

create_post(
    content="Watch this cool video!",
    media_type="VIDEO",
    file_path="C:/path/to/your/video.mp4"
)

4. 创建文档后操作

create_post(
    content="Read my latest report",
    media_type="DOCUMENT",
    file_path="C:/path/to/your/document.pdf"
)

5. 更新帖子

update_post(
    post_id="urn:li:ugcPost:1234567890",
    new_text="Updated post content"
)

6. 删除帖子

delete_post(post_id="urn:li:ugcPost:1234567890")
# or for legacy shares
delete_post(post_id="urn:li:share:1234567890")

⏱️ 超时配置

服务器采用智能超时处理机制:

  • 文本帖子30秒
  • IMAGE帖子2分钟
  • 视频帖子10分钟
  • 文档帖子10分钟

文件上传超时时间根据文件大小动态调整:

  • 文件大小 < 10MB:2分钟
  • 文件大小10-50MB:5分钟
  • 文件大小 > 50MB:10分钟

🔧 技术细节

媒体上传流程

  1. 注册在LinkedIn上注册上传以获取上传URL和资产URN
  2. 二进制上传将实际文件数据上传到LinkedIn的存储空间
  3. 处理中,等待等待LinkedIn处理媒体文件(尤其是视频)
  4. 帖子创建使用上传的媒体创建LinkedIn帖子

错误处理

服务器提供了全面的错误处理机制:

  • 文件存在性验证
  • 媒体类型验证
  • 上传失败恢复
  • 超时管理
  • LinkedIn API解析错误

URN处理

服务器能够正确处理不同的LinkedIn URN格式:

  • 用户生成内容(UGC)帖子: urn:li:ugcPost:{id}
  • 遗产股份 urn:li:share:{id}
  • API调用的正确URL编码

📁 项目结构

linkedin-mcp/
├── main.py              # Main MCP server code
├── pyproject.toml       # Python project configuration
├── README.md           # This file
└── .env               # Environment variables (optional)

🔍 API 参考

创建帖子(content,媒体类型="文本",文件路径=None)

创建一条带有可选媒体的新LinkedIn帖子。

参数:

  • content (str): 帖子的文本内容
  • media_type (str): 媒体类型 - “文本”、“图片”、“视频”或“文档”
  • file_path (字符串,可选):媒体文件的绝对路径

返回值:

  • 包含成功状态、发布URN(通用资源名称)和任何错误详情的字典

更新帖子(post_id, new_text)

更新现有UGC帖子的文本内容。

参数:

  • post_id (str): 帖子URN(例如,“urn:li:ugcPost:1234567890”)
  • new_text (字符串): 新文本内容

返回值:

  • 包含成功状态和操作详情的字典

删除帖子(帖子ID)

删除LinkedIn帖子(支持UGC和分享两种格式)。

参数:

  • post_id (str): 帖子统一资源名称 (URN)(例如,“urn:li:ugcPost:1234567890” 或 “urn:li:share:1234567890”)

返回值:

  • 包含成功状态和操作详情的字典

🚨 重要提示

超时行为

  • 如果你看到超时错误,但帖子已经出现在LinkedIn上,那么上传是成功的
  • LinkedIn在后台处理上传内容,因此在最终确认之前可能会出现超时情况
  • 检查你的LinkedIn个人资料以验证帖子创建情况

文件大小限制

  • LinkedIn对不同类型的媒体文件设有限制
  • 大视频(>100MB)可能会达到最长10分钟的超时时间
  • 考虑在上传前压缩大文件

API速率限制

  • LinkedIn对API调用有限速限制
  • 分散你的请求,以避免达到限制
  • 服务器在视频处理时包含了适当的延迟

🐞 故障排除

常见问题

  1. “ACCESS_DENIED”错误

    • 验证您的访问令牌是否具有所需的权限
    • 检查您的LinkedIn应用程序是否已 w_member_social 许可;权限
  2. “文件未找到”错误

    • 使用绝对文件路径
    • 确保文件存在且可访问
  3. 上传超时

    • 检查您的网络连接
    • 先尝试使用较小的文件
    • 记住:超时并不总是意味着失败
  4. 无效的URN格式

    • 帖子ID必须以……开头 urn:li:ugcPost: 或者 urn:li:share:
    • 从帖子创建响应中获取正确的URNs

调试模式

以调试日志模式启动服务器:

uv run fastmcp dev main.py --debug

📄 许可证

本项目仅供教育和开发目的使用,不做任何保证。请确保遵守LinkedIn的API服务条款。

🤝 贡献(或“参与贡献”)

欢迎随时提交问题、功能请求或拉取请求,以改进这个LinkedIn MCP服务器。

📞 支持

对于问题或疑虑:

  1. 查看上面的故障排除部分
  2. 查看LinkedIn的API文档
  3. 使用MCP检查器进行测试 http://localhost:6274

注替换所有占位符凭证 main.py 在运行服务器之前,请使用您实际的LinkedIn API凭据。