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
bash
# 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
bash
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
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
code
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:
code
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"
bash
lk auth login linkedin-monitor health
"No messages found"
bash
linkedin-monitor check --debug
Duplicate notifications
bash
linkedin-monitor reset # Clear state linkedin-monitor check # Fresh start
Dependencies
- •
lkCLI (LinkedIn CLI) —npm install -g lk - •
jq(JSON processor) —brew install jq
Files
code
~/.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