Crawler
Every public page of a site as Markdown, in reading order, with provenance per page: how it was fetched, whether order was measured, what was refused. A plain fetch and a real-browser render are merged so neither side's losses are kept.
It refuses walls, login pages and server errors by name, and drops what the site hides from a reader. Streams as it goes: the live run view, or the HTTP API (/api/text for a page, /api/site/stream for a site). Runs on your machine.