Install
openclaw skills install linkedin-posterUse when you need to post content to LinkedIn, including text posts, image posts, and
openclaw skills install linkedin-posterPost text and images to LinkedIn via the message tool using the linkedin channel. Supports text-only posts, image posts (local files or URLs), and #BuildInPublic updates.
The linkedin channel must be configured in channels.linkedin with:
accessToken: OAuth 2.0 token with w_member_social scopepersonUrn: Your LinkedIn person URN (e.g. urn:li:person:Abc123)Use the message tool to send a text post:
message send --channel linkedin --text "Your post content here"
The post goes to the authenticated user's LinkedIn feed as a public post.
Two-step process:
message send with the --media flag:message send --channel linkedin --text "Post caption" --media /path/to/image.png
Supported image sources:
/Users/david/image.pngfile:// URLs: file:///Users/david/image.pnghttps://example.com/image.pngThe extension handles a 3-step LinkedIn UGC API flow automatically:
uploadUrl + asset URNuploadUrlasset referenceYou don't need to manage this — just provide the image path.
🚀 [What you built today]
[2-3 sentences about what it does and why it matters]
Tech stack: [list]
[Screenshot or diagram]
#BuildInPublic #[topic] #[tech]
✅ [Milestone achieved]
[Brief context — what, why, how]
Key learnings:
→ [Learning 1]
→ [Learning 2]
→ [Learning 3]
Next up: [what's coming]
#[project] #[topic]
💡 TIL: [Thing you learned]
[Explanation in 2-3 paragraphs]
[Code snippet or diagram if relevant]
#TIL #[topic] #[tech]
| Error | Cause | Fix |
|---|---|---|
| 401 Unauthorized | Token expired | Re-authenticate, update channels.linkedin.accessToken |
| 403 Forbidden | Missing w_member_social scope | Re-create OAuth app with correct scopes |
| Image upload 400 | File too large (>10MB) | Compress image before uploading |
| Empty postUrn | API didn't return ID | Post likely succeeded — check LinkedIn feed |