Hermes-agent blogwatcher
Monitor blogs and RSS/Atom feeds for updates using the blogwatcher-cli tool. Add blogs, scan for new articles, track read status, and filter by category.
install
source · Clone the upstream repo
git clone https://github.com/NousResearch/hermes-agent
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/NousResearch/hermes-agent "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/research/blogwatcher" ~/.claude/skills/nousresearch-hermes-agent-blogwatcher-3249c5 && rm -rf "$T"
manifest:
skills/research/blogwatcher/SKILL.mdsource content
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
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
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 mount docker run --rm -v /path/on/host:/data -e BLOGWATCHER_DB=/data/blogwatcher-cli.db ghcr.io/julientant/blogwatcher-cli scan
Migrating from the original blogwatcher
If upgrading from
Hyaxia/blogwatcher, move your database:
mv ~/.blogwatcher/blogwatcher.db ~/.blogwatcher-cli/blogwatcher-cli.db
The binary name changed from
blogwatcher to blogwatcher-cli.
Common Commands
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
- 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
All flags can be set via environment variables with the
BLOGWATCHER_ prefix:
| Variable | Description |
|---|---|
| Path to SQLite database file |
| Number of concurrent scan workers (default: 8) |
| Only output "scan done" when scanning |
| Skip confirmation prompts |
| Default filter for articles by category |
Example Output
$ blogwatcher-cli blogs Tracked blogs (1): xkcd URL: https://xkcd.com Feed: https://xkcd.com/atom.xml Last scanned: 2026-04-03 10:30
$ blogwatcher-cli scan Scanning 1 blog(s)... xkcd Source: RSS | Found: 4 | New: 4 Found 4 new article(s) total!
$ blogwatcher-cli articles Unread 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
Notes
- Auto-discovers RSS/Atom feeds from blog homepages when no
is provided.--feed-url - Falls back to HTML scraping if RSS fails and
is configured.--scrape-selector - 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
by default (override with~/.blogwatcher-cli/blogwatcher-cli.db
or--db
).BLOGWATCHER_DB - Use
to discover all flags and options.blogwatcher-cli <command> --help