Recipes
Practical end-to-end workflows. Each one is a short sequence of commands you can copy. They assume the neurowire CLI (and, where noted, neurowire-web) are installed. See Installation.
Watch a site and push new posts to Slack
Long-poll a mesh and deliver only the entries you have not seen yet to a Slack incoming webhook. The --state file makes restarts skip already-reported items.
neurowire --mesh ai-news.json \
--watch --interval 15m \
--state ~/.neurowire-seen.json \
--sink https://hooks.slack.com/services/T000/B000/XXXXSwap the sink URL for a Discord webhook (https://discord.com/api/webhooks/...) or any generic endpoint (which receives the JSON Feed as application/feed+json). The sink kind is auto-detected from the URL. See CLI sinks.
Build a daily HTML news page from a construct
A construct bundles several meshes. Render it to a self-contained page (all CSS inline, no external requests).
Single combined page (every entry tagged by its mesh):
neurowire-web --construct daily.json --combined --out public/index.htmlMulti-page "repo of feeds" (an overview plus one page per mesh) into a directory:
neurowire-web --construct daily.json --out public/Limit to recent items with --since or --today:
neurowire-web --construct daily.json --combined --since 24h --out public/index.htmlMigrate subscriptions via OPML
Import an OPML export from another reader into a Neurowire mesh, then export it back out if you need to.
Import (the mesh name comes from --name, else the OPML title):
neurowire opml import subscriptions.opml -o my-reader.json --name "My Reader"Use the resulting mesh like any other:
neurowire --mesh my-reader.json --format json --limit 20Export a mesh (or construct) back to OPML 2.0:
neurowire opml export --mesh my-reader.json > my-reader.opmlSee opml subcommands.
Add a tap for a feed-less site
A tap teaches Neurowire to read a site with no RSS/Atom feed. Let tap doctor propose one, save it, then use it.
# propose a template and save it where Neurowire looks for taps
neurowire tap doctor https://example.com/blog \
> ~/.config/neurowire/taps/example.com.json
# now the site resolves like any feed
neurowire https://example.com/blog --format atomYou can also load a tap ad hoc with --taps <path> or via the NEUROWIRE_TAPS env var. See tap doctor.
Convert any feed to RSS 2.0
Normalize any source (RSS, Atom, JSON Feed, or an HTML page) and re-emit it as RSS 2.0.
neurowire https://simonwillison.net/atom/everything/ --format rss > willison.rssThe same --format rss works on a mesh or a (flattened) construct:
neurowire --mesh ai-news.json --format rss --limit 25 > ai-news.rssSee RSS format.