1.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.
Skill Snapshot
| 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. OpenClaw Skills integration. |
| owner | dylanbaker24 |
| repository | dylanbaker24/linkedin-monitor |
| language | Markdown |
| license | MIT |
| topics | |
| security | L1 |
| install | openclaw add @dylanbaker24/linkedin-monitor |
| last updated | Feb 7, 2026 |
Maintainer

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
| Level | Name | Behavior |
|---|---|---|
| 0 | Monitor Only | Alerts to new messages only |
| 1 | Draft + Approve | Drafts replies, waits for approval |
| 2 | Auto-Reply Simple | Auto-handles acknowledgments, scheduling |
| 3 | Full Autonomous | Replies 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
lkCLI (LinkedIn CLI) —npm install -g lkjq(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
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.
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
| Command | Description |
|---|---|
linkedin-monitor setup | Interactive setup wizard |
linkedin-monitor health | Check dependencies and auth |
linkedin-monitor check | Run one monitoring 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 activity logs |
linkedin-monitor reset | Clear 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-issend all— Send all pending draftsedit John Hey John, let's set up a call...— Edit and sendskip 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
| Channel | alertChannel | alertTarget |
|---|---|---|
| Discord | discord | Channel ID |
| Telegram | telegram | Chat ID |
| Slack | slack | Channel ID or name |
whatsapp | Chat ID or phone | |
| Signal | signal | Phone number |
Autonomy Levels
| Level | Behavior |
|---|---|
| 0 | Monitor only — alerts, no drafts |
| 1 | Draft + Approve — drafts replies, waits for your OK |
| 2 | Auto-reply simple — handles "thanks", scheduling automatically |
| 3 | Full 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.
