rankprobe: an SEO and AI-crawler audit that fails your PR before a stray noindex ships A developer released rankprobe, an MIT-licensed Python tool that audits a site for 36 SEO and AI-crawler checks and can fail a pull request in CI when issues like a stray noindex, an overlong meta description, or a robots.txt blocking GPTBot and ClaudeBot are found. Run against the developer's own 15-page Jekyll blog, the tool flagged all 15 pages for meta descriptions over 160 characters and titles over 65 characters, all 15 missing an og:image, and the origin missing robots.txt, sitemap and llms.txt. The tool ships with a robots.txt matcher that reports which AI crawlers are allowed or blocked, plus SARIF, JSON and --fail-under options for CI integration. I cross-post my dev.to articles to a small Jekyll site on GitHub Pages. Last week I pointed a new audit tool at that site and it told me 15 out of 15 pages had a meta description Google will cut off, 15 out of 15 titles were too long, no page had an og:image , and the origin served no robots.txt , no sitemap and no llms.txt . None of that was visible from the browser. Every page looked fine. That tool is rankprobe , and this post shows what it does on a real site and how to wire it into CI. Repo: github.com/bayuh85/rankprobe https://github.com/bayuh85/rankprobe MIT, Python 3.10+, standard library only, 80 offline tests SEO breakage is silent. A noindex left over from staging, a canonical pointing at the wrong host, a robots.txt that blocks GPTBot and ClaudeBot because someone copied a "block AI" snippet, JSON-LD with a trailing comma. The page renders, the PR gets approved, and you find out weeks later from Search Console, or from the fact that no AI search engine ever cites you. The usual options are a paid SEO suite slow, per-seat, not in your CI or handing the HTML to a chat model and asking "what's wrong with my SEO?", which spends tokens rediscovering things a parser settles in milliseconds, and sometimes invents issues. I wanted the boring part to be deterministic and the model part to be optional and small. rankprobe audit