使用说明
OAuth2 CLI和MCP服务器 领英 API
它的作用
- 发布内容 --文本、图像、视频、文档、文章、多图像旋转木马和民意调查
- 评论和反应 --创建、列出和删除帖子上的评论和反应
- 组织支持 --作为一个组织发布、评论、反应和查看分析
- 分析 --每个职位、每个成员和每个组织的统计数据
- 媒体上传 --将图像、视频和文档上传到LinkedIn
- 职位草案 --发布前将帖子另存为草稿
- OAuth 2.0身份验证 使用自己的LinkedIn应用程序
- 直接令牌传递 用于从其他应用程序获得的令牌
- MCP服务器 用于AI助手集成(Claude、Cursor等)
- 命令行界面 用于可脚本化的LinkedIn操作
先决条件
- Node.js >= 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 mcp
Cursor
添加 .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 <name> |
使用特定的配置文件 |
--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 <id> |
OAuth 2.0客户端ID | 来自配置 |
--client-secret <secret> |
OAuth 2.0客户端机密 | 来自配置 |
--scope <scopes> |
OAuth 2.0作用域(空格分隔) | openid profile w_member_social |
auth token 选项:
| 选项 | 描述 |
|---|---|
--access-token <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> |
获取URN的帖子 |
post list |
按页码列出帖子 |
post update <urn> |
更新帖子的评论文本 |
post delete <urn> |
删除帖子(确认后) |
post create 选项:
| 选项 | 描述 | 默认值 |
|---|---|---|
--text <text> |
文本内容(也接受 --text-file、位置或stdin) |
|
--visibility <visibility> |
PUBLIC 或 CONNECTIONS |
PUBLIC |
--draft |
另存为草稿而不是发布 | |
--image <urn> |
要附加的图像URN | |
--image-file <path> |
要上传和附加的本地图像文件 | |
--video <urn> |
要附加的视频URN | |
--video-file <path> |
要上传和附加的本地视频文件 | |
--document <urn> |
要附加的文档URN | |
--document-file <path> |
要上传和附加的本地文档文件 | |
--images <urns> |
多个图像URNs(共用,最少2个) | |
--image-files <paths> |
多个本地图像文件(逗号分隔,至少2个) | |
--article-url <url> |
要附加的文章URL | |
--poll <question> |
投票问题文本 | |
--option <text> |
轮询选项(重复2-4次) | |
--poll-duration <duration> |
ONE_DAY, THREE_DAYS, ONE_WEEK,或 TWO_WEEKS |
THREE_DAYS |
--as-org <id> |
以组织身份发布(数字ID) | |
--format <format> |
输出格式(json, table) |
汽车 |
post list 选项:
| 选项 | 描述 | 默认值 |
|---|---|---|
--count <n> |
返回的帖子数量(最多100个) | 10 |
--start <n> |
分页起始索引 | 0 |
--as-org <id> |
列出组织的帖子(数字ID) |
comment --管理评论
| 命令 | 描述 |
|---|---|
comment create <post-urn> |
在帖子上创建评论 |
comment list <post-urn> |
列出帖子的评论 |
comment get <comment-urn> |
获取URN的具体评论 |
comment delete <comment-urn> |
删除评论(确认后) |
comment create 选项:
| 选项 | 描述 |
|---|---|
--text <text> |
评论文本(必填) |
--as-org <id> |
作为组织发表评论(数字ID) |
reaction --管理反应
| 命令 | 描述 |
|---|---|
reaction create <urn> |
在帖子中添加反应 |
reaction list <urn> |
列出帖子中的反应 |
reaction delete <urn> |
从帖子中删除反应 |
reaction create 选项:
| 选项 | 描述 |
|---|---|
--type <type> |
LIKE, PRAISE, EMPATHY, INTEREST, APPRECIATION,或 ENTERTAINMENT (默认值 LIKE) |
--as-org <id> |
作为一个组织进行反应(数字ID) |
org --管理组织
| 命令 | 描述 |
|---|---|
org list |
列出经过身份验证的用户管理的组织 |
org get <id> |
获取组织详细信息 |
org followers <id> |
获取组织关注者数量 |
media --上传媒体
| 命令 | 描述 |
|---|---|
media upload-image <file> |
上传图像(JPG、PNG、GIF) |
media upload-video <file> |
上传视频 |
media upload-document <file> |
上传文档(PDF、DOCX、PPTX、DOC、PPT;最大100 MB) |
接受所有媒体命令 --as-org <id> 和 --format json|table.
stats --查看分析
| 命令 | 描述 |
|---|---|
stats post <urn> |
获取帖子分析(印象、影响力、参与度) |
stats me |
获取所有帖子的汇总分析 |
stats org <id> |
获取组织共享统计信息 |
常见选项:
| 选项 | 描述 |
|---|---|
--from <date> / --start <date> |
起始日期范围(YYYY-MM-DD) |
--to <date> / --end <date> |
日期范围结束(YYYY-MM-DD) |
--time-granularity <granularity> |
DAY 或 MONTH (仅限组织统计数据) |
profile --管理配置文件
| 命令 | 描述 |
|---|---|
profile create <name> |
创建新配置文件 |
profile list |
列出所有配置文件 |
profile show [<name>] |
显示配置文件详细信息(已编辑) |
profile delete <name> |
删除配置文件(确认后) |
profile create 选项:
| 选项 | 描述 |
|---|---|
--access-token <token> |
OAuth 2.0访问令牌(必需) |
--api-version <version> |
LinkedIn API版本,例如。 202601 (必填) |
whoami --显示当前用户
linkedctl whoami
linkedctl whoami --format json
| 选项 | 描述 | 默认值 |
|---|---|---|
--format <format> |
输出格式(json, table) |
汽车 |
completion --壳牌完井
linkedctl completion bash
linkedctl completion zsh
安全
- 依赖机器人 通过自动拉取请求使依赖关系保持最新
- CodeQL 对每个推送和拉取请求进行分析,以实现自动漏洞检测
- 路径遍历验证 配置文件名可防止目录转义攻击
- 统一身份验证错误处理 所有MCP工具都提供一致的身份验证失败消息
- 破坏性行动 (删除帖子、删除评论、删除个人资料)需要交互式确认,除非
--force已通过
免责声明
这是一个独立的项目,不隶属于领英公司,也不得到领英公司的认可或与领英公司有关联。LinkedIn是LinkedIn公司的商标。
许可证
将LinkedCtl用作CLI工具或MCP服务器:无许可义务-自由使用。
使用 @linkedctl/core 作为项目中的库:您的组合作品必须根据AGPL-3.0(或兼容许可证)获得许可。