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
linkedin_draft_reply.yaml
3.2 KB
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"