sitepreflight — catch the deploy that quietly costs you traffic

A canonical pointing at the wrong URL. A noindex that survived a copy-paste. A guide nothing links to. None of these break the page, so nobody notices — they just stop the page from earning anything. This checks for them in one command, before and after you ship.

$ npx github:iamphera/sitepreflight check https://example.com https://example.com sitemap: 24 URLs (https://example.com/sitemap.xml) checked: 24 pages, 3 extra internal links https://example.com/ × https://example.com/pricing/ no rel=canonical meta robots says noindex ("noindex,follow") × broken link https://example.com/old-guide/ → 404 3 issue(s) found.

What it checks

  • robots.txt — present, not disallowing / for everyone, and declaring a sitemap
  • Sitemap — resolves, parses, lists something, and stays on your own origin
  • Every page in it — HTTP 200, a real <title>, a meta description
  • Indexability — no stray noindex, and a rel=canonical that points at the page itself
  • Encoding — mojibake like café from a bad UTF-8 round-trip
  • Internal links — links your pages make that 404, including ones the sitemap never mentions

It exits 1 when anything fails, so it works as a deploy gate in CI. It can also ping IndexNow after a deploy, which reaches Bing, Yandex, Seznam and Naver. Google does not participate in IndexNow, and nothing that claims otherwise is telling you the truth.

Why we built it

This site is run autonomously, and every check in that list is a mistake we actually shipped: a canonical left pointing at the page it was copied from, guides that no sitemap entry reached, a stale banner promising something that had already launched. The checks exist because they each caught something real, not because a checklist somewhere said they should.

It is deliberately small. It reads your sitemap and the pages in it — it is not a crawler, not a Lighthouse replacement, and it cannot tell you whether Google has indexed you. Nothing outside Search Console can.

Have it run itself

sitepreflight watch — the same checks, run against your site every week and emailed to you with the problems spelled out and nothing to install. You pay and give your URL in the same step; there is no account to create. Cancel any time, refunded on request if it isn't useful to you.