关于 linkedin
通过 curl 和 jq 调用 LinkedIn API,向会员动态发布文本或链接帖子。内容涵盖会员身份、API 版本要求、发布确认及成功结果记录。
主要功能
- 01从 OpenID userinfo 获取会员 URN
- 02发布文本和内嵌链接帖子
- 03使用版本化 Posts API 并提供旧版回退
- 04将成功发布记录为交付物
适用场景
- 01向会员动态发布已确认的动态
- 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。