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 schema_version: 1
version: "1.2.0"
last_verified: "2026-02-27"
id: linkedin_draft_reply
title: "Draft Message Reply"
description: "Extracts conversation context and drafts a reply using LLM, placing it in the message box"
overview: |
Operating inside an open LinkedIn messaging thread, this chain extracts the full conversation history, the other party's profile summary, and any context snippets provided by the caller. It hands that material to an LLM step, which produces a reply in the operator's voice, and then places the draft directly into LinkedIn's message box — ready for a human to review before sending.
The workflow never sends the reply automatically; it only drafts. Use it when a sales or outreach agent is triaging a heavy inbox and wants a fast first pass, while keeping the final send under human control.
category:
level: task
domain: sales
reusable: true
params:
instructions: string
policies:
allowed_domains:
- "*.linkedin.com"
embed:
selector: ".msg-form__msg-content-container"
position: append
when: ".msg-s-message-list-content"
label: "Draft Reply"
prompt:
param: instructions
placeholder: "e.g. be formal and decline, suggest a call"
title: "Draft Reply"
param_map:
instructions: "{{instructions}}"
result:
action: "none"
steps:
# Wait for conversation to be loaded
- type: browser.wait
selector: ".msg-s-message-list-content"
timeout: 5000
# Visual feedback: pulsing border on compose container while AI works
- type: browser.injectCSS
id: sb-draft-feedback
css: |
@keyframes sb-pulse {
0%, 100% { box-shadow: inset 0 0 0 2px rgba(21, 195, 154, 0.3); }
50% { box-shadow: inset 0 0 0 4px rgba(21, 195, 154, 0.8); }
}
.msg-form__contenteditable {
animation: sb-pulse 1.5s ease-in-out infinite !important;
border-radius: 8px !important;
}
# Extract recent messages from conversation
- type: browser.extractAll
selector: "li.msg-s-message-list__event"
as: messages
separator: "\n---\n"
# Extract participant name
- type: browser.extract
selector: ".msg-entity-lockup__entity-title, .msg-overlay-conversation-bubble__title span"
as: participant_name
# Generate draft reply
- type: llm.generate
prompt: |
You are drafting a LinkedIn reply. Be professional, warm, and concise.
Conversation with {{participant_name}}:
{{messages}}
User instructions: {{instructions}}
Write a thoughtful reply that:
- Responds directly to the most recent message
- Keeps a professional but friendly tone
- Is concise (2-4 sentences max)
- Doesn't include greeting like "Hi [name]" if already established
- Follows any user instructions above if provided
Return ONLY the message text, no quotes or formatting.
as: draft
# Remove visual feedback
- type: browser.injectCSS
id: sb-draft-feedback
css: |
.msg-form__contenteditable {
box-shadow: none !important;
animation: none !important;
}
# Type the draft into the message box
- type: browser.click
selector: ".msg-form__contenteditable"
- type: browser.type
selector: ".msg-form__contenteditable"
text: "{{draft}}\n\n---\nSent from sidebutton.com"