AI Search Technical SEO Audit visual guide

Short answer: An AI crawlability audit (an AI technical SEO audit) checks whether the crawlers that feed AI search, mainly Googlebot, Bingbot, OAI-SearchBot, PerplexityBot and Claude-SearchBot, can reach, render and quote your priority pages. It covers five layers: robots.txt rules per crawler, firewall and CDN access verified against each vendor's published IP list, server-rendered text, indexing and snippet controls, and server-log proof that each bot actually receives 200 responses. Training crawlers such as GPTBot, ClaudeBot and Google-Extended are separate decisions that do not affect AI search inclusion.

On this pageWhat the audit coversRobots.txt rules per AI crawlerA robots.txt templateFirewall and CDN checksServer log analysisRendering and JavaScriptSnippet controls and Google-ExtendedFull audit checklistWriting the audit reportSources

What does an AI crawlability audit cover?

A classic technical SEO audit asks whether Googlebot can crawl and index your site. An AI technical SEO audit asks the same question for every system that might quote you, and adds one more: is the answer text present in a form the system can lift? We run it on a short list of priority URLs (service pages, pricing pages, top guides, case studies), not on every URL, because AI answers cite specific pages and a 20-page audit done properly beats a 5,000-URL crawl nobody acts on.

LayerQuestionTypical failure we find
1. PolicyDoes robots.txt allow the search crawlers you want?A "block AI bots" plugin added Disallow rules for OAI-SearchBot and PerplexityBot along with GPTBot
2. NetworkDo the CDN, WAF and host let verified bots through?Cloudflare or hosting bot protection returns 403 or a JavaScript challenge
3. RenderingIs the answer in the HTML a crawler receives?Prices and FAQs load by JavaScript after page load
4. Indexing and snippetsIs the page indexable, canonical and allowed to be quoted?Stray noindex from staging, or nosnippet on the main content
5. EvidenceDo server logs show each bot getting 200 responses?Zero OAI-SearchBot hits in 30 days on an established site

Content quality and measurement are separate jobs; see content AI search engines cite and our AI visibility tracking framework.

Which robots.txt rules apply to each AI crawler?

Most AI vendors now run separate user agents for search, training and user-triggered fetches. The table summarises each vendor's own documentation as checked on 11 October 2026. The practical rule: allow the search crawlers, decide on training crawlers as a business policy, and understand that user-triggered fetchers may not follow robots.txt at all.

Vendorrobots.txt tokenJobWhat blocking it doesVerify with
GoogleGooglebotSearch crawling, including AI Overviews and AI ModeRemoves crawl access for Search, so no AI Overview citationsReverse DNS to googlebot.com, google.com or googleusercontent.com (Google)
GoogleGoogle-ExtendedControl token for Gemini training and grounding in other Google systems; no separate crawlerGoogle says it "does not impact a site's inclusion in Google Search" (Google)Not applicable: it has no HTTP user agent
OpenAIOAI-SearchBotChatGPT searchSites opted out "will not be shown in ChatGPT search answers" (OpenAI)openai.com/searchbot.json
OpenAIGPTBotTraining data for foundation modelsOpts out of training only; settings are independentopenai.com/gptbot.json
OpenAIChatGPT-UserFetches a page when a user asksOpenAI says robots.txt rules "may not apply"openai.com/chatgpt-user.json
PerplexityPerplexityBotSurfaces and links sites in Perplexity results; not used for model trainingRemoves you from Perplexity's search index (Perplexity)perplexity.com/perplexitybot.json
PerplexityPerplexity-UserUser-requested fetches"Generally ignores robots.txt rules"perplexity.com/perplexity-user.json
AnthropicClaude-SearchBotIndexes content to improve Claude's search resultsContent not indexed for Claude search (Anthropic)claude.com/crawling/bots.json
AnthropicClaudeBotCollects content that may be used for trainingFuture content excluded from trainingclaude.com/crawling/bots.json
AnthropicClaude-UserFetches pages for a user's questionMay reduce visibility in user-directed web searchclaude.com/crawling/bots.json
AppleApplebotSearch features including Siri and SpotlightRemoves Apple search visibility; if Applebot is not named, it follows your Googlebot rules (Apple)Apple's published guidance
AppleApplebot-ExtendedTraining opt-out token; "does not crawl webpages"Pages "can still be included in search results"Not applicable
Common CrawlCCBotOpen web archive used widely in research and model buildingExcludes you from future crawls (Common Crawl)Reverse DNS to crawl.commoncrawl.org; index.commoncrawl.org/ccbot.json
Metameta-externalagentCrawls for uses such as training foundation AI modelsDisallow to opt out (Meta)Meta's crawler page

Bingbot belongs in the "allow" group as well: Microsoft Copilot and Bing's AI summaries draw on Bing's index, and our ChatGPT search guide explains why Bing coverage also matters for ChatGPT. Two more details from the vendor pages: OpenAI and Perplexity both say robots.txt changes can take about 24 hours to take effect, and Anthropic notes it honours the non-standard Crawl-delay directive and that rules must be repeated for each subdomain's robots.txt.

What should a robots.txt for AI search look like?

A common policy is: visible in every AI search product, opted out of model training. Adapt the training lines to your own decision; there is no search penalty either way according to the vendors above.

User-agentRuleWhy
OAI-SearchBotAllow: /ChatGPT search
PerplexityBotAllow: /Perplexity results
Claude-SearchBotAllow: /Claude search results
GPTBotDisallow: /Training opt-out (OpenAI)
ClaudeBotDisallow: /Training opt-out (Anthropic)
Google-ExtendedDisallow: /Gemini training and grounding opt-out
Applebot-ExtendedDisallow: /Apple training opt-out
CCBotDisallow: /Common Crawl archive opt-out
*Disallow: /admin/Everyone else, including Googlebot and Bingbot, crawls all public pages

End the file with a Sitemap: https://www.example.in/sitemap.xml line.

Points to check in your own file:

  • A crawler obeys the most specific group that names it and ignores the * group. If you name OAI-SearchBot, repeat any path exclusions (such as /admin/) inside its group.
  • Blocking Google-Extended does not remove you from AI Overviews. To stop Google AI features using your content, use the Search Console control or snippet rules covered below.
  • If you publish an llms.txt file, it does not replace any of this; see does llms.txt help SEO?
  • robots.txt does not keep a page out of Google: a blocked URL can still appear in results without a description. Use noindex for that.

How do you check that the firewall or CDN is not blocking AI crawlers?

robots.txt is a request; the firewall is the gatekeeper. A common reason a site with a correct robots.txt is absent from ChatGPT or Perplexity is a security layer: Cloudflare bot fight settings, a hosting provider's WAF, or a WordPress security plugin that challenges unfamiliar user agents.

  1. List the bot settings in your CDN, WAF and security plugin. Note any "block AI crawlers" toggles and rate limits.
  2. Allow by user agent and IP together. Perplexity's documentation gives the pattern for Cloudflare: a custom WAF rule where User-Agent contains PerplexityBot and IP Source Address is in its published ranges, with action Allow. For AWS WAF it advises allow rules with higher priority than blocking rules. The same pattern works for OAI-SearchBot and Claude-SearchBot with their JSON lists.
  3. Never allow by user agent alone. Anyone can send "OAI-SearchBot" as a user agent. The IP list, or reverse DNS for Googlebot and CCBot, is the proof.
  4. Keep IP lists current. Perplexity recommends treating its JSON endpoints as the source of truth and automating updates; the same applies to OpenAI's and Anthropic's lists.
  5. Re-test after changes using the log check below, since WAF changes can take time to propagate.

How do you use server logs in an AI crawlability audit?

Logs are the only evidence that a crawler actually received your page. Pull 30 days of access logs from the host or CDN and answer three questions per bot: did it visit, which URLs did it fetch, and what status codes did it get.

A quick command-line count on a standard combined log format:

grep -E "OAI-SearchBot|PerplexityBot|Claude-SearchBot|bingbot|Googlebot" access.log | awk '{print $9}' | sort | uniq -c

Then split by bot and by URL. Our working thresholds for an established site:

FindingInterpretationAction
No hits from a search crawler in 30 daysBlocked upstream, or the site has no presence in that engine yetCheck WAF events for that user agent; check robots.txt
More than 5% of a bot's requests return 403, 429 or 503Firewall or rate limit is interferingAdd verified allow rule; raise rate limit for verified IPs
Bot fetches only the homepage and robots.txtWeak internal linking or sitemap not foundLink priority pages from navigation and hubs; list sitemap in robots.txt
Hits from a "bot" whose IP is not on the vendor's listSpoofed user agentLeave blocked; do not whitelist by name
Priority page returns 301 chains or 404 to botsBroken internal links or migration leftoversFix links to point at the final URL

The 5% threshold is our rule of thumb, not a vendor figure. Shared hosting plans often do not expose raw logs; in that case use the CDN's analytics or ask the host for an export.

Do AI crawlers render JavaScript?

Do not assume they do. Google documents that Googlebot queues pages for rendering in a headless Chromium "once Google's resources allow", and its JavaScript SEO guide still recommends server-side rendering or pre-rendering because "not all bots can run JavaScript". Other AI vendors do not document JavaScript rendering for their search crawlers, so the safe standard is: the answer, the price, the table and the internal links must be in the initial HTML.

Two tests per priority URL:

  • View source, not Inspect. Search the raw HTML for the key sentence and price. If it is missing, it is being injected by JavaScript.
  • Fetch as the bot. curl -s -A "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko); compatible; OAI-SearchBot/1.4; +https://openai.com/searchbot" https://www.example.in/pricing/ | grep -c "₹". A zero count, a challenge page or a 403 tells you what the crawler sees. Your WAF may treat a spoofed request differently from the real bot, so confirm with logs.

Common Indian-site culprits: React or Next.js builds without server rendering, prices in a tab or accordion populated on click, FAQ widgets loaded from a third-party script, and pricing published only as an image or PDF brochure. If a rebuild is needed, our website development team builds server-rendered pages by default.

How do snippet controls and Google-Extended affect AI features?

Google gives you three levels of control, and they do different things:

ControlEffect on AI Overviews and AI ModeEffect on classic Search
nosnippetGoogle says it "will also prevent the content from being used as a direct input for AI Overviews and AI Mode"No text snippet in results
max-snippet:[n]Limits how much content may be used as direct inputLimits snippet length
data-nosnippet on a div, span or sectionExcludes that block from snippets; use for disclaimers or gated textSame
Search generative AI control (Search Console Settings)Excludes the site's links and content from AI Overviews, AI Mode and Discover AI features within 1–2 daysGoogle says it is not a ranking or inclusion signal for other parts of Search
Google-Extended in robots.txtNot a Search control; covers Gemini training and grounding in other Google systemsNone

Sources: Google's robots meta tag documentation and the Search generative AI control help page. Two audit traps: snippet rules on a page blocked in robots.txt are never read, and for PDFs you must use the X-Robots-Tag HTTP header. Also look for max-snippet:0 or nosnippet set site-wide through an SEO plugin option. For the eligibility side, see our Google AI Overviews guide.

AI technical SEO audit checklist

AreaCheckPass conditionTool
InventoryPriority URL list20–50 revenue and reference pages with owner and target querySheet
robots.txtSearch crawlers allowedGooglebot, Bingbot, OAI-SearchBot, PerplexityBot, Claude-SearchBot, Applebot not disallowed for priority pathsrobots.txt tester, manual read
robots.txtTraining policy documentedGPTBot, ClaudeBot, Google-Extended, Applebot-Extended, CCBot set deliberatelyManual read
robots.txtEvery subdomain coveredblog., www. and shop. each serve the intended fileBrowser
NetworkNo challenge for verified botsWAF allow rules use UA + IP; no 403/429 in logsCDN/WAF console, logs
LogsEach search bot seen in 30 days200 responses on priority URLsAccess logs
HTTPStatus and redirects200 on the canonical URL; no redirect chainsCrawler, curl
IndexingIndexable and indexedNo stray noindex; URL Inspection shows "URL is on Google"Search Console
CanonicalGoogle-selected canonical matchesSame as declared canonicalURL Inspection
SnippetsQuoting allowedNo nosnippet or tiny max-snippet on main content; X-Robots-Tag checkedView source, headers
Search ConsoleGenerative AI settingIncluded (unless you chose to opt out)Settings
BingSite verified, sitemap submittedNo crawl errors; IndexNow on if CMS supports itBing Webmaster Tools
RenderingAnswer in raw HTMLKey sentence, prices and tables present in sourceView source, curl
RenderingNo content behind clicksTabs and accordions present in HTML on loadView source
LinksPriority pages discoverable2+ contextual internal links; in XML sitemapCrawler
SitemapCleanOnly 200, canonical, indexable URLs; accurate lastmodCrawler
Structured dataValid and matches pageNo errors; markup matches visible textRich Results Test
PerformanceMobile experienceCore Web Vitals pass in field data where availableSearch Console, PageSpeed Insights

Structured data has its own guide: structured data for AI search.

How should the audit report be written?

Each finding needs six fields so a developer can act without a call: the issue, affected URLs, evidence (log lines, header output, screenshot), impact (which engines and pages), the exact fix with owner, and how it will be verified. Prioritise in this order: anything blocking a search crawler sitewide, then template issues affecting many priority pages, then single-page fixes. Re-run the log check two weeks after deployment and record the before-and-after status codes. If you want us to run this audit, it is the first step in our AEO and GEO services.

Sources

FAQ

Common questions

What is an AI crawlability audit?

An AI crawlability audit checks whether the crawlers behind AI search (Googlebot, Bingbot, OAI-SearchBot, PerplexityBot, Claude-SearchBot) can reach, render and quote your priority pages. It reviews robots.txt per crawler, firewall and CDN rules against published IP lists, server-rendered text, indexing and snippet controls, and 30 days of server logs to confirm each bot actually receives 200 responses.

Which AI crawlers should I allow in robots.txt?

Allow the search crawlers if you want AI citations: Googlebot, Bingbot, OAI-SearchBot (ChatGPT search), PerplexityBot, Claude-SearchBot and Applebot. Training crawlers such as GPTBot, ClaudeBot, CCBot, meta-externalagent and the Google-Extended and Applebot-Extended tokens are a separate business decision; each vendor documents that blocking them does not remove you from its search results.

Does blocking Google-Extended remove my site from AI Overviews?

No. Google states Google-Extended does not affect inclusion in Google Search and is not a ranking signal; it controls use of content for Gemini training and grounding in other Google systems. To limit AI Overviews and AI Mode, use nosnippet or max-snippet, data-nosnippet on specific blocks, or the Search generative AI control in Search Console settings.

Can AI crawlers read JavaScript content?

Googlebot renders JavaScript in a headless Chromium, but Google itself recommends server-side rendering or pre-rendering because not all bots can run JavaScript. Other AI vendors do not document rendering for their search crawlers. Keep the answer, prices, tables and internal links in the initial HTML, and test by viewing source or fetching the page with curl.

How do I check if my firewall blocks ChatGPT or Perplexity?

Search 30 days of server or CDN logs for OAI-SearchBot and PerplexityBot and count status codes. Repeated 403, 429 or 503 responses mean the WAF or rate limits are interfering. Fix it with an allow rule that matches both the user agent and the vendor's published IP list, never the user agent alone, then re-check logs after about two weeks.

Want your website ready for Google and AI search?

Book a free audit covering indexing, content gaps, citation readiness and the landing pages that should generate qualified leads.

Book a Free AEO/GEO Audit
RS
Founder & Performance Marketing Lead, GrowthSparx

Rinku works across SEO, lead generation and conversion systems for Indian and global businesses. GrowthSparx reviews platform guidance and measures work against qualified enquiries—not AI-search hype.

Have a question? Message us directly on WhatsApp—usually a reply within a few hours.

Chat on WhatsApp