linkedin-inbox

LinkedIn inbox management with scheduled scanning, auto-draft responses following user's communication style, and approval workflows. Use when monitoring LinkedIn messages, drafting replies, managing inbox during off-hours, or setting up morning ping summaries of LinkedIn activity.

533 stars

Best use case

linkedin-inbox is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

LinkedIn inbox management with scheduled scanning, auto-draft responses following user's communication style, and approval workflows. Use when monitoring LinkedIn messages, drafting replies, managing inbox during off-hours, or setting up morning ping summaries of LinkedIn activity.

Teams using linkedin-inbox should expect a more consistent output, faster repeated execution, less prompt rewriting.

When to use this skill

  • You want a reusable workflow that can be run more than once with consistent structure.

When not to use this skill

  • You only need a quick one-off answer and do not need a reusable workflow.
  • You cannot install or maintain the underlying files, dependencies, or repository context.

Installation

Claude Code / Cursor / Codex

$curl -o ~/.claude/skills/linkedin-inbox/SKILL.md --create-dirs "https://raw.githubusercontent.com/sundial-org/awesome-openclaw-skills/main/skills/linkedin-inbox/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/linkedin-inbox/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How linkedin-inbox Compares

Feature / Agentlinkedin-inboxStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

LinkedIn inbox management with scheduled scanning, auto-draft responses following user's communication style, and approval workflows. Use when monitoring LinkedIn messages, drafting replies, managing inbox during off-hours, or setting up morning ping summaries of LinkedIn activity.

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

SKILL.md Source

# LinkedIn Inbox Manager

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).

## Requirements

- macOS with Peekaboo CLI installed (`brew install steipete/tap/peekaboo`)
- Screen Recording + Accessibility permissions granted
- LinkedIn logged in via browser (Chrome recommended)
- Clawdbot with browser capability

## Quick Start

### 1. One-time Setup
```bash
# Grant Peekaboo permissions
peekaboo permissions

# Verify LinkedIn is accessible
peekaboo app launch "Google Chrome"
peekaboo see --app "Google Chrome" --annotate --path /tmp/linkedin-check.png
```

### 2. Configure User Style
Create `linkedin-inbox-config.json` in your workspace:
```json
{
  "scan": {
    "intervalMinutes": 60,
    "activeHours": { "start": 9, "end": 18, "timezone": "America/Los_Angeles" },
    "skipWeekends": true
  },
  "drafting": {
    "styleProfile": "USER.md",
    "templates": {
      "decline": "Thanks for reaching out. Not a fit for us right now, but best of luck.",
      "interested": "This looks interesting. Happy to chat more. What's your availability?",
      "referral": "I might know someone. Let me check and get back to you."
    }
  },
  "notifications": {
    "channel": "discord",
    "target": "#linkedin"
  }
}
```

### 3. Start Monitoring
Tell your agent: "Start LinkedIn inbox monitoring" or add to HEARTBEAT.md:
```markdown
- Check LinkedIn inbox if last scan >1 hour ago
```

## Core Workflow

### Scan Inbox
```bash
# Navigate to LinkedIn messaging
peekaboo app launch "Google Chrome"
peekaboo menu click --app "Google Chrome" --item "New Tab"
peekaboo type "https://www.linkedin.com/messaging/" --return
sleep 3

# Capture inbox state
peekaboo see --app "Google Chrome" --window-title "Messaging" --annotate --path /tmp/linkedin-inbox.png
```

The agent reads the annotated screenshot to identify:
- Unread messages (bold names, blue dots)
- Message previews
- Sender names and titles

### Draft Responses
For each unread message:
1. Agent reads the conversation
2. Classifies intent (pitch, networking, job inquiry, spam)
3. Drafts response matching user's communication style
4. Posts draft to notification channel for approval

Example notification:
```
💼 LinkedIn: New message from **Alex M.** (Founder @ SomeCompany)

Preview: "Hi, I noticed you're growing and wondered if..."

**My read:** Services pitch. Doesn't fit current needs.

**Draft reply:**
> Thanks for reaching out. We're set on that side for now, but I'll keep you in mind if that changes.

React ✅ to send, ❌ to skip, or reply with edits.
```

### Send Approved Messages
On approval:
```bash
# Click into conversation
peekaboo click --on [message-element-id] --app "Google Chrome"
sleep 1

# Type response
peekaboo type "Your approved message here" --app "Google Chrome"

# Send (Enter or click Send button)
peekaboo press return --app "Google Chrome"
```

## Communication Style Matching

The skill reads `USER.md` (or configured style file) to match the user's tone:

**Extract these signals:**
- Formality level (casual vs professional)
- Typical greeting style
- Sign-off patterns
- Sentence length preference
- Banned words/phrases
- Response length norms

**Apply to drafts:**
- Mirror detected patterns
- Use user's vocabulary
- Match their directness level
- Respect their guardrails (no "excited", no hype, etc.)

See `references/style-extraction.md` for detailed guidance.

## Morning Ping Integration

Add LinkedIn summary to your morning ping:
```markdown
📣 The Morning Ping — Monday, Jan 27

**LinkedIn:**
• 💚 Sarah Chen replied — "That sounds great, let's do Thursday" → Draft ready
• 💚 Mike R. replied — "Not interested right now" → No action needed
• 📩 3 new connection requests (2 sales pitches, 1 relevant)
• 📩 1 unread message from Alex (job inquiry) → Draft ready

Reply "send sarah" to approve, "skip mike" to archive.
```

## Approval Commands

Users can respond with:
- `send [name]` - Send the drafted reply
- `send all` - Send all pending drafts
- `skip [name]` - Archive without replying
- `edit [name]: [new message]` - Replace draft and send
- `show [name]` - Show full conversation

## Scheduled Scanning

### Via Cron (Recommended)
```json
{
  "schedule": "0 */2 9-18 * * 1-5",
  "text": "Scan LinkedIn inbox and post any new messages to #linkedin with draft replies"
}
```

### Via Heartbeat
In HEARTBEAT.md:
```markdown
- If 9am-6pm PT and last LinkedIn scan >60min: scan inbox, draft replies, post to #linkedin
```

## Safety Rules

1. **Never send without explicit approval** - Always wait for user confirmation
2. **Rate limit actions** - Max 20 LinkedIn actions per hour
3. **Respect quiet hours** - Don't scan outside configured activeHours
4. **Log everything** - Record all actions in daily memory file
5. **Preserve originals** - Never delete messages, only archive

## Troubleshooting

### "Can't find messaging UI"
- Ensure Chrome is open with LinkedIn logged in
- Check window title matches (may vary by language)
- Use `peekaboo list windows --app "Google Chrome" --json` to debug

### "Session expired"
- LinkedIn sessions expire periodically
- Re-authenticate manually in browser
- Skill will detect login page and notify user

### "Peekaboo permissions denied"
```bash
peekaboo permissions  # Check status
# Grant via System Preferences > Privacy & Security > Screen Recording + Accessibility
```

## Files

- `scripts/scan_inbox.sh` - Peekaboo commands for inbox capture
- `scripts/send_message.sh` - Peekaboo commands for sending
- `references/style-extraction.md` - Guide for communication style matching

Related Skills

linkedin

533
from sundial-org/awesome-openclaw-skills

LinkedIn automation via browser relay or cookies for messaging, profile viewing, and network actions.

linkedin-monitor

533
from sundial-org/awesome-openclaw-skills

Bulletproof LinkedIn inbox monitoring with progressive autonomy. Monitors messages hourly, drafts replies in your voice, and alerts you to new conversations. Supports 4 autonomy levels from monitor-only to full autonomous.

linkedin-cli

533
from sundial-org/awesome-openclaw-skills

A bird-like LinkedIn CLI for searching profiles, checking messages, and summarizing your feed using session cookies.

linkedin-automator

533
from sundial-org/awesome-openclaw-skills

Automate LinkedIn content creation, posting, engagement tracking, and audience growth. Use for posting content, scheduling posts, analyzing engagement metrics, generating content ideas, commenting on posts, and building LinkedIn presence. Requires browser access with LinkedIn logged in.

portfolio-watcher

533
from sundial-org/awesome-openclaw-skills

Monitor stock/crypto holdings, get price alerts, track portfolio performance

portainer

533
from sundial-org/awesome-openclaw-skills

Control Docker containers and stacks via Portainer API. List containers, start/stop/restart, view logs, and redeploy stacks from git.

portable-tools

533
from sundial-org/awesome-openclaw-skills

Build cross-device tools without hardcoding paths or account names

polymarket

533
from sundial-org/awesome-openclaw-skills

Trade prediction markets on Polymarket. Analyze odds, place bets, track positions, automate alerts, and maximize returns from event outcomes. Covers sports, politics, entertainment, and more.

polymarket-traiding-bot

533
from sundial-org/awesome-openclaw-skills

No description provided.

polymarket-analysis

533
from sundial-org/awesome-openclaw-skills

Analyze Polymarket prediction markets for trading edges. Pair Cost arbitrage, whale tracking, sentiment analysis, momentum signals, user profile tracking. No execution.

polymarket-agent

533
from sundial-org/awesome-openclaw-skills

Autonomous prediction market agent - analyzes markets, researches news, and identifies trading opportunities

polymarket-5

533
from sundial-org/awesome-openclaw-skills

Query Polymarket prediction markets. Use for questions about prediction markets, betting odds, market prices, event probabilities, or when user asks about Polymarket data.