LinkedIn Poster

v1.0.0

Use when you need to post content to LinkedIn, including text posts, image posts, and

0· 259· 1 versions· 0 current· 0 all-time· Updated 7h ago· MIT-0

Install

openclaw skills install linkedin-poster

LinkedIn Posting

Overview

Post 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.

Prerequisites

The linkedin channel must be configured in channels.linkedin with:

  • accessToken: OAuth 2.0 token with w_member_social scope
  • personUrn: Your LinkedIn person URN (e.g. urn:li:person:Abc123)

Posting Text

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.

Posting with Images

Two-step process:

  1. Create the image — generate or locate the image file (PNG/JPG/GIF/WebP)
  2. Post with image — use message send with the --media flag:
message send --channel linkedin --text "Post caption" --media /path/to/image.png

Supported image sources:

  • Local file paths: /Users/david/image.png
  • file:// URLs: file:///Users/david/image.png
  • Remote URLs: https://example.com/image.png

Image Upload Flow (internals)

The extension handles a 3-step LinkedIn UGC API flow automatically:

  1. Register upload → gets uploadUrl + asset URN
  2. PUT binary to uploadUrl
  3. Create UGC post with asset reference

You don't need to manage this — just provide the image path.

Best Practices

  • Always confirm post content with the owner before posting
  • Keep posts concise — LinkedIn favors 150-300 word posts
  • Add hashtags at the end, not inline (3-5 max)
  • For #BuildInPublic: include what you built, what you learned, a visual
  • Image sizing: 1200x627px for link previews, 1080x1080 for square posts
  • Never post without explicit owner approval

Post Templates

#BuildInPublic Update

🚀 [What you built today]

[2-3 sentences about what it does and why it matters]

Tech stack: [list]

[Screenshot or diagram]

#BuildInPublic #[topic] #[tech]

Project Milestone

✅ [Milestone achieved]

[Brief context — what, why, how]

Key learnings:
→ [Learning 1]
→ [Learning 2]
→ [Learning 3]

Next up: [what's coming]

#[project] #[topic]

Technical Deep-Dive

💡 TIL: [Thing you learned]

[Explanation in 2-3 paragraphs]

[Code snippet or diagram if relevant]

#TIL #[topic] #[tech]

Troubleshooting

ErrorCauseFix
401 UnauthorizedToken expiredRe-authenticate, update channels.linkedin.accessToken
403 ForbiddenMissing w_member_social scopeRe-create OAuth app with correct scopes
Image upload 400File too large (>10MB)Compress image before uploading
Empty postUrnAPI didn't return IDPost likely succeeded — check LinkedIn feed

Version tags

build-in-publicvk975hynd1vbwf84fg8rn18kjwn836gfqlatestvk975hynd1vbwf84fg8rn18kjwn836gfqlinkedinvk975hynd1vbwf84fg8rn18kjwn836gfqpostingvk975hynd1vbwf84fg8rn18kjwn836gfqsocialvk975hynd1vbwf84fg8rn18kjwn836gfq

Runtime requirements

💼 Clawdis
Configchannels.linkedin