Want an agent to watch a few blogs without opening every site each day? Blogwatcher turns RSS/Atom entries into a local unread list. steipete/blogwatcher is the OpenClaw skill that tells the agent how to use a command; Hyaxia's blogwatcher Go CLI actually fetches feeds and stores read state. Start with one complete loop—subscribe, scan, inspect links, mark read—before adding scheduling.
Check what you already have
You need an OpenClaw agent that can run terminal commands, a reachable RSS/Atom feed, and Go. The underlying project's current go.mod requires Go 1.24; an older Go installation may need updating before the CLI builds. OpenClaw also ships a same-named skill, so inspect the current environment first:
openclaw skills check
openclaw skills info blogwatcher
If info already finds blogwatcher, there is no reason to install another copy of the same skill. If the check reports a missing blogwatcher binary, you still need the separate CLI. Only if the skill is absent, install the ClawHub v1.0.0 covered here:
openclaw skills install @steipete/blogwatcher --version 1.0.0
Install the underlying CLI on the machine running OpenClaw, then check that the command is available:
go install github.com/Hyaxia/blogwatcher/cmd/blogwatcher@latest
blogwatcher --help
openclaw skills check
If the Go install succeeds but the shell says blogwatcher: command not found, check whether Go's binary directory is on the PATH seen by OpenClaw, then retry blogwatcher --help. @latest selects a CLI release or commit independently of the ClawHub skill's v1.0.0. If CLI flags change later, use the installed version's blogwatcher <command> --help.
First subscription: provide a known Atom feed
Simon Willison's public Atom feed makes a concrete first example. Run these commands in the shell where the CLI is installed. The explicit feed URL avoids relying on homepage feed discovery.
blogwatcher add "Simon Willison" https://simonwillison.net --feed-url https://simonwillison.net/atom/everything/
blogwatcher blogs
blogwatcher scan "Simon Willison"
blogwatcher articles --blog "Simon Willison"
blogs should show the subscription. scan reports how many entries it found and how many were new to the local database. articles --blog should show unread titles, IDs, and original links for that source. Open a link and read it at the publisher's site; then run blogwatcher read 12, replacing 12 with that article's actual ID. Run the filtered articles command again to check that it has left the unread list. To inspect both read and unread records, use blogwatcher articles --all --blog "Simon Willison".
For a first OpenClaw request, you can say:
Use blogwatcher to subscribe to Simon Willison's Atom feed at https://simonwillison.net/atom/everything/. Confirm the subscription, scan it, and give me up to five unread titles with their original links. Do not mark anything read yet. If the list is empty, check the subscription and scan status before concluding there are no posts.
On the first scan, “New” means not previously recorded in your local database; it does not mean published today. Check the article date and original page before treating an entry as fresh news. By default, the CLI keeps subscriptions and read state in local SQLite at ~/.blogwatcher/blogwatcher.db. That is not cross-device synchronization or a way to bypass a publisher's paywall.
Turn the loop into a daily review
Begin with two or three high-value feeds. Each time you run blogwatcher scan, review blogwatcher articles, follow the original links, and mark items read only after reviewing them. Use --blog "Name" to keep sources separate. Do not use read-all as deduplication: it changes local read state for a batch. The CLI's stored-article logic handles repeated URLs separately.
The public openclaw-newsroom project uses blogwatcher as its RSS intake, then runs additional scripts for keyword filtering, deduplication, and editorial selection. If you want a morning briefing, that is a useful division of labor: let blogwatcher collect candidate links and let your own process decide what deserves attention. This skill alone does not rank trends, summarize full articles, send notifications, or schedule itself. Those require separate agent tasks or scripts.
If something goes wrong
- The skill appears, but the agent cannot use it. Run
openclaw skills checkto distinguish a missingblogwatcherbinary from a missing terminal tool or a skill not visible to the selected agent. Installing skill instructions does not supply the Go executable. - The scan finds nothing. Confirm the source with
blogwatcher blogs, then runblogwatcher scan "Name". If the homepage exposes no discoverable feed, add a known feed with--feed-urlas above. HTML fallback requires an article-link--scrape-selectorand is still subject to site access limits. articlesis empty even though you saw posts before. The default list shows unread items only. Useblogwatcher articles --allto tell a read-state issue from a scan with no stored entries.- You want to remove a mistaken subscription.
blogwatcher remove "Name"also deletes that blog's locally stored articles. Confirm the name first; removal is not a lossless pause button.