4 min read

Taps: jacking feed-less sites into real feeds

Neurowire taps are per-host CSS-selector recipes that flip a plain HTML listing page into a real feed, so a site with no RSS jacks into your rig as a first-class source, preem and clean.

A Neurowire tap is a per-host recipe, written in CSS selectors, that flips a plain HTML listing page into a real feed. Point it at a site with no RSS or Atom, tell it which elements are the items and where the title, link, and date live, and that site jacks into your rig as a first-class source, preem and clean. This is the line between “we support feeds” and “we make anything a feed,” choom.

Why do taps matter at all?

Most feed tools flatline at the formats. They read RSS, they read Atom, maybe JSON Feed, and if a site does not publish one of those, the tool just shrugs like a gonk. The trouble is a big slice of the open net ships no feed at all. A blog with a clean archive page, a newsroom, a changelog, a forum index: all of these are perfectly readable to a human and invisible to a feed reader.

Taps close that gap. Instead of writing off a feed-less site as out of scope, Neurowire treats its HTML as just another input format that happens to need a recipe. Once a tap exists for a host, that source jacks into the canonical model exactly like an RSS feed would, and everything downstream (meshes, constructs, every serializer) runs on it unchanged, no extra chrome needed. Any netrunner can wire it once and forget it, nova.

How does a tap actually work?

A tap is small, lean chrome. It names the host it applies to, then carries a set of CSS selectors that map the page structure onto the feed model.

  • An item selector that matches each entry in the listing, for example each row or card in an archive. Simple chrome, does one job.
  • Per-item selectors for the title, the link, and the published date. The netrunner’s coordinates.
  • Optional selectors for a summary or author when the page exposes them, extra chrome if you want it.

The parser, a quiet little daemon, fetches the page, runs the selectors, and drops one item per match into the model. Because it produces the same canonical feed any other parser produces, the rest of the engine never has to know the source was scraped HTML rather than a published feed. A netrunner running the whole rig sees no seams.

HTML page plus selectors to canonical feed An HTML listing and a set of CSS selectors run through the tap parser to produce a canonical feed. HTML page no feed CSS selectors the tap Tap parser match + map Canonical feed
A feed-less page plus a small selector recipe produces the same canonical feed any real feed would.

How is a tap different from the Taps Pack?

Worth splitting out, because the names run close. A tap is the mechanism: the per-host selector recipe described above. The Taps Pack is a curated stash, the kind of preem gear a fixer keeps on the shelf, built on that mechanism and shipping 271 sources across 24 themes ready to run out of the box. One is the engine, the other is a batteries-included library of feeds for it. The Taps Pack post covers the curated set in detail.

Where to start

If you want to write your own tap, choom, the selector format is documented at neurowire.starside.io, and the parser daemon lives in the Neurowire repo on GitHub. If you just want feeds, grab the Taps Pack and you have 271 sources without writing a single selector, no gonk setup, cheap on eddies. Either way, the moment a tap exists, that site stops being a thing you check by hand and jacks straight into your reading rig as a real feed. Or skip the setup and assemble your feed in the Neurowire App, nova and fast. More open-source work sits under projects.

Let's link up, choom.

Always down to trade notes, talk shop, or just ping. The net is the fastest way to reach me.

Ping me