home / skills / openclaw / skills / sec-filing-watcher

sec-filing-watcher skill

/skills/in-liberty420/sec-filing-watcher

This skill monitors SEC filings and delivers concise Telegram or Slack summaries via Clawdbot, helping you stay updated on new disclosures.

npx playbooks add skill openclaw/skills --skill sec-filing-watcher

Review the files below or copy the command above to add this skill to your agents.

Files (5)
SKILL.md
2.7 KB
---
name: sec-filing-watcher
description: Monitor SEC EDGAR for new filings and get Telegram/Slack summaries via Clawdbot. Use when setting up SEC filing alerts, adding/removing tickers to monitor, configuring form types, starting/stopping the watcher, or troubleshooting filing notifications.
---

# SEC Filing Watcher

Monitors SEC EDGAR for new filings from a watchlist of tickers. When a new filing appears, notifies Clawdbot which fetches, summarizes, and sends to Telegram.

## Quick Setup

### 1. Create watchlist

```bash
cp assets/watchlist.example.json watchlist.json
# Edit watchlist.json with your tickers
```

### 2. Configure webhook

Edit `scripts/watcher.js` CONFIG section:
- `webhookUrl`: Your Clawdbot hooks URL (default: `http://localhost:18789/hooks/agent`)
- `webhookToken`: Your hook token (find in clawdbot.json under `hooks.token`)

### 3. Test run

```bash
node scripts/watcher.js
```

First run seeds existing filings (no notifications). Second run checks for new filings.

### 4. Schedule (every 15 min)

**macOS:**
```bash
cp assets/com.sec-watcher.plist ~/Library/LaunchAgents/
# Edit the plist to set correct paths
launchctl load ~/Library/LaunchAgents/com.sec-watcher.plist
```

**Linux:**
```bash
crontab -e
# Add: */15 * * * * /usr/bin/node /path/to/scripts/watcher.js >> /path/to/watcher.log 2>&1
```

## Managing Tickers

Add or remove tickers in `watchlist.json`:

```json
{
  "tickers": ["AAPL", "MSFT", "TSLA"],
  "formTypes": ["10-K", "10-Q", "8-K", "4"]
}
```

New tickers are auto-seeded (existing filings won't spam you).

See `references/form-types.md` for common SEC form types.

## Commands

**Check status:**
```bash
launchctl list | grep sec-watcher
```

**View logs:**
```bash
cat ~/clawd/sec-filing-watcher/watcher.log
```

**Stop:**
```bash
launchctl unload ~/Library/LaunchAgents/com.sec-watcher.plist
```

**Start:**
```bash
launchctl load ~/Library/LaunchAgents/com.sec-watcher.plist
```

**Manual run:**
```bash
node scripts/watcher.js
```

## Files

| File | Purpose |
|------|---------|
| `scripts/watcher.js` | Main watcher script |
| `watchlist.json` | Your tickers and form types |
| `state.json` | Tracks seen filings (auto-created) |
| `watcher.log` | Output log (if configured) |

## Troubleshooting

**No notifications:**
- Check `state.json` exists (first run seeds, second run notifies)
- Verify webhook URL and token in watcher.js CONFIG
- Check Clawdbot is running: `clawdbot status`

**SEC blocking requests:**
- Script uses proper User-Agent header
- If blocked, wait 10 minutes (SEC rate limit cooldown)

**Duplicate notifications:**
- Check `state.json` isn't corrupted
- Delete `state.json` to re-seed (will seed all existing filings again)

Overview

This skill monitors SEC EDGAR for new filings from a configurable list of tickers and pushes summaries to Clawdbot for delivery to Telegram or Slack. It seeds existing filings on first run and only notifies on subsequent new filings. The watcher is lightweight, runs on a schedule (cron or launchd), and stores seen filings in state.json to avoid duplicates.

How this skill works

The watcher polls EDGAR for configured tickers and form types, compares results to state.json, and posts new filings to a Clawdbot webhook with your webhook URL and token. Clawdbot fetches the filing, generates a summary, and delivers it to Telegram or Slack. You can run the script manually or schedule it every 15 minutes via cron (Linux) or launchd (macOS).

When to use it

  • Set up SEC filing alerts for a portfolio of tickers
  • Add or remove tickers or change which form types to monitor
  • Start or stop the watcher service on macOS or Linux
  • Troubleshoot missing or duplicate notifications
  • Test webhook integration with Clawdbot before production use

Best practices

  • Keep watchlist.json current and include only tickers you actively monitor
  • Configure webhookUrl and webhookToken in scripts/watcher.js and verify Clawdbot is running
  • Run the watcher manually once to seed state.json, then schedule periodic runs
  • Respect SEC rate limits; use the provided User-Agent and do not poll more frequently than recommended
  • Back up state.json before manual edits to avoid duplicate notifications

Example use cases

  • Receive Telegram summaries when a monitored company files 10-Ks, 10-Qs, or 8-Ks
  • Add new IPO tickers to watchlist.json to start monitoring from the next run
  • Use cron to run the watcher every 15 minutes for near-real-time alerts
  • Debug delivery issues by checking watcher.log and clawdbot status
  • Temporarily stop notifications via launchctl unload or by disabling the cron job

FAQ

Why did I get no notifications after installing?

The first run seeds state.json and does not notify. Run the watcher a second time or wait for the scheduled run to see notifications for new filings.

I see duplicate notifications; what should I check?

Verify state.json is not corrupted. If needed delete state.json to re-seed (this will prevent immediate notifications for existing filings until new ones appear). Also confirm the webhook wasn't receiving retries from Clawdbot.