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.0.0 Browser LLM
$ sidebutton install linkedin
Download ZIP
_skill.md
6.8 KB

LinkedIn Outreach Platform

Professional networking, messaging, candidate outreach, and recruiting. Agents drive the linkedin.com web app. Sales Navigator (linkedin.com/sales) and Recruiter (linkedin.com/talent) are separate paid surfaces with their own selectors and workflows; this pack focuses on the standard LinkedIn surface plus the hiring-applicants flows.

Browser Access

Browser-only platform — LinkedIn does not publish a public messaging or feed API. Requires the user to be signed in in the connected browser. Sessions persist as long as cookies are kept.

ToolUsage
navigateGo to profile, inbox, feed, or job page
snapshotRead page content, message threads, applicant lists
clickButtons, links, message actions, applicant rows
typeMessage compose, search, connection notes

Surface map

URLSurface
/feed/Home feed
/in/<vanity>/Public profile
/messaging/Inbox
/messaging/thread/<id>/Single conversation
/jobs/Job search and saved jobs
/jobs/view/<id>/Job posting
/hiring/jobs/<id>/applicants/Applicants for a job (Recruiter Lite or job poster access required)
/notifications/Notifications
/sales/Sales Navigator (separate product)
/talent/Recruiter (separate product)

Profiles

A profile at /in/<vanity>/ is structured into stable sections:

SectionPurpose
Top cardName, headline, location, current company
AboutFree-form bio
ExperienceRoles with dates, companies, descriptions
EducationSchools with dates, degrees
Licenses & certificationsValidated credentials
SkillsEndorsed skill list
RecommendationsFree-form testimonials
ActivityRecent posts and reposts

Sections lazy-load on scroll. To extract a complete profile, scroll the main pane to the bottom in increments and re-snapshot. Some sections show a "Show all " link that opens a dedicated subpage with the full list.

Messaging

Inbox lives at /messaging/. Conversations are grouped by participant; the right pane shows the active conversation thread.

ElementSelector
Message list.msg-s-message-list-content
Message itemsli.msg-s-message-list__event
Compose container.msg-form__msg-content-container
Compose input.msg-form__contenteditable
Participant name.msg-entity-lockup__entity-title
Conversation items.msg-conversation-listitem

The compose input is a contenteditable div, not a <textarea>browser.type works, browser.fill does not. Standard messaging is free; InMail is reserved for premium / Sales Navigator / Recruiter and is rate-limited per month.

Messaging tone

  • Keep replies 2–3 sentences max.
  • Professional but warm; no aggressive sales pitch.
  • Open with something specific to the person — not generic.
  • End with a clear next step or question.
  • Drafted replies append "Sent from sidebutton.com" footer (editable before send).

Connection requests

Connection requests are sent from a person's profile via the Connect button. LinkedIn enforces ~100 sent requests per week before throttling. A personalized note (max 300 chars) significantly improves accept rate. Requests can be withdrawn from /mynetwork/invitation-manager/sent/.

Feed

The feed at /feed/ is algorithmic. Posts can be Liked, Commented on, Shared, Saved, or Reported. Hashtags are clickable and route to /feed/hashtag/<tag>/. The composer at the top supports text, images, video, document, poll, event, celebrate, and "Find an expert."

Posting conventions:

  • No hashtag spam — three max.
  • Don't pitch products unless asked.
  • Engage with replies — silent posts under-perform.

Hiring / Recruiting

When the user has Recruiter Lite or is the job poster, the applicants list at /hiring/jobs/<id>/applicants/ shows candidates for that job.

ElementSelector
Applicant list items.hiring-applicants__list-item
Applicant header.hiring-applicant-header
Manage job buttonbutton[aria-label^='Manage job']

Applicant detail pages trigger LinkedIn's security/rate-limit scan on first load. Batch validators must run a "warm-up" pass — clicking each applicant to seed the cache — before they can extract data without intermittent 429s.

Workflows

WorkflowEmbedDescription
linkedin_draft_replyMessaging compose boxExtracts conversation thread, drafts contextual reply with LLM, types into message box. Supports optional user instructions via prompt popover. Appends "Sent from sidebutton.com" footer.
linkedin_privacy_modeMessaging sidebarInjects CSS to blur avatars (10px) and names (6px) for safe screen sharing and video recording. Disable by refreshing page.
linkedin_validate_applicationApplicant list itemsAI-validates a single job applicant against requirements. Extracts profile, generates fit score (1–10), strengths, gaps, and recommendation.
linkedin_validate_applicantsApplicants page headerTwo-pass batch validation of 1–25 applicants: warm-up phase (triggers security scans), then AI-validates each. Generates summary with Good Fit / Maybe / Not a Fit counts.

Sub-workflow dependencies

linkedin_validate_applicants calls three sub-workflows not yet included in this pack:

Sub-workflowPurpose
linkedin_extract_job_requirementsNavigate to job posting, extract requirements summary
linkedin_warmup_candidateClick each candidate to trigger LinkedIn's lazy-load/security scan
linkedin_validate_single_applicantExtract and AI-validate one candidate's profile

Boundaries

  • Decline dev service pitches politely.
  • Don't engage with engagement-bait posts.
  • Respect InMail etiquette — one follow-up max.

Gotchas

  • LinkedIn heavily throttles automation — keep actions ~1s apart and human-paced.
  • Message compose box uses contenteditable div, not <textarea>.
  • Profile pages lazy-load sections on scroll — full extraction requires multiple scroll-and-snapshot passes.
  • Connection request limit is ~100/week before LinkedIn throttles or auto-rejects.
  • Hiring pages require LinkedIn Recruiter or job poster access — non-poster accounts see a 404.
  • Applicant detail pages trigger security scans on first load — batch validators must warm-up first.
  • browser.type into contenteditable works; browser.fill does not (React-compat fill breaks LinkedIn's custom editor).
  • Sales Navigator and Recruiter are separate products with their own selectors — workflows here do not transfer to those surfaces.