← ClaudeAtlas

linkedinlisted

Publish text / link posts to your LinkedIn personal feed via the LinkedIn Posts API. Use when the user mentions LinkedIn, sharing or posting an update to LinkedIn, or cross-posting an article / link to their LinkedIn feed.
AceDataCloud/Skills · ★ 8 · AI & Automation · score 71
Install: claude install-skill AceDataCloud/Skills
Call the **LinkedIn API** with `curl + jq`. The user's bearer token is in `$LINKEDIN_TOKEN`; every call needs `Authorization: Bearer $LINKEDIN_TOKEN`. LinkedIn posts must be authored by the member's URN. Get the member id from the OpenID userinfo endpoint, then build `urn:li:person:{sub}`. ```bash SUB=$(curl -sS -H "Authorization: Bearer $LINKEDIN_TOKEN" \ "https://api.linkedin.com/v2/userinfo" | jq -r .sub) AUTHOR="urn:li:person:$SUB" echo "$AUTHOR" ``` Errors are JSON with `message` / `serviceErrorCode` — show them verbatim. `401` → token expired (tokens last ~60 days), re-connect the LinkedIn connector. ## Publish a post (Posts API) **Confirm the text with the user first.** Use the versioned Posts API; set the `LinkedIn-Version` header to a recent `YYYYMM` (LinkedIn requires a valid recent version — if you get `426`/version errors, bump to the current month). ```bash 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-[