{
  "schemaVersion": "1.0",
  "item": {
    "slug": "linkedin-inbox",
    "name": "LinkedIn Inbox Manager",
    "source": "tencent",
    "type": "skill",
    "category": "通讯协作",
    "sourceUrl": "https://clawhub.ai/dylanbaker24/linkedin-inbox",
    "canonicalUrl": "https://clawhub.ai/dylanbaker24/linkedin-inbox",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/linkedin-inbox",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=linkedin-inbox",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md",
      "config-example.json",
      "references/style-extraction.md",
      "scripts/open_conversation.sh",
      "scripts/scan_inbox.sh",
      "scripts/send_message.sh"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-23T16:43:11.935Z",
      "expiresAt": "2026-04-30T16:43:11.935Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=4claw-imageboard",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=4claw-imageboard",
        "contentDisposition": "attachment; filename=\"4claw-imageboard-1.0.1.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/linkedin-inbox"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/linkedin-inbox",
    "agentPageUrl": "https://openagent3.xyz/skills/linkedin-inbox/agent",
    "manifestUrl": "https://openagent3.xyz/skills/linkedin-inbox/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/linkedin-inbox/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "LinkedIn Inbox Manager",
        "body": "Automated LinkedIn inbox monitoring with human-in-the-loop approval for responses. Uses Peekaboo for UI automation (no API rate limits, works with any LinkedIn account)."
      },
      {
        "title": "Requirements",
        "body": "macOS with Peekaboo CLI installed (brew install steipete/tap/peekaboo)\nScreen Recording + Accessibility permissions granted\nLinkedIn logged in via browser (Chrome recommended)\nClawdbot with browser capability"
      },
      {
        "title": "1. One-time Setup",
        "body": "# Grant Peekaboo permissions\npeekaboo permissions\n\n# Verify LinkedIn is accessible\npeekaboo app launch \"Google Chrome\"\npeekaboo see --app \"Google Chrome\" --annotate --path /tmp/linkedin-check.png"
      },
      {
        "title": "2. Configure User Style",
        "body": "Create linkedin-inbox-config.json in your workspace:\n\n{\n  \"scan\": {\n    \"intervalMinutes\": 60,\n    \"activeHours\": { \"start\": 9, \"end\": 18, \"timezone\": \"America/Los_Angeles\" },\n    \"skipWeekends\": true\n  },\n  \"drafting\": {\n    \"styleProfile\": \"USER.md\",\n    \"templates\": {\n      \"decline\": \"Thanks for reaching out. Not a fit for us right now, but best of luck.\",\n      \"interested\": \"This looks interesting. Happy to chat more. What's your availability?\",\n      \"referral\": \"I might know someone. Let me check and get back to you.\"\n    }\n  },\n  \"notifications\": {\n    \"channel\": \"discord\",\n    \"target\": \"#linkedin\"\n  }\n}"
      },
      {
        "title": "3. Start Monitoring",
        "body": "Tell your agent: \"Start LinkedIn inbox monitoring\" or add to HEARTBEAT.md:\n\n- Check LinkedIn inbox if last scan >1 hour ago"
      },
      {
        "title": "Scan Inbox",
        "body": "# Navigate to LinkedIn messaging\npeekaboo app launch \"Google Chrome\"\npeekaboo menu click --app \"Google Chrome\" --item \"New Tab\"\npeekaboo type \"https://www.linkedin.com/messaging/\" --return\nsleep 3\n\n# Capture inbox state\npeekaboo see --app \"Google Chrome\" --window-title \"Messaging\" --annotate --path /tmp/linkedin-inbox.png\n\nThe agent reads the annotated screenshot to identify:\n\nUnread messages (bold names, blue dots)\nMessage previews\nSender names and titles"
      },
      {
        "title": "Draft Responses",
        "body": "For each unread message:\n\nAgent reads the conversation\nClassifies intent (pitch, networking, job inquiry, spam)\nDrafts response matching user's communication style\nPosts draft to notification channel for approval\n\nExample notification:\n\n💼 LinkedIn: New message from **Alex M.** (Founder @ SomeCompany)\n\nPreview: \"Hi, I noticed you're growing and wondered if...\"\n\n**My read:** Services pitch. Doesn't fit current needs.\n\n**Draft reply:**\n> Thanks for reaching out. We're set on that side for now, but I'll keep you in mind if that changes.\n\nReact ✅ to send, ❌ to skip, or reply with edits."
      },
      {
        "title": "Send Approved Messages",
        "body": "On approval:\n\n# Click into conversation\npeekaboo click --on [message-element-id] --app \"Google Chrome\"\nsleep 1\n\n# Type response\npeekaboo type \"Your approved message here\" --app \"Google Chrome\"\n\n# Send (Enter or click Send button)\npeekaboo press return --app \"Google Chrome\""
      },
      {
        "title": "Communication Style Matching",
        "body": "The skill reads USER.md (or configured style file) to match the user's tone:\n\nExtract these signals:\n\nFormality level (casual vs professional)\nTypical greeting style\nSign-off patterns\nSentence length preference\nBanned words/phrases\nResponse length norms\n\nApply to drafts:\n\nMirror detected patterns\nUse user's vocabulary\nMatch their directness level\nRespect their guardrails (no \"excited\", no hype, etc.)\n\nSee references/style-extraction.md for detailed guidance."
      },
      {
        "title": "Morning Ping Integration",
        "body": "Add LinkedIn summary to your morning ping:\n\n📣 The Morning Ping — Monday, Jan 27\n\n**LinkedIn:**\n• 💚 Sarah Chen replied — \"That sounds great, let's do Thursday\" → Draft ready\n• 💚 Mike R. replied — \"Not interested right now\" → No action needed\n• 📩 3 new connection requests (2 sales pitches, 1 relevant)\n• 📩 1 unread message from Alex (job inquiry) → Draft ready\n\nReply \"send sarah\" to approve, \"skip mike\" to archive."
      },
      {
        "title": "Approval Commands",
        "body": "Users can respond with:\n\nsend [name] - Send the drafted reply\nsend all - Send all pending drafts\nskip [name] - Archive without replying\nedit [name]: [new message] - Replace draft and send\nshow [name] - Show full conversation"
      },
      {
        "title": "Via Cron (Recommended)",
        "body": "{\n  \"schedule\": \"0 */2 9-18 * * 1-5\",\n  \"text\": \"Scan LinkedIn inbox and post any new messages to #linkedin with draft replies\"\n}"
      },
      {
        "title": "Via Heartbeat",
        "body": "In HEARTBEAT.md:\n\n- If 9am-6pm PT and last LinkedIn scan >60min: scan inbox, draft replies, post to #linkedin"
      },
      {
        "title": "Safety Rules",
        "body": "Never send without explicit approval - Always wait for user confirmation\nRate limit actions - Max 20 LinkedIn actions per hour\nRespect quiet hours - Don't scan outside configured activeHours\nLog everything - Record all actions in daily memory file\nPreserve originals - Never delete messages, only archive"
      },
      {
        "title": "\"Can't find messaging UI\"",
        "body": "Ensure Chrome is open with LinkedIn logged in\nCheck window title matches (may vary by language)\nUse peekaboo list windows --app \"Google Chrome\" --json to debug"
      },
      {
        "title": "\"Session expired\"",
        "body": "LinkedIn sessions expire periodically\nRe-authenticate manually in browser\nSkill will detect login page and notify user"
      },
      {
        "title": "\"Peekaboo permissions denied\"",
        "body": "peekaboo permissions  # Check status\n# Grant via System Preferences > Privacy & Security > Screen Recording + Accessibility"
      },
      {
        "title": "Files",
        "body": "scripts/scan_inbox.sh - Peekaboo commands for inbox capture\nscripts/send_message.sh - Peekaboo commands for sending\nreferences/style-extraction.md - Guide for communication style matching"
      }
    ],
    "body": "LinkedIn Inbox Manager\n\nAutomated LinkedIn inbox monitoring with human-in-the-loop approval for responses. Uses Peekaboo for UI automation (no API rate limits, works with any LinkedIn account).\n\nRequirements\nmacOS with Peekaboo CLI installed (brew install steipete/tap/peekaboo)\nScreen Recording + Accessibility permissions granted\nLinkedIn logged in via browser (Chrome recommended)\nClawdbot with browser capability\nQuick Start\n1. One-time Setup\n# Grant Peekaboo permissions\npeekaboo permissions\n\n# Verify LinkedIn is accessible\npeekaboo app launch \"Google Chrome\"\npeekaboo see --app \"Google Chrome\" --annotate --path /tmp/linkedin-check.png\n\n2. Configure User Style\n\nCreate linkedin-inbox-config.json in your workspace:\n\n{\n  \"scan\": {\n    \"intervalMinutes\": 60,\n    \"activeHours\": { \"start\": 9, \"end\": 18, \"timezone\": \"America/Los_Angeles\" },\n    \"skipWeekends\": true\n  },\n  \"drafting\": {\n    \"styleProfile\": \"USER.md\",\n    \"templates\": {\n      \"decline\": \"Thanks for reaching out. Not a fit for us right now, but best of luck.\",\n      \"interested\": \"This looks interesting. Happy to chat more. What's your availability?\",\n      \"referral\": \"I might know someone. Let me check and get back to you.\"\n    }\n  },\n  \"notifications\": {\n    \"channel\": \"discord\",\n    \"target\": \"#linkedin\"\n  }\n}\n\n3. Start Monitoring\n\nTell your agent: \"Start LinkedIn inbox monitoring\" or add to HEARTBEAT.md:\n\n- Check LinkedIn inbox if last scan >1 hour ago\n\nCore Workflow\nScan Inbox\n# Navigate to LinkedIn messaging\npeekaboo app launch \"Google Chrome\"\npeekaboo menu click --app \"Google Chrome\" --item \"New Tab\"\npeekaboo type \"https://www.linkedin.com/messaging/\" --return\nsleep 3\n\n# Capture inbox state\npeekaboo see --app \"Google Chrome\" --window-title \"Messaging\" --annotate --path /tmp/linkedin-inbox.png\n\n\nThe agent reads the annotated screenshot to identify:\n\nUnread messages (bold names, blue dots)\nMessage previews\nSender names and titles\nDraft Responses\n\nFor each unread message:\n\nAgent reads the conversation\nClassifies intent (pitch, networking, job inquiry, spam)\nDrafts response matching user's communication style\nPosts draft to notification channel for approval\n\nExample notification:\n\n💼 LinkedIn: New message from **Alex M.** (Founder @ SomeCompany)\n\nPreview: \"Hi, I noticed you're growing and wondered if...\"\n\n**My read:** Services pitch. Doesn't fit current needs.\n\n**Draft reply:**\n> Thanks for reaching out. We're set on that side for now, but I'll keep you in mind if that changes.\n\nReact ✅ to send, ❌ to skip, or reply with edits.\n\nSend Approved Messages\n\nOn approval:\n\n# Click into conversation\npeekaboo click --on [message-element-id] --app \"Google Chrome\"\nsleep 1\n\n# Type response\npeekaboo type \"Your approved message here\" --app \"Google Chrome\"\n\n# Send (Enter or click Send button)\npeekaboo press return --app \"Google Chrome\"\n\nCommunication Style Matching\n\nThe skill reads USER.md (or configured style file) to match the user's tone:\n\nExtract these signals:\n\nFormality level (casual vs professional)\nTypical greeting style\nSign-off patterns\nSentence length preference\nBanned words/phrases\nResponse length norms\n\nApply to drafts:\n\nMirror detected patterns\nUse user's vocabulary\nMatch their directness level\nRespect their guardrails (no \"excited\", no hype, etc.)\n\nSee references/style-extraction.md for detailed guidance.\n\nMorning Ping Integration\n\nAdd LinkedIn summary to your morning ping:\n\n📣 The Morning Ping — Monday, Jan 27\n\n**LinkedIn:**\n• 💚 Sarah Chen replied — \"That sounds great, let's do Thursday\" → Draft ready\n• 💚 Mike R. replied — \"Not interested right now\" → No action needed\n• 📩 3 new connection requests (2 sales pitches, 1 relevant)\n• 📩 1 unread message from Alex (job inquiry) → Draft ready\n\nReply \"send sarah\" to approve, \"skip mike\" to archive.\n\nApproval Commands\n\nUsers can respond with:\n\nsend [name] - Send the drafted reply\nsend all - Send all pending drafts\nskip [name] - Archive without replying\nedit [name]: [new message] - Replace draft and send\nshow [name] - Show full conversation\nScheduled Scanning\nVia Cron (Recommended)\n{\n  \"schedule\": \"0 */2 9-18 * * 1-5\",\n  \"text\": \"Scan LinkedIn inbox and post any new messages to #linkedin with draft replies\"\n}\n\nVia Heartbeat\n\nIn HEARTBEAT.md:\n\n- If 9am-6pm PT and last LinkedIn scan >60min: scan inbox, draft replies, post to #linkedin\n\nSafety Rules\nNever send without explicit approval - Always wait for user confirmation\nRate limit actions - Max 20 LinkedIn actions per hour\nRespect quiet hours - Don't scan outside configured activeHours\nLog everything - Record all actions in daily memory file\nPreserve originals - Never delete messages, only archive\nTroubleshooting\n\"Can't find messaging UI\"\nEnsure Chrome is open with LinkedIn logged in\nCheck window title matches (may vary by language)\nUse peekaboo list windows --app \"Google Chrome\" --json to debug\n\"Session expired\"\nLinkedIn sessions expire periodically\nRe-authenticate manually in browser\nSkill will detect login page and notify user\n\"Peekaboo permissions denied\"\npeekaboo permissions  # Check status\n# Grant via System Preferences > Privacy & Security > Screen Recording + Accessibility\n\nFiles\nscripts/scan_inbox.sh - Peekaboo commands for inbox capture\nscripts/send_message.sh - Peekaboo commands for sending\nreferences/style-extraction.md - Guide for communication style matching"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/dylanbaker24/linkedin-inbox",
    "publisherUrl": "https://clawhub.ai/dylanbaker24/linkedin-inbox",
    "owner": "dylanbaker24",
    "version": "0.1.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/linkedin-inbox",
    "downloadUrl": "https://openagent3.xyz/downloads/linkedin-inbox",
    "agentUrl": "https://openagent3.xyz/skills/linkedin-inbox/agent",
    "manifestUrl": "https://openagent3.xyz/skills/linkedin-inbox/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/linkedin-inbox/agent.md"
  }
}