mcpField
L
linkedctl

linkedctl

本地服务
github.com/alexey-pelykh社交媒体21 天前更新

关于 linkedctl

linkedctl 是通过 LinkedIn API 操作平台的命令行工具和 MCP 服务,支持个人及组织内容发布、互动和统计,并提供 OAuth 或令牌认证与多配置档案管理。

主要功能

  1. 01发布文字、媒体、投票和文章
  2. 02管理评论与反应
  3. 03以组织身份发布和互动
  4. 04查看帖子及组织统计
  5. 05使用 OAuth 或访问令牌认证
  6. 06管理多个配置档案

适用场景

  1. 01向 LinkedIn 发布草稿或媒体帖子
  2. 02查看帖子的互动统计
  3. 03管理组织帖子和评论
  4. 04通过脚本自动执行 LinkedIn 操作

MCP 相关

MCP 服务将 LinkedIn 认证、帖子、评论、反应、组织、统计和媒体操作作为工具提供给 AI 助手。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"alexey-pelykh-linkedctl": {
"command": "npx",
"args": [
"-y",
"linkedctl"
],
"env": {
"LINKEDCTL_ACCESS_TOKEN": "<LINKEDCTL_ACCESS_TOKEN>",
"LINKEDCTL_CLIENT_ID": "<LINKEDCTL_CLIENT_ID>",
"LINKEDCTL_CLIENT_SECRET": "<LINKEDCTL_CLIENT_SECRET>"
}
}
}
}
启动命令npx -y linkedctl
需要配置的环境变量
LINKEDCTL_ACCESS_TOKEN密钥LinkedIn OAuth2 access token
LINKEDCTL_CLIENT_IDLinkedIn OAuth2 client ID
LINKEDCTL_CLIENT_SECRET密钥LinkedIn OAuth2 client secret

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npmlinkedctl0.5.0

工具

22

收录的工具列表 · 更新于 2 周前

参数类型必填说明
profilestring否要使用的配置文件中的个人资料名称

详细介绍

LinkedCtl:完整的 LinkedIn CLI 和 MCP

CI CodeQL License

用于 LinkedIn API 的 OAuth2 CLI 和 MCP 服务。

功能

  • 发布内容 — 文本、图片、视频、文档、文章、多图轮播和投票
  • 评论和回应 — 创建、列出和删除帖子的评论和回应
  • 组织支持 — 以组织身份发布、评论、回应并查看分析数据
  • 分析数据 — 按帖子、成员和组织统计数据
  • 媒体上传 — 将图片、视频和文档上传到 LinkedIn
  • 帖子草稿 — 将帖子保存为草稿,然后再发布
  • 使用自己的 LinkedIn 应用进行 OAuth 2.0 身份验证
  • 直接传递令牌,适用于从其他应用获取的令牌
  • 用于 AI 助手集成(Claude、Cursor 等)的 MCP 服务
  • 用于编写 LinkedIn 操作脚本的 CLI

前置条件

安装

npm install -g linkedctl

或者直接运行:

npx linkedctl --help

快速开始

  1. 在 linkedin.com/developers 创建 LinkedIn 应用
  2. 配置 OAuth 2.0 凭据
  3. 进行身份验证:
    linkedctl auth login --client-id YOUR_CLIENT_ID --client-secret YOUR_CLIENT_SECRET
    
  4. 开始使用:
    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帖子文本内容(必填)
visibilityPUBLIC 或 CONNECTIONS(默认值为 PUBLIC)
draft保存为草稿,而不是发布
image / image_file附加单张图片(URN 或本地文件路径)
video / video_file附加视频(URN 或本地文件路径)
document / document_file附加文档(URN 或本地文件路径)
images / image_files附加多张图片(至少 2 张)
article_url附加文章链接
poll投票问题文本
poll_options投票选项(设置 poll 时必填 2–4 项)
poll_durationONE_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-versionLinkedIn API 版本(例如 202601)
oauth.client-idOAuth 2.0 客户端 ID
oauth.client-secretOAuth 2.0 客户端密钥
oauth.access-tokenOAuth 2.0 访问令牌
oauth.refresh-tokenOAuth 2.0 刷新令牌
oauth.token-expires-at令牌过期时间戳(ISO 8601)

配置文件的权限设置为 0600(仅所有者可读写)。

文件位置和优先级

如果未指定配置档案,LinkedCtl 会按以下顺序查找配置文件:

  1. 当前工作目录中的 .linkedctl.yaml
  2. 主目录中的 ~/.linkedctl.yaml

使用找到的第一个文件。写入时(例如执行 auth login 后),如果 CWD 文件存在,LinkedCtl 会写入该文件;否则写入主目录文件。

配置档案

配置档案可用于管理多个 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 Developer App 进行 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_IDLinkedIn OAuth 2.0 客户端 ID
LINKEDCTL_CLIENT_SECRETLinkedIn OAuth 2.0 客户端密钥
LINKEDCTL_ACCESS_TOKEN直接访问令牌(绕过 OAuth 流程)
LINKEDCTL_API_VERSIONLinkedIn API 版本字符串(例如 202601)必需

环境变量的优先级高于配置文件中的值。

配置档案前缀环境变量

使用命名配置档案时,LinkedCtl 也会读取带有配置档案前缀的环境变量。配置档案名称会转换为大写,并将连字符替换为下划线:

配置档案变量
(默认)LINKEDCTL_ACCESS_TOKEN
workLINKEDCTL_WORK_ACCESS_TOKEN
my-brandLINKEDCTL_MY_BRAND_ACCESS_TOKEN

CLIENT_ID、CLIENT_SECRET 和 API_VERSION 也遵循相同规则。

优先级顺序

配置值按以下顺序解析(优先级从高到低):

  1. 环境变量(如果启用了配置配置文件,则带有配置配置文件前缀)
  2. 配置文件(特定配置配置文件,或当前工作目录/主目录回退)

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、位置参数或标准输入)
--visibility <visibility>PUBLIC 或 CONNECTIONSPUBLIC
--draft保存为草稿,而非发布
--image <urn>要附加的图片 URN
--image-file <path>要上传并附加的本地图片文件
--video <urn>要附加的视频 URN
--video-file <path>要上传并附加的本地视频文件
--document <urn>要附加的文档 URN
--document-file <path>要上传并附加的本地文档文件
--images <urns>多个图片 URN(以逗号分隔,至少 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_WEEKSTHREE_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 — Shell 补全
linkedctl completion bash
linkedctl completion zsh

安全性

  • Dependabot 通过自动创建拉取请求,确保依赖项保持最新
  • CodeQL 会在每次推送和拉取请求时运行分析,以自动检测漏洞
  • 路径遍历验证会检查个人资料名称,防止目录逃逸攻击
  • 所有 MCP 工具均采用统一的身份验证错误处理,提供一致的身份验证失败消息
  • 破坏性操作(删除帖子、删除评论、删除个人资料)需要交互式确认,除非传入 --force

免责声明

这是一个独立项目,与 LinkedIn Corporation 无关,也未获得其认可或与其存在关联。LinkedIn 是 LinkedIn Corporation 的商标。

许可证

AGPL-3.0-only

将 LinkedCtl 用作 CLI 工具或 MCP 服务:无需履行许可义务,可自由使用。

在项目中将 @linkedctl/core 用作库:你的组合成果必须采用 AGPL-3.0 或兼容许可证授权。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。