Topic Monitor
Monitor topics of interest and proactively alert when important developments occur. Use when the user wants automated monitoring of specific subjects like pr...
Monitor topics of interest and proactively alert when important developments occur. Use when the user wants automated monitoring of specific subjects like pr...
Real data. Real impact.
Emerging
Developers
Per week
Open source
Skills give you superpowers. Install in 30 seconds.
Monitor topics continuously and alert only when something looks relevant.
feedsgithub_repos → https://github.com/{owner}/{repo}/releases.atomrequired_keywords and exclude_keywordspositive, negative, neutral, mixedalert_on_sentiment_shiftpython3 scripts/quick.py "AI Model Releases" python3 scripts/quick.py "OpenClaw Releases" --github-repos "openclaw/openclaw" python3 scripts/quick.py "Security Advisories" --feeds "https://example.com/security.xml"
Then test it:
python3 scripts/monitor.py --dry-run --verbose
Each topic can mix multiple sources:
queryfeedsgithub_reposAll collected results flow into the same pipeline:
Each topic supports these keys:
idnamequerykeywordsfeedsgithub_reposrequired_keywordsexclude_keywordsfrequency → hourly|daily|weeklyimportance_threshold → high|medium|lowchannelscontextalert_onalert_on_sentiment_shiftignore_sourcesboost_sources{ "topics": [ { "id": "openclaw-news", "name": "OpenClaw Updates", "query": "OpenClaw AI assistant update release", "keywords": ["OpenClaw", "release", "update"], "feeds": ["https://example.com/blog/rss.xml"], "github_repos": ["openclaw/openclaw"], "required_keywords": ["release"], "exclude_keywords": ["rumor", "affiliate"], "frequency": "daily", "importance_threshold": "medium", "channels": ["telegram"], "context": "Track product updates and releases", "alert_on": ["keyword_exact_match", "github_release"], "alert_on_sentiment_shift": true, "ignore_sources": [], "boost_sources": ["github.com"] } ] }
required_keywordsAll listed terms must appear in the title/snippet before scoring.
"required_keywords": ["release", "stable"]
exclude_keywordsAny matching term filters the result out before scoring.
"exclude_keywords": ["beta", "rumor", "affiliate"]
This is intentionally simple boolean logic:
python3 scripts/manage_topics.py add "Security Feeds" \ --feeds "https://example.com/rss.xml,https://example.com/atom.xml" \ --keywords "security,CVE,patch"
Discover feeds from a normal website URL:
python3 scripts/manage_topics.py discover-feed https://example.com/blog python3 scripts/monitor.py --discover-feed https://example.com/blog
Add a topic and auto-discover feeds in one step:
python3 scripts/manage_topics.py add "Vendor Blog" \ --discover-feeds "https://example.com/blog" \ --keywords "release,announcement"
Import feed subscriptions from an OPML file:
python3 scripts/manage_topics.py import-opml feeds.opml
Imported topics default to daily / medium unless you override:
python3 scripts/manage_topics.py import-opml feeds.opml --frequency hourly --importance high
Feed polling uses
feedparser and stores per-feed cache data in monitor state:
etaglast-modifiedThat allows efficient conditional requests and avoids reprocessing unchanged feeds.
Track repo releases with:
"github_repos": ["openclaw/openclaw", "anthropics/claude-code"]
These map to GitHub Atom feeds automatically:
https://github.com/openclaw/openclaw/releases.atomhttps://github.com/anthropics/claude-code/releases.atomCLI example:
python3 scripts/manage_topics.py add "CLI Releases" \ --github-repos "openclaw/openclaw,anthropics/claude-code" \ --keywords "release,version"
GitHub release items are labeled clearly in alerts.
Each scored finding also gets a sentiment label:
positivenegativeneutralmixedAlerts and digest entries include that sentiment.
Enable:
"alert_on_sentiment_shift": true
When enabled, a result that changes sentiment versus the topic’s previous sentiment history gets promoted for alerting.
State tracks:
last_sentimentsentiment_historyscripts/manage_topics.py# Add topic python3 scripts/manage_topics.py add "Topic Name" \ --query "search query" \ --keywords "word1,word2" \ --feeds "https://example.com/rss.xml" \ --github-repos "openclaw/openclaw" \ --required-keywords "release" \ --exclude-keywords "beta,rumor"List topics
python3 scripts/manage_topics.py list
Edit topic
python3 scripts/manage_topics.py edit topic-id --feeds "https://example.com/rss.xml"
Discover feeds
python3 scripts/manage_topics.py discover-feed https://example.com/blog
Import OPML
python3 scripts/manage_topics.py import-opml feeds.opml
Test topic
python3 scripts/manage_topics.py test topic-id
scripts/monitor.pypython3 scripts/monitor.py python3 scripts/monitor.py --dry-run python3 scripts/monitor.py --topic openclaw-news --verbose python3 scripts/monitor.py --discover-feed https://example.com/blog
Alerts can now include:
Web, Feed, GitHub Release)Feed support uses Python
feedparser.
Install if needed:
pip3 install feedparser
discover-feed against the site URLfeedparserpython3 scripts/monitor.py --dry-run --verboserequired_keywordsexclude_keywordsimportance_thresholdowner/repo--verboseNo automatic installation available. Please visit the source repository for installation instructions.
View Installation Instructions1,500+ AI skills, agents & workflows. Install in 30 seconds. Part of the Torly.ai family.
© 2026 Torly.ai. All rights reserved.