AI assistants skip your blog for five reasons, and three of them are invisibility rather than bad writing: the crawler can't fetch the page, an index rule locks it out, or your content only appears after JavaScript — and as of mid-2026 none of the major AI crawlers (GPTBot, OAI-SearchBot, PerplexityBot, ClaudeBot) run JavaScript at all. The other two are eligibility problems: the page is readable, but nothing on it is structured or specific enough to lift into an answer.
We build an AI-visibility plugin for WordPress, and the pattern we see most is the opposite of what the usual GEO advice warns about. Everyone says write answer-first and add schema — genuine fixes, but they solve reasons four and five while the real problem is usually one, two or three, none of which shows up in your Google rankings or your SEO plugin's dashboard. So here are the five in the order a crawler hits them, each with the one test that tells you it's yours. Fix an earlier rung and the later ones finally start to count.
| # | Why AI won't cite it | The 30-second test | Would Google warn you? |
|---|---|---|---|
| 1 | AI crawler can't fetch the page | curl -A "OAI-SearchBot" -I <url> returns 403 or a challenge | No — Googlebot may still be allowed |
| 2 | Page is blocked from the index | the response carries noindex in a meta tag or X-Robots-Tag | Yes — it kills Google too |
| 3 | Content only appears after JavaScript | your body text is missing from the raw HTML source | No — Googlebot renders JS, AI bots don't |
| 4 | No passage can be isolated | no question heading with a stand-alone answer beneath it | No |
| 5 | Nothing is worth quoting | your best paragraph names no number, fact or mechanism | Partly |
Read the map, then fix it top-down. A flawless answer-first paragraph earns nothing when the bot that would quote it gets a 403 before it sees a single word.
Can an AI crawler actually fetch your page?
The most common reason AI never cites you is that its crawler gets a 403 or a bot-challenge before it reads a word — and this is invisible in Google, because the block usually targets AI user-agents specifically while Googlebot sails through. Run curl -A "OAI-SearchBot" -I https://yoursite.com/your-post and read the status line: 200 means reachable, 403 or a returned HTML challenge page means blocked.
The blocks are boring, which is why they go unnoticed. A security plugin quietly adds User-agent: GPTBot followed by Disallow: / to your robots.txt. Cloudflare's "Block AI Scrapers and Crawlers" managed rule gets toggled on by a well-meaning admin. A firewall rate-limits an unfamiliar user-agent into a challenge loop. None of these dents your Google traffic, so nothing in your normal reporting flags them.
One detail decides whether the fix even helps: each vendor runs a small fleet of bots split by job. OpenAI alone has GPTBot for training, ChatGPT-User for on-demand fetches, and OAI-SearchBot — the one that builds the index ChatGPT cites from. If you want citations, OAI-SearchBot, PerplexityBot and Claude's search fetcher are the agents that must get through, so allowing "AI bots" in general isn't enough; check the specific ones by name. Whether reachability is even your job or your SEO plugin's is a question we pull apart in AI visibility tool vs Yoast or Rank Math — the short version is that no mainstream SEO plugin tests this.
Is your page allowed into the AI index at all?
A page can return 200 to the crawler and still be shut out of AI answers if it carries a noindex instruction, because the search-style bots that build citation indexes — OAI-SearchBot, PerplexityBot — read noindex as "keep this out of the retrieval pool." Check both places it hides: curl -I on the URL shows an X-Robots-Tag: noindex response header, and the page's <head> may hold <meta name="robots" content="noindex">.
Honest caveat, because this is moving: respect for noindex isn't uniform across bots as of mid-2026. Some bulk training crawlers ignore it, but the retrieval-and-citation bots increasingly honour it, so a noindex page is a poor bet for ever being quoted. The usual accidental causes are a WordPress "Discourage search engines from indexing this site" checkbox left on after launch, a staging flag that shipped, or an SEO plugin set to noindex your archive, tag or paginated pages — which is exactly where some sites keep their real answers.
This is the one rung on the ladder your analytics already screams about. Because noindex drops you from Google as hard as it drops you from AI, a page that suddenly loses its Google traffic is the tell — so rule this one out fast, then move on.
Does your content exist without JavaScript?
If your post's text only renders after JavaScript runs, AI crawlers see an empty shell, because as of mid-2026 GPTBot, OAI-SearchBot, PerplexityBot and ClaudeBot don't execute JavaScript — one widely-cited 2026 analysis of over 500 million GPTBot fetches reported no JavaScript execution at all. Test it with curl -s https://yoursite.com/your-post | grep "a sentence from your article": if your own words aren't in the raw HTML, there's nothing for the AI to quote.
This is the trap that catches modern sites hardest, because it's the one gap where Google and AI genuinely diverge. Googlebot renders JavaScript through its Web Rendering Service, and Gemini rides on that same infrastructure, so a client-side-rendered theme or a React front end can rank fine in Google and even in AI Overviews while being completely blank to ChatGPT and Perplexity. The failure modes are specific: body copy injected by the theme after load, FAQ or review blocks hydrated client-side, "read more" and tabbed content that only exists once JS fires. The fix is server-side rendering or pre-rendering so the words are in the HTML the crawler receives.
This invisibility tier — reasons one through three — is what Contexta's AI Visibility test is built to check: it fetches each page as the individually named bots, flags the robots.txt and Cloudflare blocks it finds, and renders the page with JavaScript switched off so you can see the same empty shell the crawler sees. It reports the exact line to change rather than just telling you that you're absent.
Can a retriever isolate one clean passage on your page?
Once the bot can read your page, it still won't cite you unless it can lift a single self-contained passage, because retrieval systems split a page into chunks and rank each chunk on its own — a buried answer loses to a competitor's paragraph that stands alone. The test: skim your post for one heading phrased as a question with a first sentence that fully answers it, and if every section leans on the one above it, there's no chunk to hand a model.
This is the reason the GEO blogs fixate on, and they're right that it matters — a question-shaped heading with the answer in line one is the unit that gets quoted. The catch is sequence: this work only converts into citations after reasons one through three pass, which is why we put it fourth and not first. The full mechanics of the block that gets lifted — heading, answer sentence, the fact underneath — are laid out in answer-first writing, and the shape is easy to apply to three sections and brutal to apply to a 300-post archive by hand.
Does the passage carry a fact worth quoting?
The last reason is that your writing is structured but empty — the model reaches for the source that states a number, a name or a mechanism and reads past the one that only gestures at "best practices." Copy your strongest paragraph, paste it somewhere with no context, and ask whether it makes a specific, repeatable claim or just a vague direction.
A passage that says "IndexNow is much faster than a sitemap" gives a model nothing to carry; "IndexNow pushes changed URLs to participating engines within minutes, versus the days a sitemap-only setup waits for the next crawl" gives it a fact it can drop straight into an answer. Every "faster", "better" or "most" is a slot where the actual figure belongs. The discipline of moving that specific to the front of the sentence — and admitting when the honest answer is "it depends" — is the sentence-level shift from ranking-writing to answer-writing we walk through in GEO vs SEO writing. One warning we've earned the hard way: don't invent the number to fill the slot, because a confident wrong fact is worse than a hedged one, both for the reader and for a model that may quote your mistake.
Which reason should you fix first?
Fix them top-down, because the ladder is dependent — a quotable, fact-rich paragraph earns nothing while the crawler that would quote it is getting a 403. Confirm the named bots can fetch a live page (reason one), then that it's index-eligible (two), then that it's readable with JavaScript off (three); only after that do the structure and specificity work in reasons four and five turn into citations.
Fetch
the named bot gets 200, not a 403 or challenge
Index
no noindex header or meta rule blocks it
Render
your text is in the raw HTML, no JS needed
Isolate
a question heading with a stand-alone answer
Quote
that answer states a real number or fact
The proof that you've climbed the ladder is downstream, not in a rankings report. Once the invisibility rungs are clear and your passages stand alone, you start seeing real visitors arrive from ChatGPT, Perplexity and Gemini — cache-proof referrals you can watch in your analytics rather than infer. If that number is flat, walk back up the five reasons in order; the block is almost always earlier on the ladder than the writing everyone reaches for first.
FAQ
Does a noindex tag block AI assistants the same way robots.txt does?
No — they act at different stages, and confusing them wastes your fixes. A robots.txt Disallow stops a crawler from fetching the page at all, while a noindex tag lets the fetch succeed but tells indexing bots to keep the page out of their retrieval pool. For an AI citation both have to pass: the search-style bots like OAI-SearchBot and PerplexityBot must be allowed to fetch the page and to store it.
Do AI crawlers render JavaScript like Googlebot does?
No — as of mid-2026 GPTBot, OAI-SearchBot, PerplexityBot and ClaudeBot don't execute JavaScript, so any content that only appears after JS runs is invisible to them. The one meaningful exception is Google's Gemini, which reuses Googlebot's rendering service. This is why a client-side-rendered page can rank in Google yet never be cited by ChatGPT or Perplexity, so check that your article text is present in the raw HTML source rather than injected after load.
Can I rank first on Google and still never get cited by AI?
Yes — ranking and citation are separate pools, and three of the five reasons AI skips you leave your Google position untouched. An AI-bot-specific fetch block, a JavaScript-rendering gap, or a page with no self-contained passage all keep you out of AI answers while your blue-link ranking looks perfect. That gap is exactly why AI visibility is a separate check from traditional SEO, not a by-product of it.
Which of the five reasons should I fix first?
Start at the top of the ladder — reachability — because the reasons are dependent, not independent. Confirm the named AI bots can fetch a live page, then that it isn't index-blocked, then that it reads without JavaScript; only after those pass do better structure and sharper facts turn into citations. Fixing your writing while a crawler still gets a 403 changes nothing.
