Blogwatcher — Monitor blogs and RSS/Atom feeds via blogwatcher-cli tool
Blogwatcher
Section titled “Blogwatcher”Monitor blogs and RSS/Atom feeds via blogwatcher-cli tool.
Skill metadata
Section titled “Skill metadata”| Source | Bundled (installed by default) |
| Path | skills/research/blogwatcher |
| Version | 2.0.0 |
| Author | JulienTant (fork of Hyaxia/blogwatcher) |
| License | MIT |
| Tags | RSS, Blogs, Feed-Reader, Monitoring |
Reference: full SKILL.md
Section titled “Reference: full SKILL.md”The following is the complete skill definition that Hermes loads when this skill is triggered. This is what the agent sees as instructions when the skill is active.
Blogwatcher
Section titled “Blogwatcher”Track blog and RSS/Atom feed updates with the blogwatcher-cli tool. Supports automatic feed discovery, HTML scraping fallback, OPML import, and read/unread article management.
Installation
Section titled “Installation”Pick one method:
- Go:
go install github.com/JulienTant/blogwatcher-cli/cmd/blogwatcher-cli@latest - Docker:
docker run --rm -v blogwatcher-cli:/data ghcr.io/julientant/blogwatcher-cli - Binary (Linux amd64):
curl -sL https://github.com/JulienTant/blogwatcher-cli/releases/latest/download/blogwatcher-cli_linux_amd64.tar.gz | tar xz -C /usr/local/bin blogwatcher-cli - Binary (Linux arm64):
curl -sL https://github.com/JulienTant/blogwatcher-cli/releases/latest/download/blogwatcher-cli_linux_arm64.tar.gz | tar xz -C /usr/local/bin blogwatcher-cli - Binary (macOS Apple Silicon):
curl -sL https://github.com/JulienTant/blogwatcher-cli/releases/latest/download/blogwatcher-cli_darwin_arm64.tar.gz | tar xz -C /usr/local/bin blogwatcher-cli - Binary (macOS Intel):
curl -sL https://github.com/JulienTant/blogwatcher-cli/releases/latest/download/blogwatcher-cli_darwin_amd64.tar.gz | tar xz -C /usr/local/bin blogwatcher-cli
All releases: https://github.com/JulienTant/blogwatcher-cli/releases
Docker with persistent storage
Section titled “Docker with persistent storage”By default the database lives at ~/.blogwatcher-cli/blogwatcher-cli.db. In Docker this is lost on container restart. Use BLOGWATCHER_DB or a volume mount to persist it:
# Named volume (simplest)docker run --rm -v blogwatcher-cli:/data -e BLOGWATCHER_DB=/data/blogwatcher-cli.db ghcr.io/julientant/blogwatcher-cli scan
# Host bind mountdocker run --rm -v /path/on/host:/data -e BLOGWATCHER_DB=/data/blogwatcher-cli.db ghcr.io/julientant/blogwatcher-cli scanMigrating from the original blogwatcher
Section titled “Migrating from the original blogwatcher”If upgrading from Hyaxia/blogwatcher, move your database:
mv ~/.blogwatcher/blogwatcher.db ~/.blogwatcher-cli/blogwatcher-cli.dbThe binary name changed from blogwatcher to blogwatcher-cli.
Common Commands
Section titled “Common Commands”Managing blogs
Section titled “Managing blogs”- Add a blog:
blogwatcher-cli add "My Blog" https://example.com - Add with explicit feed:
blogwatcher-cli add "My Blog" https://example.com --feed-url https://example.com/feed.xml - Add with HTML scraping:
blogwatcher-cli add "My Blog" https://example.com --scrape-selector "article h2 a" - List tracked blogs:
blogwatcher-cli blogs - Remove a blog:
blogwatcher-cli remove "My Blog" --yes - Import from OPML:
blogwatcher-cli import subscriptions.opml
Scanning and reading
Section titled “Scanning and reading”- Scan all blogs:
blogwatcher-cli scan - Scan one blog:
blogwatcher-cli scan "My Blog" - List unread articles:
blogwatcher-cli articles - List all articles:
blogwatcher-cli articles --all - Filter by blog:
blogwatcher-cli articles --blog "My Blog" - Filter by category:
blogwatcher-cli articles --category "Engineering" - Mark article read:
blogwatcher-cli read 1 - Mark article unread:
blogwatcher-cli unread 1 - Mark all read:
blogwatcher-cli read-all - Mark all read for a blog:
blogwatcher-cli read-all --blog "My Blog" --yes
Environment Variables
Section titled “Environment Variables”All flags can be set via environment variables with the BLOGWATCHER_ prefix:
| Variable | Description |
|---|---|
BLOGWATCHER_DB | Path to SQLite database file |
BLOGWATCHER_WORKERS | Number of concurrent scan workers (default: 8) |
BLOGWATCHER_SILENT | Only output “scan done” when scanning |
BLOGWATCHER_YES | Skip confirmation prompts |
BLOGWATCHER_CATEGORY | Default filter for articles by category |
Example Output
Section titled “Example Output”$ blogwatcher-cli blogsTracked blogs (1):
xkcd URL: https://xkcd.com Feed: https://xkcd.com/atom.xml Last scanned: 2026-04-03 10:30$ blogwatcher-cli scanScanning 1 blog(s)...
xkcd Source: RSS | Found: 4 | New: 4
Found 4 new article(s) total!$ blogwatcher-cli articlesUnread articles (2):
[1] [new] Barrel - Part 13 Blog: xkcd URL: https://xkcd.com/3095/ Published: 2026-04-02 Categories: Comics, Science
[2] [new] Volcano Fact Blog: xkcd URL: https://xkcd.com/3094/ Published: 2026-04-01 Categories: Comics- Auto-discovers RSS/Atom feeds from blog homepages when no
--feed-urlis provided. - Falls back to HTML scraping if RSS fails and
--scrape-selectoris configured. - Categories from RSS/Atom feeds are stored and can be used to filter articles.
- Import blogs in bulk from OPML files exported by Feedly, Inoreader, NewsBlur, etc.
- Database stored at
~/.blogwatcher-cli/blogwatcher-cli.dbby default (override with--dborBLOGWATCHER_DB). - Use
blogwatcher-cli <command> --helpto discover all flags and options.