  
OAuth2 CLI和MCP服务器 领英 API
它的作用
- 发布内容 --文本、图像、视频、文档、文章、多图像旋转木马和民意调查
- 评论和反应 --创建、列出和删除帖子上的评论和反应
- 组织支持 --作为一个组织发布、评论、反应和查看分析
- 分析 --每个职位、每个成员和每个组织的统计数据
- 媒体上传 --将图像、视频和文档上传到LinkedIn
- 职位草案 --发布前将帖子另存为草稿
- OAuth 2.0身份验证 使用自己的LinkedIn应用程序
- 直接令牌传递 用于从其他应用程序获得的令牌
- MCP服务器 用于AI助手集成(Claude、Cursor等)
- 命令行界面 用于可脚本化的LinkedIn操作
先决条件
- >= 24
- A. LinkedIn开发者应用 具有适当的权限
安装
npm install -g linkedctl或者直接运行:
npx linkedctl --help快速开始
- 在以下位置创建LinkedIn应用程序 linkedin.com/developers
- 配置OAuth 2.0凭据
- 身份验证:
linkedctl auth login --client-id YOUR_CLIENT_ID --client-secret YOUR_CLIENT_SECRET- 开始使用:
linkedctl post "Hello from LinkedCtl!"请参阅 OAuth设置指南 了解详细的分步说明。
MCP集成
MCP客户端配置
Claude Desktop
添加到您的Claude Desktop配置(claude_desktop_config.json):
{
"mcpServers": {
"linkedctl": {
"command": "npx",
"args": ["linkedctl", "mcp"]
}
}
}Claude Code
claude mcp add linkedctl -- npx linkedctl mcpCursor
添加 .cursor/mcp.json 在项目根目录中:
{
"mcpServers": {
"linkedctl": {
"command": "npx",
"args": ["linkedctl", "mcp"]
}
}
}Windsurf
添加 ~/.codeium/windsurf/mcp_config.json:
{
"mcpServers": {
"linkedctl": {
"command": "npx",
"args": ["linkedctl", "mcp"]
}
}
}可用工具
所有工具都接受可选 profile 参数以选择配置文件。
认证
| 工具 | 说明 |
|---|---|
whoami | 显示当前用户的姓名、电子邮件和个人资料图片URL |
auth_status | 显示配置文件的身份验证状态 |
auth_revoke | 撤销服务器端的访问令牌并清除本地凭据 |
帖子
| 工具 | 说明 |
|---|---|
post_create | 在LinkedIn上创建带有可选媒体、投票或文章附件的帖子 |
post_get | 通过URN获取单个帖子 |
post_list | 列出带有分页的帖子(支持 as_org 组织职位) |
post_update | 更新现有帖子的评论文本 |
post_delete | 按URN删除帖子 |
post_create 支持丰富的内容类型:
| 参数 | 说明 |
|---|---|
text | 发布文本内容(必填) |
visibility | PUBLIC 或 CONNECTIONS (默认值 PUBLIC) |
draft | 另存为草稿而不是发布 |
image / image_file | 附加单个图像(URN或本地文件路径) |
video / video_file | 附加视频(URN或本地文件路径) |
document / document_file | 附加文档(URN或本地文件路径) |
images / image_files | 附上多张图片(至少2张) |
article_url | 附上文章链接 |
poll | 投票问题文本 |
poll_options | 投票答案选项(当需要时,需要2-4个 poll 已设置) |
poll_duration | ONE_DAY, THREE_DAYS, ONE_WEEK,或 TWO_WEEKS |
as_org | 作为组织发布(数字ID) |
评论
| 工具 | 说明 |
|---|---|
comment_create | 在帖子上创建评论(支持 as_org) |
comment_list | 列出帖子的评论 |
comment_get | 获取URN的具体评论 |
comment_delete | 按URN删除评论 |
反应
| 工具 | 说明 |
|---|---|
reaction_create | 在帖子中添加反应(支持 as_org).类型: LIKE, PRAISE, EMPATHY, INTEREST, APPRECIATION, ENTERTAINMENT |
reaction_list | 列出帖子中的反应 |
reaction_delete | 从柱子上移除反作用力(支撑 as_org) |
组织
| 工具 | 说明 |
|---|---|
org_list | 列出经过身份验证的用户管理的组织 |
org_get | 按ID获取单个组织 |
org_followers | 获取组织的关注者数量 |
分析
| 工具 | 说明 |
|---|---|
stats_post | 获取单个帖子的分析(印象、影响力、反应、评论、转发) |
stats_me | 获取所有帖子的汇总分析 |
stats_org | 获取组织的共享统计信息(生命周期或时间段) |
媒体
| 工具 | 说明 |
|---|---|
document_upload | 将文档上传到LinkedIn(PDF、DOCX、PPTX、DOC、PPT;最大100 MB) |
配置
配置文件格式
LinkedCtl将配置存储在YAML文件中。每个文件代表一个配置文件:
api-version: "202601"
oauth:
client-id: "YOUR_CLIENT_ID"
client-secret: "YOUR_CLIENT_SECRET"
access-token: "YOUR_ACCESS_TOKEN"
refresh-token: "YOUR_REFRESH_TOKEN"
token-expires-at: "2026-05-03T12:00:00.000Z"可用密钥:
| 密钥 | 描述 |
|---|---|
api-version | LinkedIn API版本(例如。 202601) |
oauth.client-id | OAuth 2.0客户端ID |
oauth.client-secret | OAuth 2.0客户端密钥 |
oauth.access-token | OAuth 2.0访问令牌 |
oauth.refresh-token | OAuth 2.0刷新令牌 |
oauth.token-expires-at | 令牌过期时间戳(ISO 8601) |
配置文件是用 0600 权限(仅限所有者读/写)。
文件位置和优先级
如果没有配置文件,LinkedCtl会按以下顺序搜索配置文件:
.linkedctl.yaml在当前工作目录中~/.linkedctl.yaml在主目录中
使用找到的第一个文件。写作时(例如之后 auth login),LinkedCtl会写入CWD文件(如果存在),否则会写入主目录文件。
档案
个人资料允许您管理多个LinkedIn帐户或配置。每个配置文件都存储为单独的YAML文件 ~/.linkedctl/:
| 配置文件 | 配置文件路径 |
|---|---|
| (默认) | ~/.linkedctl.yaml |
work | ~/.linkedctl/work.yaml |
personal | ~/.linkedctl/personal.yaml |
使用 --profile 使用任何命令标记:
linkedctl --profile work auth login --client-id ID --client-secret SECRET
linkedctl --profile work post "Hello from my work account!"使用管理配置文件 profile 命令:
linkedctl profile create work --access-token YOUR_TOKEN --api-version 202601
linkedctl profile list
linkedctl profile show work
linkedctl profile delete work认证方法
OAuth 2.0(推荐)
LinkedCtl通过您自己的LinkedIn开发者应用程序支持OAuth 2.0:
linkedctl auth login --client-id YOUR_CLIENT_ID --client-secret YOUR_CLIENT_SECRET直接令牌
如果您已经拥有来自其他应用程序的访问令牌:
linkedctl auth token --access-token YOUR_TOKEN环境变量
| 变量 | 描述 |
|---|---|
LINKEDCTL_CLIENT_ID | LinkedIn OAuth 2.0客户端ID |
LINKEDCTL_CLIENT_SECRET | LinkedIn OAuth 2.0客户端密钥 |
LINKEDCTL_ACCESS_TOKEN | 直接访问令牌(绕过OAuth流) |
LINKEDCTL_API_VERSION | LinkedIn API版本字符串(例如。 202601) 必需的 |
环境变量优先于配置文件值。
配置文件前缀环境变量
使用命名配置文件时,LinkedCtl还会读取以配置文件为前缀的环境变量。配置文件名称大写,连字符转换为下划线:
| 配置文件 | 变量 |
|---|---|
| (默认) | LINKEDCTL_ACCESS_TOKEN |
work | LINKEDCTL_WORK_ACCESS_TOKEN |
my-brand | LINKEDCTL_MY_BRAND_ACCESS_TOKEN |
同样的模式也适用于 CLIENT_ID, CLIENT_SECRET,以及 API_VERSION.
优先顺序
配置值按以下顺序解析(最高优先级优先):
- 环境变量 (如果配置文件处于活动状态,则以配置文件为前缀)
- 配置文件 (配置文件特定文件,或CWD/home回退)
CLI参考
全局选项
| 选项 | 描述 |
|---|---|
--profile | 使用特定的配置文件 |
--json | 强制JSON输出 |
-q, --quiet | 抑制信息输出 |
--no-color | 禁用颜色输出 |
auth --管理身份验证
| 命令 | 描述 |
|---|---|
auth setup | 交互式配置OAuth客户端凭据 |
auth login | 通过OAuth 2.0进行身份验证(打开浏览器) |
auth token | 存储直接访问令牌 |
auth status | 显示身份验证状态和令牌过期时间 |
auth logout | 从活动配置文件中清除存储的凭据 |
auth refresh | 使用存储的刷新令牌刷新访问令牌 |
auth revoke | 撤销服务器端的访问令牌并清除本地令牌 |
auth login 选项:
| 选项 | 描述 | 默认值 |
|---|---|---|
--client-id | OAuth 2.0客户端ID | 来自配置 |
--client-secret | OAuth 2.0客户端机密 | 来自配置 |
--scope | OAuth 2.0作用域(空格分隔) | openid profile w_member_social |
auth token 选项:
| 选项 | 描述 |
|---|---|
--access-token | 要存储的访问令牌(必需) |
post --管理LinkedIn帖子
# Shorthand: pass text as an argument
linkedctl post "Hello from LinkedCtl!"
# Explicit subcommand
linkedctl post create --text "Hello from LinkedCtl!"
# Pipe content from stdin
echo "Hello from LinkedCtl!" | linkedctl post create| 命令 | 描述 |
|---|---|
post create | 在LinkedIn上创建帖子 |
post get | 获取URN的帖子 |
post list | 按页码列出帖子 |
post update | 更新帖子的评论文本 |
post delete | 删除帖子(确认后) |
post create 选项:
| 选项 | 描述 | 默认值 |
|---|---|---|
--text | 文本内容(也接受 --text-file、位置或stdin) | |
--visibility | PUBLIC 或 CONNECTIONS | PUBLIC |
--draft | 另存为草稿而不是发布 | |
--image | 要附加的图像URN | |
| `--image-file | ||
| ` | 要上传和附加的本地图像文件 | |
--video | 要附加的视频URN | |
| `--video-file | ||
| ` | 要上传和附加的本地视频文件 | |
--document | 要附加的文档URN | |
| `--document-file | ||
| ` | 要上传和附加的本地文档文件 | |
--images | 多个图像URNs(共用,最少2个) | |
| `--image-files | ||
| ` | 多个本地图像文件(逗号分隔,至少2个) | |
--article-url | 要附加的文章URL | |
--poll | 投票问题文本 | |
--option | 轮询选项(重复2-4次) | |
--poll-duration | ONE_DAY, THREE_DAYS, ONE_WEEK,或 TWO_WEEKS | THREE_DAYS |
--as-org | 以组织身份发布(数字ID) | |
--format | 输出格式(json, table) | 汽车 |
post list 选项:
| 选项 | 描述 | 默认值 |
|---|---|---|
--count | 返回的帖子数量(最多100个) | 10 |
--start | 分页起始索引 | 0 |
--as-org | 列出组织的帖子(数字ID) |
comment --管理评论
| 命令 | 描述 |
|---|---|
| `comment create | |
| ` | 在帖子上创建评论 |
| `comment list | |
| ` | 列出帖子的评论 |
comment get | 获取URN的具体评论 |
comment delete | 删除评论(确认后) |
comment create 选项:
| 选项 | 描述 |
|---|---|
--text | 评论文本(必填) |
--as-org | 作为组织发表评论(数字ID) |
reaction --管理反应
| 命令 | 描述 |
|---|---|
reaction create | 在帖子中添加反应 |
reaction list | 列出帖子中的反应 |
reaction delete | 从帖子中删除反应 |
reaction create 选项:
| 选项 | 描述 |
|---|---|
--type | LIKE, PRAISE, EMPATHY, INTEREST, APPRECIATION,或 ENTERTAINMENT (默认值 LIKE) |
--as-org | 作为一个组织进行反应(数字ID) |
org --管理组织
| 命令 | 描述 |
|---|---|
org list | 列出经过身份验证的用户管理的组织 |
org get | 获取组织详细信息 |
org followers | 获取组织关注者数量 |
media --上传媒体
| 命令 | 描述 |
|---|---|
media upload-image | 上传图像(JPG、PNG、GIF) |
media upload-video | 上传视频 |
media upload-document | 上传文档(PDF、DOCX、PPTX、DOC、PPT;最大100 MB) |
接受所有媒体命令 --as-org 和 --format json|table.
stats --查看分析
| 命令 | 描述 |
|---|---|
stats post | 获取帖子分析(印象、影响力、参与度) |
stats me | 获取所有帖子的汇总分析 |
stats org | 获取组织共享统计信息 |
常见选项:
| 选项 | 描述 |
|---|---|
--from / --start | 起始日期范围(YYYY-MM-DD) |
--to / --end | 日期范围结束(YYYY-MM-DD) |
--time-granularity | DAY 或 MONTH (仅限组织统计数据) |
profile --管理配置文件
| 命令 | 描述 |
|---|---|
profile create | 创建新配置文件 |
profile list | 列出所有配置文件 |
profile show [] | 显示配置文件详细信息(已编辑) |
profile delete | 删除配置文件(确认后) |
profile create 选项:
| 选项 | 描述 |
|---|---|
--access-token | OAuth 2.0访问令牌(必需) |
--api-version | LinkedIn API版本,例如。 202601 (必填) |
whoami --显示当前用户
linkedctl whoami
linkedctl whoami --format json| 选项 | 描述 | 默认值 |
|---|---|---|
--format | 输出格式(json, table) | 汽车 |
completion --壳牌完井
linkedctl completion bash
linkedctl completion zsh安全
- 依赖机器人 通过自动拉取请求使依赖关系保持最新
- CodeQL 对每个推送和拉取请求进行分析,以实现自动漏洞检测
- 路径遍历验证 配置文件名可防止目录转义攻击
- 统一身份验证错误处理 所有MCP工具都提供一致的身份验证失败消息
- 破坏性行动 (删除帖子、删除评论、删除个人资料)需要交互式确认,除非
--force已通过
免责声明
这是一个独立的项目,不隶属于领英公司,也不得到领英公司的认可或与领英公司有关联。LinkedIn是LinkedIn公司的商标。
许可证
将LinkedCtl用作CLI工具或MCP服务器:无许可义务-自由使用。
使用 @linkedctl/core 作为项目中的库:您的组合作品必须根据AGPL-3.0(或兼容许可证)获得许可。
