OpenClaw adaptation of @mvanhorn's last30days skill. Research any topic from the last 30 days across Reddit, X, YouTube, TikTok, Instagram, Hacker News, Polymarket, and web. Includes watchlists, briefing generation, and historical query mode.
Install
npx skillscat add keylimesoda/last30days-openclaw Install via the SkillsCat registry.
SKILL.md
last30days-openclaw
Attribution: This skill is an OpenClaw adaptation of @mvanhorn's MIT-licensed project: https://github.com/mvanhorn/last30days-skill.
What is original vs adapted
Original (from @mvanhorn)
- Core Python research engine (
scripts/last30days.py+scripts/lib/*) - Multi-source data collection and ranking logic
- Watchlist, briefing, and history database architecture
- Vendored
bird-searchX client and source connectors
OpenClaw adaptation (this folder)
- OpenClaw skill packaging (
skill.json, thisSKILL.md) - OpenClaw-first storage paths under
~/.openclaw/workspace - OpenClaw secrets file convention:
~/.openclaw/workspace/.secrets/last30days.env - OpenClaw cron helper:
scripts/openclaw_watchlist_run.sh - Setup helper for secrets:
scripts/setup_openclaw_env.sh
Runtime paths (OpenClaw defaults)
- Secrets:
~/.openclaw/workspace/.secrets/last30days.env - DB:
~/.openclaw/workspace/data/last30days/research.db - Briefings:
~/.openclaw/workspace/data/last30days/briefs/ - Output artifacts:
~/.openclaw/workspace/data/last30days/out/
Setup
cd ~/.openclaw/workspace/skills/last30days-openclaw
./scripts/setup_openclaw_env.sh
python3 scripts/last30days.py --diagnosemacOS X-cookie support (Bird)
The vendored Bird client reads browser cookies on macOS.
- Log into x.com in Safari/Chrome/Firefox
- Verify auth:
node scripts/lib/vendor/bird-search/bird-search.mjs --whoamiIf that fails, set AUTH_TOKEN + CT0 in the secrets file.
Command routing
Use first token to route mode:
watch ...→ watchlist managementbriefing ...→ briefing generationhistory ...→ history/FTS queries- anything else → one-shot research
One-shot research (default mode)
Run via OpenClaw exec:
cd ~/.openclaw/workspace/skills/last30days-openclaw
python3 scripts/openclaw_run.py "TOPIC"
# equivalent engine call:
# python3 scripts/last30days.py "TOPIC" --emit=compact --no-native-web- Use
--quickor--deepfor depth. - Use
--storeto persist findings. - Use
--search reddit,x,youtube,tiktok,instagram,hn,polymarket,webfor source subsets.
Watchlist mode
python3 scripts/watchlist.py add "TOPIC"
python3 scripts/watchlist.py list
python3 scripts/watchlist.py run-one "TOPIC"
python3 scripts/watchlist.py run-allOpenClaw cron integration
Use this wrapper in a scheduled exec/cron job:
~/.openclaw/workspace/skills/last30days-openclaw/scripts/openclaw_watchlist_run.shThis writes logs to:~/.openclaw/workspace/logs/last30days-watchlist.log
Briefing mode
python3 scripts/briefing.py generate
python3 scripts/briefing.py generate --weekly
python3 scripts/briefing.py show --date YYYY-MM-DDHistory mode
python3 scripts/store.py query "TOPIC" --since 7d
python3 scripts/store.py search "QUERY"
python3 scripts/store.py trending
python3 scripts/store.py statsNotes
- If native web keys are absent, run with
--no-native-weband use OpenClaw'sweb_searchtool for web supplementation. - Preserve source weighting in synthesis: Reddit/X/YouTube/TikTok/Instagram/HN/Polymarket signals first, web second.
- Never remove attribution to @mvanhorn when republishing this adaptation.