linkedin-monitor
# 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
```
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"
```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
- `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
```
标签
skill
ai