webhook-promo-scheduler
Schedule and send promo/alert messages to a Discord webhook URL with an anti-spam ledger.
安装 / 下载方式
TotalClaw CLI推荐
totalclaw install clawskills:clawskills~marcia-assistant-webhook-promo-schedulercURL直接下载,无需登录
curl -fsSL https://skills.taituai.com/api/skills/clawskills%3Aclawskills~marcia-assistant-webhook-promo-scheduler/file -o marcia-assistant-webhook-promo-scheduler.md## webhook-promo-scheduler
Schedule and send promo/alert messages to a Discord webhook URL with an anti-spam ledger.
### What it does
- Posts to a Discord webhook (JSON payload with `content`)
- Maintains a JSONL ledger to enforce **max 1 successful post per day per channel**
- Provides a rotation mode that cycles through a message list
- Supports `--dry-run` so you can validate cadence/ledger without sending anything
### Positioning (best angle)
- Ship updates without becoming a spammer (or leaking a webhook): strict cadence + audit trail.
### Files
- `scripts/post_webhook.py` : Discord webhook POST helper (stdlib only)
- `scripts/ledger.py` : JSONL ledger helpers (stdlib only)
- `scripts/promo_scheduler.py` : CLI tool (stdlib only)
### Ledger
- Default: `~/.openclaw/webhook-promo-ledger.jsonl`
- Override: `--ledger-path /path/to/ledger.jsonl`
- JSONL fields (per line): `date`, `channel`, `status`, `hash`
### Safety
- The CLI **refuses to print** the webhook URL.
- Logs redact any webhook URL if it would appear.
- Recommended: keep the webhook in a private channel, rotate it if leaked, and use `--dry-run` before enabling live sends.
### FAQ (security)
**Q: This exposes a Discord webhook — is that dangerous?**
A: Treat it like a password. This tool won’t print it, supports secret injection, and has `--dry-run` + a ledger so you can validate behavior before turning on live posting. If you want zero direct exposure, put a relay (Cloudflare Worker / Supabase Edge Function) in front and keep the real webhook private.
### Usage
One-shot post:
```bash
python3 {baseDir}/scripts/promo_scheduler.py post \
--webhook-url <URL> \
--channel openclaw-discord \
--message "Hello from OpenClaw!"
```
Draft rotation:
```bash
python3 {baseDir}/scripts/promo_scheduler.py rotate \
--webhook-url <URL> \
--channel openclaw-discord \
--messages-file messages.txt
```
`messages.txt` format:
- One message per non-empty line
- Lines starting with `#` are ignored