Catch AI-visibility regressions in your CI/CD pipeline
Last updated: July 3, 2026
TL;DR
AI crawlability breaks the same way accessibility and performance do — silently, on a deploy nobody flagged. A framework upgrade ships client-side rendering, a WAF rule starts challenging PerplexityBot, a robots edit blocks GPTBot. The fix is the same one you already use for tests: check it in CI. AI Bot Checker exposes a REST API, a CLI and a GitHub Action so you can score a URL on every pull request and fail the build when AI visibility regresses. Full reference at /developers.
Why this belongs in CI, not a quarterly audit
The most common way sites lose AI visibility isn't neglect — it's a routine change with an invisible blast radius. Migrating to a new framework that defaults to client-side rendering, tightening bot rules at the CDN, adding a consent wall, or a one-line robots.txt edit can each take you from an A to an F for one or more agents, and you won't see it in analytics for weeks because AI referral traffic is diffuse. A quarterly audit catches it in month three. A CI check catches it in the pull request.
What to assert on every build
- Crawl access per agent — GPTBot, ClaudeBot, PerplexityBot and friends all get a 200, not a 403 or a challenge.
- Content in raw HTML — the pre-JavaScript response actually contains your copy, not an empty
<div id="root">. - Score threshold — the overall AI Readiness Score stays at or above a floor you set (say, 80).
- Structured data intact — the JSON-LD you depend on still parses.
The building blocks: API, CLI, Action
Three surfaces, one metering model (audit credits), so you can wire this into whatever you already run:
- REST API —
POST /v1/auditsto run a scan, plus a lightweightquick-checkfor fast per-agent access assertions, andwebhooksif you'd rather be notified than poll. Stable error codes and idempotency keys so retries are safe. - CLI — the
aibotcheckernpm package wraps the API for local runs and scripts, exiting non-zero when a threshold is missed so it drops straight into any pipeline. - GitHub Action — a ready-made step that scores a URL and annotates the PR, no glue code required.
Example: fail a PR when the score drops
Point the Action at your preview deployment and set a minimum score. The shape looks like this (see /developers for the exact inputs and outputs):
# .github/workflows/ai-visibility.yml
name: AI visibility
on: [pull_request]
jobs:
ai-readiness:
runs-on: ubuntu-latest
steps:
- uses: aibotchecker/scan-action@v1
with:
url: ${{ env.PREVIEW_URL }}
min-score: 80 # fail the build below this
agents: gptbot,claudebot,perplexitybot
env:
AIBOTCHECKER_API_KEY: ${{ secrets.AIBOTCHECKER_API_KEY }}Prefer a script? The CLI does the same thing anywhere:
npx aibotchecker scan https://preview.example.com \
--min-score 80 \
--agents gptbot,claudebot,perplexitybot
# exits non-zero if the score is below the floorWhere in the pipeline to run it
Run it against the preview/staging deploy, not localhost — you want to catch the CDN and edge config, which are exactly the layers that break crawlability and don't exist locally. Gate the merge on it like any other required check. For belt-and-braces, add a scheduled nightly run against production so anything that changes outside your deploys (a DNS or WAF tweak, an expired cert) still trips an alert. Keep the credit spend sane by scoring a representative URL or two per run, not the whole site.
FAQ
Won't this slow down my builds?
A single-URL scan is seconds, and the quick-check access assertion is faster still. Run the full score on a representative page rather than every route and it's cheaper than most of your existing test steps.
Do I need a paid plan for API access?
API access and webhooks are included from the developer-facing plans up, metered by audit credits so CI usage is predictable. See the plans and the developer docs for limits and the OpenAPI spec.
What should I gate the build on?
Start strict on the things that are binary and catastrophic — per-agent crawl access and content-in-HTML — and treat the overall score as a soft floor you ratchet up over time. Blocking a merge because PerplexityBot now gets a 403 is a good failure to have.
Wire it up: read the developer docs, grab an API key, and run a scan to see the output your pipeline will assert on. Related: when Cloudflare blocks AI crawlers.
Related reading
- 8 min read
Why AI assistants see a blank page on your site
Most AI crawlers do not run JavaScript, so a client-side-rendered site serves them an empty page. Why the rendering gap happens and how to fix it.
- 9 min read
Every AI crawler user-agent (2026 reference)
A 2026 reference of AI crawler user-agents — GPTBot, ClaudeBot, PerplexityBot and more — grouped by whether they train, ground answers, or affect your citations.
- 8 min read
How to check if your website is visible to AI
Not sure if ChatGPT, Perplexity or Gemini can see your site? How to check if your website is visible to AI crawlers — the fast way and the manual checks.