mcpField
L
linkedin

linkedin

github.com/acedatacloud营销与增长17206 次安装今天更新
代码仓库

关于 linkedin

通过 curl 和 jq 调用 LinkedIn API,向会员动态发布文本或链接帖子。内容涵盖会员身份、API 版本要求、发布确认及成功结果记录。

主要功能

  1. 01从 OpenID userinfo 获取会员 URN
  2. 02发布文本和内嵌链接帖子
  3. 03使用版本化 Posts API 并提供旧版回退
  4. 04将成功发布记录为交付物

适用场景

  1. 01向会员动态发布已确认的动态
  2. 02在 LinkedIn 帖子中分享文章链接

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/acedatacloud/skills --skill linkedin

安装后在 Claude Code 中输入/linkedin确认已加载。

详细介绍

使用 curl + jq 调用 LinkedIn API。用户的 bearer token 位于 $LINKEDIN_TOKEN;每次调用都需要 Authorization: Bearer $LINKEDIN_TOKEN。

LinkedIn 帖子必须以成员的 URN 为作者。通过 OpenID userinfo 端点获取成员 id,然后构建 urn:li:person:{sub}。

SUB=$(curl -sS -H "Authorization: Bearer $LINKEDIN_TOKEN" \
  "https://api.linkedin.com/v2/userinfo" | jq -r .sub)
AUTHOR="urn:li:person:$SUB"
echo "$AUTHOR"

错误以 JSON 格式返回,包含 message / serviceErrorCode——请原样显示。 401 → token 已过期(token 有效期约为 60 天),请重新连接 LinkedIn 连接器。

发布帖子(Posts API)

请先与用户确认文本。 使用带版本号的 Posts API;将 LinkedIn-Version 标头设为近期的 YYYYMM(LinkedIn 要求使用有效的近期版本——如果遇到 426/版本错误,请更新为当前月份)。

jq -n --arg a "$AUTHOR" --arg t "My update text. Check out https://studio.acedata.cloud" \
  '{author:$a, commentary:$t, visibility:"PUBLIC",
    distribution:{feedDistribution:"MAIN_FEED", targetEntities:[], thirdPartyDistributionChannels:[]},
    lifecycleState:"PUBLISHED", isReshareDisabledByAuthor:false}' \
| curl -sS -X POST "https://api.linkedin.com/rest/posts" \
    -H "Authorization: Bearer $LINKEDIN_TOKEN" \
    -H "Content-Type: application/json" \
    -H "LinkedIn-Version: 202401" \
    -H "X-Restli-Protocol-Version: 2.0.0" \
    -d @- -D - -o /dev/null | tr -d '\r' | awk '/^[Xx]-[Rr]estli-[Ii]d:|^[Ll]ocation:/{print}'

创建成功后会返回 201,响应标头 x-restli-id(或 Location)中包含帖子 URN——请报告该 URN / 生成的帖子 URL。

链接帖子:将 URL 放在 commentary 正文中(LinkedIn 会自动展开链接)。 富媒体文章附件需要使用 assets/images API——不在简单文本/链接分享的范围内;请将链接直接放在正文中。

备用方案:旧版 ugcPosts

如果应用无法使用带版本号的端点,也可以通过 w_member_social 使用较旧的 POST https://api.linkedin.com/v2/ugcPosts,并传入 specificContent."com.linkedin.ugc.ShareContent" 正文。优先使用上文的 /rest/posts。

注意事项

  • 作者 URN 必须与 token 对应的成员一致(urn:li:person:{sub})——不能以他人身份发帖。
  • w_member_social 仅允许发布到成员自己的动态;公司 Page 帖子需要 w_organization_social 和管理员角色(此连接器不支持)。
  • /rest/* 必须设置 LinkedIn-Version 标头;过期值会导致版本错误——请更新为当前的 YYYYMM。

记录输出

成功发布并获取实际结果 URL 后,请调用内置的 publish_artifact 工具一次,让用户可以在 My Outputs 中跟踪此交付内容:

publish_artifact(kind="article", channel="linkedin", title="<title>", url="<the REAL returned URL>", status="delivered")

请使用实际返回的 URL,切勿编造。每个已发布项目只调用一次,并且仅在确认交付后调用;如果发布失败,请跳过调用(或使用 status="failed")。 参见 _shared/artifacts.md。

评论

支持 Markdown