LinkedIn Data Skill
Read public LinkedIn data through UnifAPI MCP: the exact linkedin/... operations and response shapes for B2B research. Never connects or messages.
Agent-native
Run it in Claude, ChatGPT custom MCP apps, OpenClaw, Hermes, Codex, Claude Code, Cursor, VS Code, or another MCP-capable client. No dedicated GUI flow and no separate LLM API key.
Backed by live public data
Every step is grounded in live public-data records UnifAPI returns, so the output cites what is actually ranking, posting, or being said — not a generic best-practice list.
Composable & open source
Skills cross-reference each other and live in a public, MIT-style repo. Read the full SKILL.md on GitHub, fork it, or run it as-is inside your agent.
Paste this into Codex or Claude Code
The prompt is intentionally editable. Replace the handles, market, budget, and campaign goal, then let the agent call UnifAPI MCP when it needs live public data.
Using the LinkedIn Data Skill, research stripe on public LinkedIn: pull the company profile and recent posts, run a company-filtered job search for one relevant keyword, and return a sourced brief with unsupported capabilities called out. Read-only.
The full skill, rendered from its SKILL.md
Use this skill to read the eight LinkedIn operations currently published by UnifAPI. Treat this list as the capability boundary: do not invent legacy sub-resources or promise people search, keyword post search, company employee listings, reactions, follower counts, or job counts.
Use UnifAPI for live evidence
Connect with the unifapi skill, inspect the chosen operation with get_operation, then call it with call_api. Successful responses use UnifAPI's standard envelope:
{
"data": {},
"pagination": { "has_more": false, "next_cursor": null },
"billing": { "records_charged": 1 }
}
Keep billing in cost reporting. For list operations, pass pagination.next_cursor as the next request's cursor only when pagination.has_more is true.
Core operations
| Need | Operation |
|---|---|
| Company profile | linkedin/companies/{slug} |
| Company posts | linkedin/companies/{slug}/posts |
| Member profile | linkedin/users/{username} |
| Member posts | linkedin/users/{username}/posts |
| Search jobs | linkedin/search/jobs |
| Job detail | linkedin/jobs/{id} |
| Post detail | linkedin/posts/{id} |
| Post comments | linkedin/posts/{id}/comments |
Workflow
- Resolve the public key. Read a company
{slug}from/company/<slug>or a member{username}from/in/<username>. - Inspect the contract. Call
get_operationbefore the first live call so query fields, pagination, response shape, and billing are current. - Read the narrowest record. Start with the company or member profile; add its posts only when the task needs current themes or authored evidence.
- Research hiring carefully. Read
company_idfrom the company profile, then calllinkedin/search/jobswith a meaningfulkeywordand the numeric company filter. This is a filtered search, not an exhaustive company job list or a historical job-count series. - Open evidence. Use a returned job id with
linkedin/jobs/{id}or a post id withlinkedin/posts/{id}; fetch comments only when reception matters. - Report limits. Separate fields read directly from hypotheses inferred from posts, jobs, or company size. State when a requested capability is outside the current eight-operation surface.
Shape notes
- Company profiles expose the URL slug plus
company_id, description, industry, size/headcount fields, headquarters, specialties, and public counts when present. - Member profiles expose the URL username, headline, location, website, and public status flags. Follower and connection counts are not part of the current profile contract.
- Job search is cursor-paginated and requires a free-text keyword. The
companyfilter accepts the numericcompany_idfrom a company profile. - Post lists and comments are cursor-paginated. Preserve returned ids and source URLs so every downstream claim is traceable.
Gotchas
- Companies are keyed by URL slug; members are keyed by URL username. Do not substitute display names.
- A company profile's headcount is a current public field, not proof of growth over time.
- A filtered job result is evidence that a matching role was returned, not proof of the company's complete hiring plan.
- Capacity-limited collection and job operations may retry inside the gateway. Do not add a second retry loop unless the returned error contract says it is safe.
- If an operation is absent from
list_operations, treat it as unavailable rather than guessing an older path.
Output
Return the records the caller needs with source URLs, dates where available, a clear distinction between observed facts and inference, and one cost line using billing.records_charged.
Related Skills
- linkedin-account-research — turns company profiles, posts, filtered job results, named member profiles, and news into an account brief.
- account-news-signals — corroborates dated company news against official company posts.
- buying-signal-monitor — combines X intent search with named-account LinkedIn evidence.
- unifapi — connects MCP and exposes the current operation catalog and schemas.
Source: linkedin/SKILL.md on GitHub — open a PR there to improve it.
The live APIs this skill calls
Every operation the skill names is one of these UnifAPI platforms — still visible and callable for product code, debugging, and custom agent flows.
- The concrete `linkedin/...` operations for each common B2B read job
- Response-contract and shape notes for companies, users, jobs, and posts
- Deterministic recipes: account research, targeted hiring evidence, members, posts
- Platform gotchas (slug vs. username keys, cursor pagination, billing)