# How to connect LinkedIn to OpenClaw (no API keys)

> Connect LinkedIn to OpenClaw with ClawLink in one click — 10 tools your AI agent can call from chat via hosted OAuth. No API keys, no manual setup.

Web version: https://claw-link.dev/openclaw/linkedin

The usual route to LinkedIn access for OpenClaw is an MCP server you configure and keep running, plus your own OAuth app or API keys. ClawLink gives OpenClaw a more practical LinkedIn setup: install one ClawHub skill, connect LinkedIn in the browser, and OpenClaw can call real LinkedIn actions from any chat surface with no auth, token refresh, or tool wiring to build yourself.

**Start here:** install the ClawLink plugin (`openclaw plugins install clawhub:clawlink-plugin`), pair it in the browser, then connect the app in the ClawLink dashboard. The interactive install prompt is on the web version of this page: https://claw-link.dev/openclaw/linkedin

## Setup

It takes three steps to connect OpenClaw to LinkedIn.

1. **Install ClawLink** — add the plugin to OpenClaw once.
2. **Connect LinkedIn** — one-click OAuth in the ClawLink dashboard.
3. **Use it from chat** — ask OpenClaw in plain English.

**Alternative for any agent (no plugin needed):** if the OpenClaw plugin route isn't available or doesn't work, any AI agent with shell access can use the ClawLink CLI instead:

```bash
npx -y @useclawlink/cli login          # sign in via browser — no API key to paste
npx -y @useclawlink/cli connect linkedin  # connect LinkedIn (browser OAuth)
npx -y @useclawlink/cli actions linkedin  # list available actions
npx -y @useclawlink/cli run linkedin <action> --input '<json>'  # execute (add --confirm for writes)
```

### Install by command

The setup prompt above does all of this in one paste. By hand, it is one install command plus a browser approval:

```bash
openclaw plugins install clawhub:clawlink-plugin
```

Then ask OpenClaw to set up ClawLink. It starts browser pairing and prints an approval link — open it, approve the device, return to the chat, and say `done`. Finally, connect LinkedIn in the [ClawLink dashboard](https://claw-link.dev/dashboard) — a one-click OAuth approval, no API keys.

Verify the connection by asking OpenClaw:

> Draft a LinkedIn post about \<topic> in my voice, around 120 words, no hashtags. Show it to me first. Once I say go, publish it with linkedin_create_linked_in_post.

### Using a different agent?

The OpenClaw plugin is one client of ClawLink's MCP server. Claude Code, Cursor, Codex, or any agent that can run a shell command pairs with the same ClawLink account through the CLI:

```bash
npx -y @useclawlink/cli login
```

`login` opens the same browser approval and stores a credential locally. Once LinkedIn is connected in the dashboard, that agent calls the same 10 LinkedIn tools over MCP. Full setup for MCP clients and shell agents: [connect apps to any AI agent](https://claw-link.dev/learn/connect-apps-to-any-ai-agent).

## LinkedIn MCP for OpenClaw

Looking for a LinkedIn MCP server for OpenClaw? ClawLink connects LinkedIn to OpenClaw and exposes 10 LinkedIn tools your agent can call over [MCP](https://claw-link.dev/learn/what-is-an-mcp-server), with [hosted auth](https://claw-link.dev/learn/oauth-for-ai-agents) and nothing to run or maintain yourself. Using Hermes instead? The [Hermes LinkedIn integration](https://claw-link.dev/hermes/linkedin) works the same way.

Getting LinkedIn into an agent normally means becoming a LinkedIn developer: create an app, associate it with a company page, request access to the products that carry the posting permissions, wait for approval, then implement the OAuth exchange yourself. ClawLink connects through LinkedIn's OAuth screen with an app that is already approved, so you sign in, approve the permissions LinkedIn names, and OpenClaw can call the 10 LinkedIn tools below. Nothing is scraped and no password is handled — these are LinkedIn's official API endpoints, which is the difference between an integration that keeps working and a browser automation that breaks when the page markup changes.

## What the OpenClaw LinkedIn integration can do

10 LinkedIn tools are ready for OpenClaw once the account is connected. The 8 below are the ones people reach for most; your agent can call all 10.

### 8 of 10 LinkedIn tools for OpenClaw

| Tool | What it does |
|---|---|
| **Create comment on post** `linkedin_create_comment_on_post` | Comment on a LinkedIn post |
| **Create linked in post** `linkedin_create_linked_in_post` | Publish a post on LinkedIn |
| **Get ad targeting facets** `linkedin_get_ad_targeting_facets` | Get LinkedIn ad targeting facets |
| **Get images** `linkedin_get_images` | Get images from a LinkedIn post |
| **Get my info** `linkedin_get_my_info` | Get the authenticated LinkedIn member profile |
| **Search ad targeting entities** `linkedin_search_ad_targeting_entities` | Search LinkedIn ad targeting entities |
| **Get image** `linkedin_get_image` | Retrieve details of a LinkedIn image using its URN |
| **Create article or URL share** `linkedin_create_article_or_url_share` | Create an article or URL share on LinkedIn using the UGC Posts API |

## Example prompts

**Draft a post, publish after approval**

> Draft a LinkedIn post about \<topic> in my voice, around 120 words, no hashtags. Show it to me first. Once I say go, publish it with linkedin_create_linked_in_post.

**Share an article with commentary**

> Use linkedin_create_article_or_url_share to share \<url> with a two-sentence take on why it matters to \<audience>. Show me the commentary before you post it.

**Comment on a specific post**

> Use linkedin_create_comment_on_post to reply to \<post url> with a short, substantive comment building on their point about \<topic>. Draft it for approval first.

**Check which account is connected**

> Call linkedin_get_my_info and tell me which LinkedIn account this connection is acting as, so I can confirm it is the right one before we publish anything.

## What the LinkedIn tools cover

A deliberately small toolset, because LinkedIn's API is small. Knowing the edges saves a lot of failed prompts.

- **Publishing is `linkedin_create_linked_in_post`; link shares are `linkedin_create_article_or_url_share`.** They are separate calls with different payloads, so asking for "a post with a link" may resolve to either — name the one you want if the formatting matters.
- **`linkedin_get_my_info` is the identity check.** Run it first when anything looks wrong; most confusion on this provider is about which account or which page is being acted on.
- **Images are a two-step flow.** `linkedin_get_images` and `linkedin_get_image` work with post media, which means an image post is not a single call and an agent that tries to attach a local file in one shot will fail.
- **Organization posting depends on your page role, not on the tool.** No tool can grant it. If the connected account is not an admin of that company page, the call fails regardless of how the prompt is worded.
- **The two ad-targeting tools are a different job.** `linkedin_get_ad_targeting_facets` and `linkedin_search_ad_targeting_entities` support campaign work and have nothing to do with publishing, so they will not help with a posting failure.

## ClawLink vs. building it yourself

The alternative to ClawLink is usually manual OAuth app setup plus your own token handling, permission troubleshooting, and tool plumbing for OpenClaw. That is fine if you want to build and maintain the integration yourself. Most teams just want LinkedIn working from chat.

| | Manual | ClawLink |
|---|---|---|
| **Connection flow** | Register a LinkedIn app, configure redirect URLs, manage consent details, and reconnect users when auth settings drift. | Users connect LinkedIn through the hosted browser flow and ClawLink keeps the token lifecycle out of your app code. |
| **Ongoing maintenance** | You own refresh logic, permission debugging, environment config, and every provider-specific edge case for LinkedIn. | ClawLink handles the repetitive integration plumbing so your team can focus on the workflow instead of the infrastructure. |
| **Agent usability** | You still need to expose the right LinkedIn actions to the runtime in a format your agent can reliably use. | 10 tools for LinkedIn are already exposed through ClawLink, so the agent can read and act from chat immediately. |

## ClawLink vs. Composio

Composio also exposes LinkedIn to AI agents. It is developer infrastructure: Python and TypeScript SDKs, an MCP server, and a catalog past 1,000 apps, aimed at teams shipping agent products. ClawLink is built for OpenClaw users instead. You install the plugin once, connect LinkedIn in the browser, and the 10 tools above work from chat. There is no SDK, no config file, and no API key handling. Choosing between them? Read the full [Composio alternatives](https://claw-link.dev/hub/composio-alternatives) comparison.

### OpenClaw installed the LinkedIn skill but can't call the tools
The ClawHub skill teaches OpenClaw about LinkedIn, but the calls run through the ClawLink plugin and your connected account. Make sure LinkedIn is connected in the dashboard, then start a fresh chat so OpenClaw reloads the tool catalog. If OpenClaw runs as a persistent gateway, restart it so the new tools register.

### Connection succeeds but no tools appear
Reconnect LinkedIn from the dashboard, then start a fresh chat if the runtime still has the old tool catalog loaded.

### "Tool schema not loaded yet" error when calling LinkedIn tools
LinkedIn tool schemas load on demand the first time a tool runs and are cached after that, so this error usually clears on its own: wait a few seconds and retry the same request. If every LinkedIn call keeps failing with it in a fresh chat, reconnect from the dashboard, and contact support if it still persists — that pattern points to a configuration problem on our side, not something you can fix by reconnecting again.

### LinkedIn returns 403 or "permission denied" on one action while others work
Two usual causes. The connected account may not have access to the specific workspace, inbox, store, or project in the request — check that first. If access looks right, the agent may have sent a placeholder value (like "YOUR_ID" or an example id from documentation) instead of a real one: ask it to run a list or search tool first, then retry the action with a real id from those results. Most failures at this stage are one of these two, not ClawLink bugs.

### LinkedIn returns 403 or a permissions error when the agent tries to post
LinkedIn separates permissions by what you are posting as, so the first question is whether the failing call is a member post or an organization one. A member post needs the member posting permission on the grant; an organization post needs the organization posting permission and an admin role for the connected account on that specific page. A partial approval on the consent screen is the other common cause — LinkedIn lists what it is granting, and a connection that was approved without the write permission will read fine and fail on every publish. Reconnect from the dashboard and accept the full set. If personal posts succeed and only the company page fails, stop looking at the connection and check your role on the page in LinkedIn itself.

Ask the agent to diagnose it:

```text
Call linkedin_get_my_info and tell me exactly which LinkedIn account is connected. Then try a draft member post and tell me whether it succeeds, but do not publish anything without asking me first.
```

### LinkedIn posts stopped working after previously being fine
LinkedIn grants are time-limited and are also invalidated when you change your password or revoke third-party access, so a connection that worked last month and fails today has usually simply expired rather than broken. Reconnecting from the ClawLink dashboard reissues it. Before assuming that, check that the failure is on every call rather than one: if reads still work and only publishing fails, the grant is alive and you are looking at a permissions problem instead.

### The agent posted to my profile when I wanted the company page
Say which one in the prompt, because the default is you. The tools take the author explicitly, so an instruction that just says "post this on LinkedIn" resolves to a member post under your own name. Naming the company page in the request, and confirming the agent read your admin role back before it published, is the reliable way to control it. This is worth checking on the first post rather than the fifth, since a member post cannot be converted to an organization post after the fact — it has to be deleted and republished.

### OAuth finished in the browser but the account is still missing
Try reconnecting LinkedIn and complete the consent flow in the same browser session. Partial OAuth approvals or switching accounts mid-flow can leave the connection incomplete.

### Is there a OpenClaw LinkedIn integration?
Yes. ClawLink is the fastest way to connect OpenClaw to LinkedIn: link your LinkedIn account once in the browser and OpenClaw can call the LinkedIn API through 10 ready-made tools — no custom code or token handling.

### How do I add LinkedIn to OpenClaw with ClawLink?
Paste the setup prompt from this page into OpenClaw. It installs the ClawLink LinkedIn skill from ClawHub, then you click Connect in the dashboard to authorize LinkedIn. OpenClaw calls the tools from the next message — no config files or API keys to manage.

### How long does it take to connect LinkedIn to OpenClaw?
About two minutes. Sign in, click Connect next to LinkedIn in the dashboard, authenticate, and OpenClaw can use it from the next chat message.

### Why use ClawLink instead of wiring LinkedIn up myself?
The alternative to ClawLink is usually manual OAuth app setup plus your own token handling, permission troubleshooting, and tool plumbing for OpenClaw. That is fine if you want to build and maintain the integration yourself. Most teams just want LinkedIn working from chat.

### Do I need my own LinkedIn developer app?
No. That requirement belongs to the do-it-yourself route, where you register an app, request the products that grant posting permissions, and wait to be approved before you can post anything at all. ClawLink's connection runs through an already-approved app, so the only screen you see is LinkedIn's consent screen listing what is being granted. You keep your own account's reach: the agent can do what you can do, and LinkedIn's own rules about what an account may post still apply on every call.

### Can the agent post to a company page as well as my profile?
Posting as yourself and posting as an organization are different permissions on LinkedIn, and the second one also depends on your role. Member posts go out under your own name. To publish on a company page, the connected account must hold an admin role on that page, and the connection must carry the organization posting permission — if either is missing the call fails even though personal posts work fine. The quickest way to tell them apart is to have the agent post to your profile first; if that succeeds and the page post does not, the problem is the page role or the organization permission, not the connection.

### Is it safe to connect LinkedIn to an AI agent?
The connection uses LinkedIn's OAuth flow against LinkedIn's official API, so you approve a named set of permissions on LinkedIn's own screen, no password is ever entered anywhere but LinkedIn, and you can revoke access from the ClawLink dashboard at any time. That is a meaningfully different risk profile from the browser-automation approach many guides recommend, which drives a logged-in session, is against LinkedIn's terms, and can get an account restricted. The judgement call left to you is publishing: posts and comments are public and immediate, so ask the agent to draft and wait for approval rather than letting it post directly.

### Can the agent read my feed or send connection requests?
No. LinkedIn's API is deliberately narrow, and this toolset reflects that: it can publish posts, share an article or URL, comment on a post, read your own profile information, and work with images for post media. There is no feed reading, no messaging, no connection management, and no profile scraping of other people. If a guide promises an agent that browses LinkedIn and messages prospects, it is describing browser automation rather than the API, with the account risk that carries.

### OpenClaw installed the LinkedIn skill but can't call the tools
The ClawHub skill teaches OpenClaw about LinkedIn, but the calls run through the ClawLink plugin and your connected account. Make sure LinkedIn is connected in the dashboard, then start a fresh chat so OpenClaw reloads the tool catalog. If OpenClaw runs as a persistent gateway, restart it so the new tools register.

## Related

- [Stack Exchange](https://claw-link.dev/openclaw/stack-exchange) — Search and browse questions, answers, and developer knowledge
- [Connect YouTube](https://claw-link.dev/openclaw/youtube) — Upload videos and manage channels
- [Instagram](https://claw-link.dev/openclaw/instagram) — Publish posts and manage media
