Sync from public repo. Every run now saves the complete briefing as a topic-named .md file to ~/Documents/Last30Days/. Credit @devin_explores. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
7.7 KiB
Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
2.9.1 - 2026-03-05
Highlights
Auto-save research briefings to ~/Documents/Last30Days/ as topic-named .md files. Every run now builds a personal research library automatically - no more manual copy-paste.
Added
- Auto-save complete research briefings (synthesis, stats, follow-up suggestions) to
~/Documents/Last30Days/{topic-slug}.mdafter every run - Kebab-case filename generation from topic (e.g., "Claude Code skills" ->
claude-code-skills.md) - Duplicate topic handling: appends date suffix instead of overwriting (e.g.,
claude-code-skills-2026-03-05.md) - Agent mode (
--agent) also saves research files - Brief confirmation after save: "Saved to ~/Documents/Last30Days/{slug}.md"
Credits
- @devin_explores -- Inspired this feature by sharing their workflow of saving every last30days run into organized .md files (PR #51)
2.9.0 - 2026-03-05
Highlights
ScrapeCreators Reddit as the default backend (one SCRAPECREATORS_API_KEY covers Reddit + TikTok + Instagram), smart subreddit discovery with relevance-weighted scoring, and top comments elevated with 10% scoring weight and prominent display.
Added
- ScrapeCreators Reddit backend (
scripts/lib/reddit.py) — keyword search, subreddit discovery, comment enrichment, all viaapi.scrapecreators.com - Smart subreddit discovery with relevance-weighted scoring: frequency × recency × topic-word match, replacing pure frequency count
UTILITY_SUBSblocklist to filter noise subreddits (r/tipofmytongue, r/whatisthisthing, etc.) from discovery results- Top comment scoring: 10% weight in engagement formula via
log1p(top_comment_score) - Top comment rendering:
💬 Top commentlines with upvote counts in compact and full report output - Comment excerpt length increased from 300 → 400 chars;
comment_insightslimit raised from 7 → 10
Changed
primaryEnvswitched fromOPENAI_API_KEYtoSCRAPECREATORS_API_KEY— one key now powers Reddit, TikTok, and Instagram- Reddit engagement scoring formula:
0.55/0.40/0.05(score/comments/ratio) →0.50/0.35/0.05/0.10(score/comments/ratio/top-comment) - SKILL.md synthesis instructions updated to emphasize quoting top comments
Fixed
- Utility subreddit noise in discovery (e.g., r/tipofmytongue appearing for unrelated topics)
- Reddit search no longer requires
OPENAI_API_KEY— ScrapeCreators API handles search directly
2.8.0 - 2026-03-04
Highlights
Instagram Reels as the 8th signal source, TikTok migrated from Apify to ScrapeCreators API, and SKILL.md quality improvements. One API key (SCRAPECREATORS_API_KEY) now covers both TikTok and Instagram.
Added
- Instagram Reels as 8th research source via ScrapeCreators API — keyword search, engagement metrics (views, likes, comments), spoken-word transcript extraction (
scripts/lib/instagram.py) InstagramItemdataclass, normalization, scoring (45% relevance / 25% recency / 30% engagement), deduplication, cross-source linking, and rendering- Instagram in SKILL.md: stats template (
📸 Instagram:), citation priority, item format description, output footer - URL-to-name extraction examples in SKILL.md for cleaner web source display
--search=instagramflag support
Changed
- TikTok backend migrated from Apify to ScrapeCreators API (
api.scrapecreators.com) APIFY_API_TOKENreplaced bySCRAPECREATORS_API_KEYin config- SKILL.md version bumped to v2.8
- WebSearch citation instruction strengthened to prevent trailing Sources: blocks
- Security section updated: Apify → ScrapeCreators references
Fixed
- Web stats line showing full URLs instead of plain domain names
- Trailing "Sources:" block appearing after skill invitation (WebSearch tool mandate conflict)
- Instagram/TikTok not running in web-only mode when
--search=instagramused without Reddit/X $ARGUMENTSquoting in SKILL.md for correct flag forwarding
2.1.0 - 2026-02-15
Highlights
Three headline features: watchlists for always-on bots, YouTube transcripts as a 4th source, and Codex CLI compatibility. Plus bundled X search with no external CLI needed.
Added
- Open-class skill with watchlists, briefings, and history modes (SQLite-backed, FTS5 full-text search, WAL mode) (
feat(open)) - YouTube as a 4th research source via yt-dlp -- search, view counts, and auto-generated transcript extraction (
feat: Add YouTube) - OpenAI Codex CLI compatibility -- install to
~/.agents/skills/last30days, invoke with$last30days(feat: Add Codex CLI) - Bundled X search -- vendored subset of Bird's Twitter GraphQL client (MIT, originally by @steipete), no external CLI needed (
v2.1: Bundle Bird X search) - Native web search backends: Parallel AI, Brave Search, OpenRouter/Perplexity Sonar Pro (
feat(engine)) --diagnoseflag for checking available sources and authentication status--storeflag for SQLite accumulation (open variant)- Conversational first-run experience (NUX) with dynamic source status (
feat(nux))
Changed
- Smarter query construction -- strips noise words, auto-retries with shorter queries when X returns 0 results
- Two-phase search architecture -- Phase 1 discovers entities (@handles, r/subreddits), Phase 2 drills into them
- Reddit JSON enrichment -- real upvotes, comments, and upvote ratio from reddit.com/.json endpoint
- Engagement-weighted scoring: relevance 45%, recency 25%, engagement 30% (log1p dampening)
- Model auto-selection with 7-day cache and fallback chain (gpt-4.1 -> gpt-4o -> gpt-4o-mini)
--days=Nconfigurable lookback flag (thanks @jonthebeef, #18)- Model fallback for unverified orgs (thanks @levineam, #16)
- Marketplace plugin support via
.claude-plugin/plugin.json(inspired by @galligan, #1)
Fixed
- YouTube timeout increased to 90s, Reddit 429 rate limit fail-fast
- YouTube soft date filter -- keeps evergreen content instead of filtering to 0 results
- Eager import crash in
__init__.pythat broke Codex environments - Reddit future timeout (same pattern as YouTube timeout bug)
- Process cleanup on timeout/kill -- tracks child PIDs for clean shutdown
- Windows Unicode fix for cp1252 emoji crash (thanks @JosephOIbrahim, #17)
- X search returning 0 results on popular topics due to over-specific queries
New Contributors
- @JosephOIbrahim -- Windows Unicode fix (#17)
- @levineam -- Model fallback for unverified orgs (#16)
- @jonthebeef --
--days=Nconfigurable lookback (#18)
Credits
- @steipete -- Bird CLI (vendored X search) and yt-dlp/summarize inspiration for YouTube transcripts
- @galligan -- Marketplace plugin inspiration
- @hutchins -- Pushed for YouTube feature
1.0.0 - 2026-01-15
Initial public release. Reddit + X search via OpenAI Responses API and xAI API.