L
Knowledge Pack Files
LinkedIn Outreach Platform Skill Pack Files
Browse the source files that power the LinkedIn Outreach Platform MCP server knowledge pack.
Available free v1.1.0 Browser LLM
$
sidebutton install linkedin schema_version: 1
version: "1.0.0"
last_verified: "2026-08-25"
id: linkedin_profile_brief
title: "Build Profile Brief"
description: "Opens a profile, triggers lazy-loaded sections, and returns a compact JSON brief: current role, career arc, posting language and topics, contact-type guess, and tailoring hooks for a first message"
overview: |
The lightweight research pass that runs before writing to someone. Where
`linkedin_lead_health` produces a full ICP scorecard for batch enrichment, this returns
just what message-tailoring needs, fast: who the person is TODAY (headlines go stale —
a 2019-era developer contact may be a business angel now), what they post about and in
which language, and two or three concrete hooks worth referencing.
The `contact_type` guess matters most: writing buyer copy to an investor, conference
organizer, or agency owner is the classic mistake this step exists to catch.
Read-only; extraction plus one LLM pass, no interaction with the profile.
category:
level: task
domain: sales
reusable: true
params:
profile_url:
type: string
description: Full LinkedIn profile URL (e.g. https://www.linkedin.com/in/username/)
required: true
policies:
allowed_domains:
- "*.linkedin.com"
steps:
- type: browser.navigate
url: "{{profile_url}}"
- type: browser.wait
selector: main
timeout: 12000
- type: browser.scroll
direction: down
amount: 1400
- type: browser.wait
ms: 800
- type: browser.scroll
direction: down
amount: 1400
- type: browser.wait
ms: 800
- type: browser.scroll
direction: down
amount: 1400
- type: browser.wait
ms: 800
- type: browser.scroll
direction: down
amount: 1400
- type: browser.wait
ms: 800
- type: browser.extract
selector: main
as: profile_blob
- type: llm.generate
as: brief
prompt: >
You are preparing a compact briefing on a LinkedIn profile so a founder can write
one well-tailored first message. Parse the raw profile text below.
Respond with RAW JSON ONLY — no prose, no markdown fences. Leave a field null
rather than guessing. Schema:
{
"profile_url": "{{profile_url}}",
"name": "string",
"headline": "string",
"location": "string | null",
"current_role": {
"title": "string",
"company": "string",
"since": "YYYY-MM | null",
"what_the_company_does": "one sentence, plain words"
},
"other_current_hats": ["side ventures, board seats, portfolios, newsletters, events they run"],
"career_arc": "one sentence: where they came from and what changed",
"posting": {
"language": "en | de | mixed | unknown",
"cadence": "daily | weekly | sporadic | dormant | unknown",
"topics": ["string", "..."]
},
"contact_type": "buyer | operator | channel | multiplier | organizer | peer | unclear",
"contact_type_reason": "one sentence",
"tailoring_hooks": ["2-3 concrete, current facts worth referencing in a message — never generic"],
"watchouts": ["things that would make a standard pitch land badly, e.g. anti-sales posts, investor role, stale headline"]
}
contact_type definitions: buyer = owns a queue/budget at an operating company;
operator = product/PM person who would run the tool; channel = agency, consultancy,
dev shop, fractional exec who could resell or white-label; multiplier = investor,
analyst, coach, community owner with reach; organizer = runs conferences or events;
peer = builds a competing or adjacent product.
## Raw profile text
---
{{profile_blob}}
---
- type: control.stop
message: "{{brief}}"