Install
openclaw skills install sec-daily-digestFetches latest articles from CyberSecurityRSS OPML feeds, applies AI/rule-based scoring, merges CVE and major vulnerability events, and generates a bilingual...
openclaw skills install sec-daily-digestGenerate a daily cybersecurity digest for researchers from CyberSecurityRSS OPML feeds and Twitter/X security KOL accounts.
Trigger command: /sec-digest.
openai|gemini|claude|ollama) or --dry-run.# Basic (RSS only, no AI scoring)
bun scripts/sec-digest.ts --dry-run --output ./output/digest.md
# With AI scoring + Twitter KOLs
TWITTERAPI_IO_KEY=your-key bun scripts/sec-digest.ts \
--provider claude --opml tiny --hours 48 --output ./output/digest.md
# Weekly mode (168h window)
bun scripts/sec-digest.ts --mode weekly --provider openai --output ./output/weekly.md
# With email delivery (requires gog)
bun scripts/sec-digest.ts --provider claude --email me@example.com --output ./output/digest.md
# With full text enrichment
bun scripts/sec-digest.ts --provider claude --enrich --output ./output/digest.md
| Flag | Description | Default |
|---|---|---|
--provider <id> | AI provider: openai|gemini|claude|ollama | openai |
--opml <profile> | OPML profile: tiny|full | tiny |
--hours <n> | Time window in hours | 48 |
--mode <daily|weekly> | Shortcut: daily=48h, weekly=168h | — |
--top-n <n> | Max articles to select | 20 |
--output <path> | Output markdown file path | ./output/sec-digest-YYYYMMDD.md |
--dry-run | Rule-based scoring only (no AI calls) | false |
--no-twitter | Disable Twitter/X KOL fetching | false |
--email <addr> | Send digest via gog to address | — |
--enrich | Fetch full text for articles | false |
--help | Show help | — |
scripts/sec-digest.tssrc/pipeline/run.ts~/.sec-daily-digest/~/.sec-daily-digest/config.yaml~/.sec-daily-digest/sources.yaml~/.sec-daily-digest/health.json~/.sec-daily-digest/archive/~/.sec-daily-digest/opml/tiny.opml~/.sec-daily-digest/opml/CyberSecurityRSS.opmlNo cached OPML available and remote update check failed.).openai; explicit --provider overrides config.0.5/0.5).AI发展, 安全动态, and 漏洞专报.output_language exists in config, but current implementation outputs fixed bilingual-style markdown; do not assume runtime language switching.🔐 Security KOL Updates) appears only when tweets are fetched.Twitter KOL accounts are configured in ~/.sec-daily-digest/sources.yaml (auto-created on first run with 15 default security researchers).
Taviso, GossiTheDog, SwiftOnSecurity, MalwareTechBlog, briankrebs, JohnLaTwC, and 9 others.
sources:
- id: taviso
type: twitter
name: "Tavis Ormandy / Google Project Zero"
handle: taviso
enabled: true
priority: true
topics:
- security
# Disable a default source:
- id: thegrugq
enabled: false
# Add a new custom source:
- id: myresearcher
type: twitter
name: "My Researcher"
handle: myresearcher
enabled: true
priority: false
topics:
- security
| Env Var Set | Backend Used |
|---|---|
TWITTERAPI_IO_KEY | twitterapi.io (preferred, 5 QPS) |
X_BEARER_TOKEN only | Official Twitter API v2 (5 concurrent) |
| Both | twitterapi.io |
| Neither | Twitter disabled (silent) |
TWITTER_API_BACKEND=official | Force official API |
Articles seen in the past 7 days receive a −5 score penalty (not removed, just deprioritized). Archive files are stored in ~/.sec-daily-digest/archive/YYYY-MM-DD.json and automatically cleaned after 90 days.
Each run records fetch success/failure for every source. Sources failing >50% of checks (with ≥2 checks) appear in a ⚠️ Source Health Warnings section at the bottom of the digest. Health data lives in ~/.sec-daily-digest/health.json.
The --email flag sends the digest via gogcli:
# Install (macOS)
brew install steipete/tap/gogcli
gog auth login # one-time OAuth setup
# Send digest
bun scripts/sec-digest.ts --provider claude \
--email me@example.com --output /tmp/digest.md
Log output:
[sec-digest] email=sent to me@example.com
# or
[sec-digest] email=failed: gog not found in PATH. Install: ...
--enrich fetches article full text before AI scoring (improves classification and summarization quality). Skips paywalled/social domains (Twitter, Reddit, GitHub, YouTube, NYT, Bloomberg, WSJ, FT).
# Daily at 07:00
0 7 * * * cd /path/to/sec-daily-digest && \
bun scripts/sec-digest.ts --mode daily --output ~/digests/sec-$(date +\%Y\%m\%d).md \
2>&1 | tee -a ~/.sec-daily-digest/cron.log
# Weekly on Monday at 08:00
0 8 * * 1 cd /path/to/sec-daily-digest && \
bun scripts/sec-digest.ts --mode weekly --output ~/digests/weekly-$(date +\%Y\%m\%d).md \
2>&1 | tee -a ~/.sec-daily-digest/cron.log
OPENAI_API_KEY is required, GEMINI_API_KEY is required, ANTHROPIC_API_KEY is required).--dry-run when no provider credentials are available.TWITTERAPI_IO_KEY or X_BEARER_TOKEN.[sec-digest] provider=..., [sec-digest] cache_fallback=true|false, [sec-digest] output=..., and [sec-digest] stats feeds=... articles=... recent=... selected=... vuln_events=... twitter_kols=....~/.sec-daily-digest/archive/YYYY-MM-DD.json is written after each run.~/.sec-daily-digest/health.json is updated after each run.For full installation and extended usage notes, see README.md and README.zh-CN.md.