1:1 with a GTM engineerBuild any workflow in this course with an engineer · 8 sessions left · closes in Book your session

The Claude to LinkedIn Connector: 4 Minute Setup, One Agent, 30 Day Plan

A working connector between Claude and LinkedIn, plus the agent that runs on it.

Try Prosp Free45 minutes, on your own data · 8 sessions left
5/5 rated on Capterra·Used by 800+ agencies and sales teams
Playbook4 sections

A working connector between Claude and LinkedIn, plus the agent that runs on it.

No official one exists, so this is the two halves wired together: MCP servers so Claude can read profiles, searches and post engagers, and a dedicated sender so messages actually reach people without putting the account at risk.

Inside: the public repo with seven skills and the MCP config pre-filled, a two-minute test that fails loudly if either half is wrong, and a 30-day plan built from the send ceiling rather than a promise.

The install is three commands. The context file takes ten minutes and does more than any prompt.

AI Driven, Personalized Outreach on LinkedIn: Prosp 💜

Section 1

The Repo

Everything in this guide is in one public repo, MIT licensed.

github.com/JackJProsp/claude-linkedin-connector

Install

git clone https://github.com/JackJProsp/claude-linkedin-connector
cd claude-linkedin-connector
./install.sh

For every project rather than just this one:

./install.sh --global

What is inside

skills/
├── list-builder/          where the list comes from
├── signal-finder/         the dated reason to contact them now
├── fit-filter/            keep, drop, unsure, then grade A to F
├── opener-writer/         the first message
├── sequence-builder/      four touches, node by node
├── merge-prompt-writer/   per-lead personalisation at send time
└── reply-router/          seven categories, escalates when unsure

templates/outreach-context.md   the file every skill reads
.mcp.json                       LinkupAPI and Firecrawl, preconfigured
install.sh                      copies it all into place

Fork it

The skills ship written for a generic B2B offer. Two things to replace before running them for real:

1. The objections. A forked skill full of generic objections is worse than no skill, because it produces confident answers to objections nobody raised.

2. The proof rules. Every skill pulls proof from the context file. Make sure yours has a permission column, with YES, ANONYMISED and NO as the only values.

MIT licensed. Change what you like and ship your own version.

Section 2

The Setup: Clone It, Connect It, Test It

Two commands. Everything else is already written.

The connector is a public repo: seven Claude skills, an MCP config, and the context file they all read.

Install it

git clone https://github.com/JackJProsp/claude-linkedin-connector
cd claude-linkedin-connector
./install.sh

That is the whole install. It drops seven skills into .claude/skills/, creates the context file, and makes the output folder.

For every project rather than just this one:

./install.sh --global

MIT licensed. Fork it, change the skills, ship your own version.

Why the connector is two halves

LinkedIn publishes no first-party connector. Nothing in Claude reaches LinkedIn on its own, and no amount of prompting changes that.

So the repo wires together two things:

The read half. MCP servers that let Claude pull profile data, search results and post engagers. This is what makes the agent research rather than guess. The repo ships .mcp.json with LinkupAPI and Firecrawl already configured.

The send half. A dedicated sender that actually delivers messages, paced under the platform's thresholds, from infrastructure built for it.

The reason the second half is not optional: a model driving a browser session on your account produces activity from an unusual environment, at machine pace, from an IP that does not match your history. That is the fastest route to a restriction, and the account is the asset.

Connect the send half

Prosp is the half that reaches people. Free trial, no card, about a minute to connect.

Three routes in, pick one:

  1. Credentials plus the free dedicated residential proxy. Simplest, and the proxy is what keeps the activity looking like it comes from you.
  2. Chrome extension session transfer.
  3. Manual session cookie.

Once connected, everything runs on Prosp's servers rather than your machine. Close the laptop and the sequence keeps going.

Two things to do at the same time:

  • Turn on 2FA before connecting anything.
  • If you connect via the extension, stop using that profile manually in the same browser. Mixed human and automated signals from one environment is the most common flag.

One Prosp account maps to one LinkedIn profile. Running several means creating each in its own browser session, because cookies conflict, then inviting them all into one workspace.

Fill in the one file

install.sh creates .agents/outreach-context.md for you. Every skill reads it before doing anything.

Ten minutes here is worth more than any prompt.

## What I sell
One line, in the words a customer would use:
What a meeting is actually for:
Price band:

## Who I sell to
Exact job title:
Company type and size band:
What they are trying to do:
What they have already tried that failed:
Who this is NOT for:

## Proof, with permission
Numbers I can stand behind publicly:
Named clients I may reference:

## Voice
Three adjectives:
Two phrases I would never say:

## Objections I hear weekly
The five to ten real ones, with my best current response:

## Send budget
Connected accounts:
Daily connection requests available, ACCOUNT-WIDE:
Other campaigns already running on these accounts:

## Banned
<never_use_these>
Claims I cannot evidence:
Numbers nobody approved:
</never_use_these>

The last line of the send budget section is the one people leave blank. Limits are account-wide, so a skill that does not know what else is running will propose a volume that restricts the account.

The objections section pays back fastest. Every team hears the same five to ten weekly, and encoding the best answer once means all seven skills answer consistently rather than improvising.

The test that confirms it works

Two minutes, and it fails loudly if either half is wrong.

Test the connector end to end.

1. Using the LinkupAPI MCP, pull the profile at [YOUR LINKEDIN URL].
   Return the headline, the current company, and the date of the
   most recent post.

2. Pull the commenters on this post: [ANY POST URL]. Return the
   count, and the first five names with their headlines.

3. Tell me which of these you could NOT retrieve, and why.

Do not guess or fill gaps. If a field is unavailable, say so.

If step 2 returns commenters, the read half is live.

For the send half, import that same post URL into Prosp and check the lead count matches what Claude reported. If the two numbers agree, both halves are talking to the same LinkedIn.

What the connector can and cannot do

Worth being straight about, because the limits shape the whole plan.

It can: read profiles and posts, pull commenters and likers from any post URL, research accounts, write copy per lead against live profile data, run multi-touch sequences unattended, classify replies, and push contacts to your CRM.

It cannot: send from Claude directly, exceed the platform's daily limits, or book a meeting without a human replying. The agent drafts and routes. A person still says yes.

The real ceiling: roughly 20 connection requests a day and 100 messages a week, account-wide rather than per campaign. Every plan in this guide is built inside that number rather than pretending it away.

Section 3

The Agent: 7 Skills That Run It

Seven skills. Together they are the agent: it finds who to contact, finds the reason, writes the message, runs the sequence, and routes every reply.

It runs 24/7 because the send half runs on its own infrastructure. Your machine being off changes nothing.

mkdir -p .claude/skills/{list-builder,signal-finder,fit-filter,opener-writer,sequence-builder,merge-prompt-writer,reply-router}

01. list-builder

---
name: list-builder
description: Build a raw prospect list from any LinkedIn source. Use
  after outreach-context.md exists.
---
Read .agents/outreach-context.md.

SOURCES, highest intent first:
1. Commenters and likers on a relevant post, yours or a competitor's
2. Attendees of a relevant LinkedIn event
3. Members of a relevant group
4. Search matching the ICP
5. Job boards, for companies hiring the role your offer supports

SOURCE 1 first, always. Someone who commented on a post about your
exact topic has done something. Someone who matches a search filter
has done nothing.

Capture: name, headline, company, size, location, LinkedIn URL,
source.

Write to output/prospects.csv with a linkedin_url column. That
header name is required by the import later, so do not rename it.

Enrich nothing. Look up no emails. Most of this list gets discarded
in two steps and enrichment is priced per lookup.

02. signal-finder

The skill that separates this from every automated message they already ignore.

---
name: signal-finder
description: Find a dated, verifiable reason to contact each lead now
  rather than later.
---
ONE signal per lead, ranked by how close it sits to a budget
decision.

TIER 1, budget is already moving
- Hiring for the role your offer replaces or supports
- Raised in the last 90 days
- New leader in post, last 60 days
- Publicly named the exact problem, last 30 days

TIER 2, the problem is visible
- Their site or content shows the specific gap
- Commented on a competitor's post
- Expanding into a new market

TIER 3, fit only, no observable trigger

Every signal must be VERIFIABLE and DATED. Record the date and the
URL, because it appears in the first message and they will check it.

No signal means write NONE. Never stretch an attribute into a
trigger. "Works at a SaaS company" is fit, not intent, and using it
as intent is the single clearest tell that a message was generated.

Add signal, tier, date and source_url columns to the CSV.

03. fit-filter

Run on the cheapest model. It touches every row, so it is the highest-volume call in the agent and has the least thinking in it.

---
name: fit-filter
description: Filter the raw list before any enrichment or writing.
---
Per row, return exactly one of KEEP, DROP or UNSURE, with a reason
of 12 words maximum.

KEEP    Matches the job title band and the company size band
DROP    Fails either, or is a competitor, or is too small to afford
        the price band in outreach-context
UNSURE  Headline is ambiguous. Do not guess.

KEEP and UNSURE to output/filtered.csv.
DROP to output/dropped.csv, so the filter can be audited when you
later wonder why a company was excluded.

Report the drop rate. Below 40% usually means the search was too
narrow rather than the list being unusually good.

THEN GRADE what survives, 1 to 10 across: ICP fit, title accuracy,
affordability, data completeness, deduplication, recency,
reachability, signal strength. Average into a letter.

Below B, stop and rebuild. Name the two weakest dimensions.

Signal strength predicts reply rate better than any other
dimension. A B-grade list where most rows carry a tier 1 signal
beats an A-grade list with none.

04. opener-writer

---
name: opener-writer
description: Write the first message from a signal.
---
STRUCTURE
Line 1  the signal, dated and specific
Line 2  the inference you drew from it
Line 3  the question

RULES
- Under 300 characters. Longer reads as a template.
- Line one references the signal SPECIFICALLY, not its category.
  "Saw you're hiring a RevOps lead" beats "saw you're growing".
- One ask, answerable in under ten words.
- Never mention the product in message one.
- No compliments. No "hope this finds you well".
- No em dashes.

ONE VERSION PER TIER
Tier 1  lead with the signal. It is recent and they know it.
Tier 2  lead with the observable problem. There is no event.
Tier 3  lead with the segment-level pattern. Claim no
        personalisation you cannot back.

BANNED, these are burnt:
"I came across your profile"
"I help [vertical] with [service]"
"Are you open to a quick chat"
"Quick question for you"

05. sequence-builder

---
name: sequence-builder
description: Turn the copy into a node-by-node spec ready to build.
---
Output a node list, not prose. Per node: action, delay, exact copy,
exit condition.

THE FIVE NODES
1  Import from source
2  Condition: lead is 1st level
3  YES branch: message, using the merge prompt
4  NO branch: connection request, then message on acceptance
5  Wait 3 days, follow-up on a different angle, then add tag

RULES
- Four touches maximum. After that the answer is no.
- Reply stops the sequence for that lead, always.
- A connection request auto-detects acceptance over two weeks, so
  NO WAIT NODE after one. This is the most common unnecessary node
  people add.
- Every touch a different angle. Never "just following up".
- Any voice note pairs with a written message, never sent alone.

STATE the daily send split against the ceiling in
outreach-context.md.

FAIL CLOSED if the requested volume exceeds the ceiling. Give the
split rather than writing a sequence that will restrict the account.

This spec maps node for node onto the Prosp builder. The actions available are connection request, message, voice note, InMail, message to open profile, comment on last post, reply comment, like last post, visit profile, wait X days and add tag. The conditions are has LinkedIn URL, lead is 1st level, opened message, lead is open profile, and check data in column.

06. merge-prompt-writer

The handoff. This is how one sequence personalises across a whole list without you writing a hundred drafts.

---
name: merge-prompt-writer
description: Convert message copy into prompts that personalise per
  lead at send time.
---
SYNTAX, keep the two distinct:
  {{double curly}}   the platform's own profile data
  [square brackets]  instructions to the AI

Variables: first name, last name, headline, biography, job title,
company, last post. Plus any custom variable from the CSV, so the
signal column is usable here.

RULES
- ONLY the opening line varies. Keep the ask identical across leads
  so results are comparable and failure is diagnosable.
- State length explicitly, in characters.
- Say what to do when a variable is empty. Never allow "Hi ,".
- Ban the burnt openers inside the prompt itself.
- One instruction per bracket. Compound instructions get
  half-followed.

SHAPE
  Hi {{first name}},
  [One sentence referencing {{signal}}. Specific about the actual
  detail, not the category. Under 90 characters. If {{signal}} is
  empty use {{headline}}. Never open with "I came across".]
  [Then this line unchanged:] Worth a quick look at how [X] handle
  this?

Always preview against real contacts before sending. That catches
the prompt that reads fine on lead one and produces something odd
on lead five.

07. reply-router

The skill that makes 24/7 mean something. Replies arrive at any hour; this sorts them before you read one.

---
name: reply-router
description: Classify every inbound reply and route it. Runs on the
  cheapest model, continuously.
---
Exactly one category:

INTERESTED       Wants more, asks about the offer
TIMING           Interested, not now. Capture the date named.
OBJECTION        Price, fit, incumbent, capacity
WRONG_PERSON     Not their remit. Ask who owns it.
NOT_INTERESTED   Clear no. Thank them, stop, never pitch again.
AUTO_REPLY       Out of office. Reschedule to their return date.
ESCALATE         Anything below 8 confidence

Per reply: category, confidence 1 to 10, the sentence that decided
it, and the recommended next action.

Below 8 confidence, always ESCALATE. Do not guess at tone. Sarcasm,
brevity and politeness all read the same in text.

DRAFT the reply for INTERESTED and OBJECTION, but never auto-send.
A human presses send on anything that goes out under their name.

FOR INTERESTED, decide IF before HOW:
Ask for the meeting only when they have named a problem, asked
about price or timeline, or two substantive messages have gone each
way. On a one-line reply, ask one more question instead.

THE ASK: name the length and the agenda, offer the link and two
concrete times. "15 minutes, three questions, no deck." Never "let
me know what works."

After sending, tag the lead so the sequence stops. A follow-up
landing after someone has booked is the most avoidable bad
impression in the system.

The replies land in one place. Prosp has a unified inbox spanning every connected account with filters for campaign, replied and unread, so this runs over one queue rather than several logins. Add tag nodes write the classification back against the lead.

Running the whole agent in one go

Take ownership of this from start to finish.

Read .agents/outreach-context.md.

GOAL: a launch-ready campaign, with every output in output/.

Run in order: list-builder, signal-finder, fit-filter,
opener-writer, sequence-builder, merge-prompt-writer.

Stop and wait for me at two points only:
- After fit-filter, so I can see the grade before you write copy
- After merge-prompt-writer, before anything is built in the sender

Between those, keep working. Make intermediate decisions and note
them rather than checking in.

Hard rules:
- Never invent a number, client name or result. Only what is in
  outreach-context.md.
- Grade the list before writing. Below B, rebuild rather than
  proceed.
- Never propose a send volume above my daily ceiling.

End with the two things I need to review and the daily send split.

Two stops, not six. The list grade and the final copy are the only two decisions worth interrupting for. Everything between them is reversible by editing a file.

Section 4

The 30 Day Plan: The Arithmetic and the Weeks

The arithmetic first, then the week-by-week plan.

Every number below is a rate you can check against your own account after week one. None of it is a promise.

The arithmetic behind 19

Start from the ceiling and work forwards. This is the only honest way to plan outbound, because the ceiling is the one number you cannot change.

THE CEILING
20 connection requests per day
22 working days in a month
= 440 requests available

THE FUNNEL, at rates a warm, signal-led list produces
440 requests
  x 30% acceptance          = 132 connections
  x 25% reply to first DM   = 33 replies
  x 60% of replies positive = 19 conversations
  x conversion to booked    = the number you control

= 19 conversations worth having, from one account, in 30 days.

Where each rate comes from. 30% acceptance is the healthy benchmark; below 15% means the connection note is the problem. 25% reply is what a warm list with a dated signal produces, against roughly 8% for a cold list with a generic opener. 60% positive is what reply classification typically sorts out once the not-interested and wrong-person replies are removed.

What moves it. Nothing in this chain is fixed. A better list moves acceptance. A better opener moves reply rate. A voice note moves reply rate more than anything else available, averaging around 47% against roughly 8% for written messages across 1000+ campaigns.

What does not move it. Sending more. You cannot, and trying is how accounts get restricted.

Run the maths on your own numbers before week one. If your acceptance is 18% rather than 30%, the honest output is 11, not 19, and knowing that on day one is worth more than the larger number.

Week 1: build and grade

No sending this week. That is deliberate.

DAY 1  The four-minute connector setup, both halves.
       Write outreach-context.md. Take the full hour on it.

DAY 2  Run list-builder. Source 1 only: commenters and likers on
       posts about the problem you solve.
       Target 400 to 600 raw rows.

DAY 3  Run fit-filter on the cheapest model.
       Expect a 40 to 60% drop rate. Below 40% means your search
       was too narrow, not that the list is good.
       Grade what survives. Below B, rebuild rather than proceed.

DAY 4  Run signal-finder across the graded list.
       Count the tier 1s. That number is your first two weeks.

DAY 5  Run opener-writer, sequence-builder and
       merge-prompt-writer.
       Build the five nodes. Preview the merge prompts against ten
       real contacts before anything sends.

The week 1 gate: if fewer than 80 rows carry a tier 1 or tier 2 signal, do not launch. Go back to day 2 with a different source. A list with no signals produces a generic opener, and a generic opener at 20 a day wastes a month.

Week 2: launch small

DAY 6   Launch at 10 requests a day, not 20.
        Tier 1 signals only, highest scores first.

DAY 7   Check acceptance. Too early to judge, but check nothing
        is broken: are requests actually going out, are notes
        attached, is the 1st-level branch routing correctly.

DAY 8   First replies arrive. Run reply-router over them.
        Draft responses, send them yourself.

DAY 9   Raise to 15 a day if acceptance is above 25%.
        Hold at 10 if it is below.

DAY 10  First diagnostic. Acceptance only, nothing else yet.
        Below 15%: the note or the list. Fix before adding volume.
        Above 30%: go to 20 a day from day 11.

Why start at 10. A new sending pattern from an account that has not done this before is worth easing into. It also means a broken sequence costs you fifty sends rather than a hundred and forty.

Why tier 1 first. The order decides the month. Working a 440-row list in the wrong order means the people most likely to reply get contacted in week four.

Week 3: full rate and the first fix

DAY 11 to 15
  20 requests a day, tier 1 then tier 2
  reply-router daily over the inbox
  Book what is bookable. Draft, review, send.

DAY 15  The real diagnostic. Work the chain IN ORDER and stop at
        the first failure:

  1 ACCEPTANCE BELOW 15%
    The connection note, or the list is off-ICP. Not the sequence.
  2 ACCEPTANCE FINE, REPLIES BELOW 10%
    The list is fine. The first message is the problem.
    Check: is the signal specific and dated, one ask, under 300
    characters.
  3 REPLIES FINE, MEETINGS LOW
    The ask is mistimed. Check whether it landed on a one-line
    reply.
  4 ALL FINE, VOLUME LOW
    Not quality. Check the cap split across campaigns.

  ONE change. Not three. Change three and a lift tells you nothing
  about which one worked.

Add the voice note this week, on the second touch only. It is the single largest lever available and it costs one recording. Under 20 seconds, referencing the one thing everyone on the segment shares, always paired with a written message.

Week 4: compound and report

DAY 16 to 22
  20 a day, working down the score order
  Top up the list on day 18 with a fresh post import
  reply-router daily
  One change on day 22, from the diagnostic

DAY 23 to 30
  Hold the rate. Do not change anything else.
  Let the week 3 change produce enough data to read.

DAY 30, REPORT ON FOUR NUMBERS
  Requests sent and accepted, as a rate
  Replies, as a rate of accepted
  Conversations worth having
  Meetings booked

AND ONE MORE: which signal tier produced the booked meetings.
That single line changes month two more than anything else in the
report.

The compounding part. Every post you publish during the month is an importable list afterwards. By day 30 you should have two or three of your own post URLs feeding the next cycle, which means month two starts from a warmer list than month one did.

The five ways this goes wrong

1. Running three campaigns at 20 each. Limits are account-wide. That is 60 attempts a day and a restricted account. Split it: 10 + 5 + 5, set per campaign, not per your intentions.

2. Adding a wait node after the connection request. Acceptance auto-detects, checking every 24 hours for two weeks with a random delay. The wait node does nothing except slow the sequence by days.

3. Launching on a C-grade list. The grade exists because a month at 20 a day against a bad list is a month gone. Rebuilding on day 3 costs an afternoon.

4. Changing three things after the first bad week. Then you know nothing. One change, always, and wait for it to produce data.

5. Sending the follow-up to someone who already booked. Tag on the booking, every time. It is the most avoidable bad impression available.

Claude writes it. Prosp is the half that reaches people 💜

Start a 14 Day Free Trial 💜 Watch Full Tutorial ▶️

8 sessions left · booking closes in

Build it live with a GTM engineer

45 minutes, screen shared, on your own list. You leave with a working campaign or agent, not a set of notes.

5/5 rated on Capterra·800+ agencies and sales teams·Set up in 5 minutes
8 GTM engineer sessions left this monthTry Prosp Free