skills$openclaw/linkedin-monitor
dylanbaker241.2k

by dylanbaker24

linkedin-monitor – OpenClaw Skill

linkedin-monitor is an OpenClaw Skills integration for communication workflows. 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.

1.2k stars6.3k forksSecurity L1
Updated Feb 7, 2026Created Feb 7, 2026communication

Skill Snapshot

namelinkedin-monitor
descriptionBulletproof 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. OpenClaw Skills integration.
ownerdylanbaker24
repositorydylanbaker24/linkedin-monitor
languageMarkdown
licenseMIT
topics
securityL1
installopenclaw add @dylanbaker24/linkedin-monitor
last updatedFeb 7, 2026

Maintainer

dylanbaker24

dylanbaker24

Maintains linkedin-monitor in the OpenClaw Skills directory.

View GitHub profile
File Explorer
18 files
.
docs
SETUP.md
2.1 KB
TROUBLESHOOT.md
2.5 KB
scripts
check-browser.sh
1.5 KB
check.sh
3.7 KB
cron-wrapper.sh
2.0 KB
ensure-browser.sh
1.0 KB
health.sh
4.1 KB
lk.py
8.3 KB
state.sh
4.8 KB
templates
config.json
473 B
_meta.json
290 B
CRON-PAYLOAD.md
1.7 KB
package.json
720 B
README.md
7.5 KB
SKILL.md
4.0 KB
SKILL.md

name: linkedin-monitor description: 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. version: 1.0.0 author: Dylan Baker / lilAgents

LinkedIn Monitor

Reliable LinkedIn inbox monitoring for Clawdbot.

Features

  • Hourly monitoring — Checks inbox every hour, 24/7
  • Deterministic state — No duplicate notifications, ever
  • Progressive autonomy — Start supervised, graduate to autonomous
  • Health checks — Alerts when auth expires or things break
  • Your voice — Drafts replies using your communication style

Quick Start

# 1. Setup (interactive)
linkedin-monitor setup

# 2. Verify health
linkedin-monitor health

# 3. Run manually (test)
linkedin-monitor check

# 4. Enable cron (hourly)
linkedin-monitor enable

Autonomy Levels

LevelNameBehavior
0Monitor OnlyAlerts to new messages only
1Draft + ApproveDrafts replies, waits for approval
2Auto-Reply SimpleAuto-handles acknowledgments, scheduling
3Full AutonomousReplies as you, books meetings, networks

Default: Level 1 — Change with linkedin-monitor config autonomyLevel 2

Commands

linkedin-monitor setup      # Interactive setup wizard
linkedin-monitor health     # Check auth status
linkedin-monitor check      # Run one check cycle
linkedin-monitor enable     # Enable hourly cron
linkedin-monitor disable    # Disable cron
linkedin-monitor status     # Show current state
linkedin-monitor config     # View/edit configuration
linkedin-monitor logs       # View recent activity
linkedin-monitor reset      # Clear state (start fresh)

Configuration

Location: ~/.clawdbot/linkedin-monitor/config.json

{
  "autonomyLevel": 1,
  "alertChannel": "discord",
  "alertChannelId": "YOUR_CHANNEL_ID",
  "calendarLink": "cal.com/yourname",
  "communicationStyleFile": "USER.md",
  "timezone": "America/New_York",
  "schedule": "0 * * * *",
  "morningDigest": {
    "enabled": true,
    "hour": 9,
    "timezone": "Asia/Bangkok"
  },
  "safetyLimits": {
    "maxMessagesPerDay": 50,
    "escalationKeywords": ["angry", "legal", "refund"],
    "dailyDigest": true
  }
}

How It Works

Monitoring Flow

1. Health Check
   └── Verify LinkedIn auth (lk CLI)
   
2. Fetch Messages
   └── lk message list --json
   
3. Compare State
   └── Filter: only messages not in state file
   
4. For Each New Message
   ├── Level 0: Alert only
   ├── Level 1: Draft reply → Alert → Wait for approval
   ├── Level 2: Simple = auto-reply, Complex = draft
   └── Level 3: Full autonomous response
   
5. Update State
   └── Record message IDs (prevents duplicates)

State Management

State is managed by scripts, not the LLM. This guarantees:

  • No duplicate notifications
  • Consistent behavior across sessions
  • Visible state for debugging

State files: ~/.clawdbot/linkedin-monitor/state/

Sending Approved Messages

When at Level 1, approve drafts with:

send [name]           # Send draft to [name]
send all              # Send all pending drafts
edit [name] [text]    # Edit draft before sending
skip [name]           # Discard draft

Troubleshooting

"Auth expired"

lk auth login
linkedin-monitor health

"No messages found"

linkedin-monitor check --debug

Duplicate notifications

linkedin-monitor reset  # Clear state
linkedin-monitor check  # Fresh start

Dependencies

  • lk CLI (LinkedIn CLI) — npm install -g lk
  • jq (JSON processor) — brew install jq

Files

~/.clawdbot/linkedin-monitor/
├── config.json          # Your configuration
├── state/
│   ├── messages.json    # Seen message IDs
│   ├── lastrun.txt      # Last check timestamp
│   └── drafts.json      # Pending drafts
└── logs/
    └── activity.log     # Activity history
README.md

LinkedIn Monitor for Clawdbot

Bulletproof LinkedIn inbox monitoring with zero duplicate notifications.

Get notified when someone messages you on LinkedIn. Drafts replies in your voice. Never miss a lead.

License Clawdbot


Features

  • 🔔 Hourly monitoring — Checks your inbox every hour, 24/7
  • 🚫 No duplicates — Each message reported exactly once (file-based state)
  • ✍️ Draft replies — AI drafts responses in your communication style
  • 🛡️ Approval required — Nothing sent without your OK
  • 🌐 Browser-based — Works with your normal LinkedIn login
  • Watchdog included — Alerts you if monitoring stops working

Quick Install

# 1. Install the skill
clawdhub install linkedin-monitor

# 2. Run setup
linkedin-monitor setup

# 3. Verify everything works
linkedin-monitor health

# 4. Enable hourly monitoring
linkedin-monitor enable

Requirements

  • Clawdbot installed and running
  • A browser profile logged into LinkedIn
  • A channel for alerts (Discord, Telegram, Slack, WhatsApp, or any Clawdbot channel)

Setup Guide

Step 1: Create a Browser Profile

LinkedIn Monitor uses Clawdbot's browser tool to check your inbox. You need a browser profile that's logged into LinkedIn.

Option A: Use the default "clawd" profile

# Start the clawd browser
clawdbot browser start --profile clawd

# This opens a Chrome window. Log into LinkedIn manually.
# Keep this browser open — it needs to stay running.

Option B: Create a custom profile

# Create a profile named "linkedin"
clawdbot browser start --profile linkedin

# Log into LinkedIn, then keep it open

Tip: Put the browser on a second desktop/workspace so it doesn't interfere with your main browsing.

Step 2: Run Setup

linkedin-monitor setup

This will ask you for:

  • Discord channel ID — Where to send alerts (right-click channel → Copy ID)
  • Calendar link — For booking meetings (e.g., cal.com/yourname)
  • Timezone — Your timezone (e.g., America/New_York)

Configuration is saved to ~/.clawdbot/linkedin-monitor/config.json

Step 3: Verify Health

linkedin-monitor health

You should see:

Dependencies:
✓ jq installed
✓ Browser profile ready

Authentication:
✓ LinkedIn logged in as: Your Name

Configuration:
✓ Config file exists
✓ Alert channel configured

Automation:
! Cron job not installed — run: linkedin-monitor enable

Step 4: Test Manually

linkedin-monitor check

This runs one check cycle. If you have unread messages, it will report them.

Step 5: Enable Hourly Monitoring

linkedin-monitor enable

This creates a cron job that runs every hour to check your inbox.


How It Works

Every Hour:
┌─────────────────────────────────────────┐
│ 1. Check browser is running             │
│ 2. Open LinkedIn messaging tab          │
│ 3. Take snapshot of inbox               │
│ 4. Compare against seen messages        │
│ 5. If NEW message:                      │
│    → Draft reply in your voice          │
│    → Alert you on Discord               │
│    → Wait for approval                  │
│ 6. Update state file                    │
└─────────────────────────────────────────┘

State is tracked in: ~/.clawdbot/linkedin-monitor/state/messages.json

Each message gets a unique ID (Name_Timestamp). Once reported, it's added to seenIds and never reported again.


Commands

CommandDescription
linkedin-monitor setupInteractive setup wizard
linkedin-monitor healthCheck dependencies and auth
linkedin-monitor checkRun one monitoring cycle
linkedin-monitor enableEnable hourly cron
linkedin-monitor disableDisable cron
linkedin-monitor statusShow current state
linkedin-monitor configView/edit configuration
linkedin-monitor logsView activity logs
linkedin-monitor resetClear state (fresh start)

Approving Messages

When a new message arrives, you'll get an alert like:

📬 **John Smith**
> Hey, I saw your post about AI automation. Would love to chat!

**Draft reply:**
> Hey John, thanks for reaching out. Happy to connect — what specifically caught your interest?

Reply "send John" to approve.

Commands:

  • send John — Send the draft as-is
  • send all — Send all pending drafts
  • edit John Hey John, let's set up a call... — Edit and send
  • skip John — Discard the draft

Configuration

Edit ~/.clawdbot/linkedin-monitor/config.json:

{
  "autonomyLevel": 1,
  "alertChannel": "discord",
  "alertTarget": "YOUR_CHANNEL_ID",
  "calendarLink": "cal.com/yourname",
  "communicationStyleFile": "USER.md",
  "timezone": "America/New_York",
  "schedule": "0 * * * *",
  "browserProfile": "clawd"
}

Supported Channels

ChannelalertChannelalertTarget
DiscorddiscordChannel ID
TelegramtelegramChat ID
SlackslackChannel ID or name
WhatsAppwhatsappChat ID or phone
SignalsignalPhone number

Autonomy Levels

LevelBehavior
0Monitor only — alerts, no drafts
1Draft + Approve — drafts replies, waits for your OK
2Auto-reply simple — handles "thanks", scheduling automatically
3Full autonomous — replies as you, books meetings

Default is Level 1. Change with:

linkedin-monitor config autonomyLevel 2

Communication Style

Drafts are generated using your communication style from USER.md in your Clawdbot workspace.

If you don't have a USER.md, create one with your preferences:

# USER.md

## Communication Style
- Keep messages short (3-4 sentences)
- Be friendly but professional
- No corporate jargon
- Always offer value first

Troubleshooting

"Browser not running"

clawdbot browser start --profile clawd
# Then log into LinkedIn

"LinkedIn logged out"

Open the clawd browser and log back into LinkedIn manually. The browser is usually on your second desktop.

"Duplicate notifications"

linkedin-monitor reset
# This clears state — next check will see all messages as "new"

"Cron not running"

linkedin-monitor disable
linkedin-monitor enable
# Check: crontab -l

"Watchdog alert: Monitor may be down"

linkedin-monitor health
# Fix whatever's broken, then:
linkedin-monitor check

Files

~/.clawdbot/linkedin-monitor/
├── config.json          # Your settings
├── state/
│   └── messages.json    # Seen message IDs
└── logs/
    └── activity.log     # Activity history

Uninstall

# Disable cron
linkedin-monitor disable

# Remove the skill
clawdhub uninstall linkedin-monitor

# (Optional) Remove data
rm -rf ~/.clawdbot/linkedin-monitor

Contributing

Found a bug? Have a feature request? Open an issue on GitHub.


License

MIT License — use it however you want.


Credits

Built by Dylan Baker / lilAgents

Part of the Clawdbot ecosystem.

Permissions & Security

Security level L1: Low-risk skills with minimal permissions. Review inputs and outputs before running in production.

Requirements

- `lk` CLI (LinkedIn CLI) — `npm install -g lk` - `jq` (JSON processor) — `brew install jq`

Configuration

Location: `~/.clawdbot/linkedin-monitor/config.json` ```json { "autonomyLevel": 1, "alertChannel": "discord", "alertChannelId": "YOUR_CHANNEL_ID", "calendarLink": "cal.com/yourname", "communicationStyleFile": "USER.md", "timezone": "America/New_York", "schedule": "0 * * * *", "morningDigest": { "enabled": true, "hour": 9, "timezone": "Asia/Bangkok" }, "safetyLimits": { "maxMessagesPerDay": 50, "escalationKeywords": ["angry", "legal", "refund"], "dailyDigest": true } } ```

FAQ

How do I install linkedin-monitor?

Run openclaw add @dylanbaker24/linkedin-monitor in your terminal. This installs linkedin-monitor into your OpenClaw Skills catalog.

Does this skill run locally or in the cloud?

OpenClaw Skills execute locally by default. Review the SKILL.md and permissions before running any skill.

Where can I verify the source code?

The source repository is available at https://github.com/openclaw/skills/tree/main/skills/dylanbaker24/linkedin-monitor. Review commits and README documentation before installing.