Work the list below top to bottom; it is ordered by dependency, not by importance. Fifty checks across seven categories, sized for a site under about 500 pages. The rule that separates this from an ordinary SEO audit: the major AI crawlers do not render JavaScript, so every load-bearing fact has to exist in the server's first response. Each category carries an evidence grade, because the categories are not equally well supported.
- The categories are graded, not equal. A through D rest on documented crawl and index mechanics; category G rests on current crawler behaviour that can change without notice.
- Rendering is the dividing line. Google renders JavaScript with a median delay of about 5 seconds (Onely testing); GPTBot, ClaudeBot and PerplexityBot are not documented as executing it, per operator crawler documentation. A controlled test is registered but has not been run.
- Schema is on the list for rich results and entity clarity, not citations. The largest controlled test - Ahrefs, 1,885 pages adding schema against roughly 4,000 controls - found no meaningful citation uplift.
- Only 48% of sites pass all three Core Web Vitals on mobile at the 75th percentile of real-user loads (HTTP Archive Web Almanac, 2025), and LCP at 62% is the binding constraint.
- This checklist buys eligibility, not visibility. We know of no published controlled test of a full technical audit's effect on AI citation - see why you cannot prove the audit worked.
Running this checklist through an agent is reasonable for the diagnosis steps and risky for the fixes. The catalogue of agentic SEO failure modes rates which failures a passing build will not catch — robots.txt over-blocking and wrong canonicals being the two that do real damage.
A. Crawlability (points 1–8)
Fact If a crawler cannot reach a page, nothing else on this list matters. Every item here rests on documented behaviour in Google's and the AI operators' own crawler documentation, so this is the least speculative category on the page. Diagnose it by fetching /robots.txt and a sample URL from each template with curl; verify by watching the same paths appear in your server logs afterwards.
- robots.txt is valid and non-blocking - a stray
Disallow: /can hide your entire site; test it in Search Console and Bing Webmaster Tools, and check it against the full list of Google crawlers and fetchers as well as the AI user agents. - Critical CSS/JS is crawlable - Google renders with headless Chromium; blocking resources makes the rendered page look broken.
- XML sitemap submitted and clean - keep it current (≤50,000 URLs / 50MB); Bing has stated that sitemaps remain a primary discovery channel in AI-powered search.
- No orphan pages - every indexable URL needs at least one internal link, or it is effectively invisible.
- Server returns fast, stable 200s - 5xx errors and slow TTFB throttle crawl rate.
- Redirect chains and loops eliminated - use single-hop 301s; chains waste crawl budget and dilute signals.
- Status-code hygiene - removed pages return 404/410, not soft-404s that keep engines re-crawling dead URLs.
- Faceted / parameter URLs controlled - canonicalise or block infinite filter/sort/session-ID combinations.
Failure mode to watch: a CDN or bot-management rule blocks AI user agents above the application layer, so robots.txt looks permissive and the requests still never arrive. Only the logs reveal it. The AI bot user-agent registry lists the strings to match on, and Cloudflare's 2025 crawler census gives a sense of how much of your traffic these clients already are. Its companion crawl-to-click analysis is the sobering half: granting access and receiving referral traffic are not the same currency.
B. Indexability (points 9–15)
Fact Crawlable is not the same as indexable. These seven catch the silent index-killers, and each maps to a documented directive rather than an inference. Diagnose with a crawl plus a header check (curl -I) on one URL per template; verify in the Search Console and Bing Webmaster Tools index reports a week later.
- No accidental
noindex- a stray meta tag orX-Robots-Tagheader is the most common cause of pages vanishing from the index. - Canonical tags self-referential and correct - consolidate duplicate and parameter versions onto one URL.
- HTTPS everywhere with a valid cert - a confirmed ranking signal and a trust prerequisite.
- One resolving hostname - enforce www-vs-non-www and trailing-slash consistency via 301 to avoid splitting signals.
- Meta robots directives audited - check for unintended
nofollow,nosnippetormax-snippetlimits that suppress snippets. - Hreflang correct (if multilingual) - missing reciprocals cause the wrong language/region version to index.
- Thin / duplicate content consolidated - near-duplicates compete with each other and waste the crawl.
Failure mode to watch: nosnippet and aggressive max-snippet values are applied for one reason (stopping scraper previews) and quietly suppress the extractable passage an answer engine would have quoted.
C. Site architecture and internal linking (points 16–22)
Evidence Structure is how crawlers and models work out what your site is about. Depth and link-graph effects on discovery are well established in classic search; their effect on citation specifically is inferred, not measured. Diagnose with a full crawl and a click-depth report; verify by re-crawling and confirming no indexable URL sits more than three clicks from the homepage.
- Flat hierarchy (≤3 clicks to any page) - shallow depth ensures every page is reached and prioritised on a small site.
- Descriptive, static URL slugs - readable, keyword-bearing URLs help ranking and entity extraction.
- Descriptive internal anchor text - anchors are a primary relevance signal; "click here" wastes it.
- Breadcrumbs with BreadcrumbList schema - clarify hierarchy for users, search and answer engines.
- Contextual internal links between related pages - passes authority and helps map your topical clusters.
- Hub pages / HTML sitemap - topical anchors that improve discovery.
- Pagination handled cleanly - use crawlable
<a href>links, not JS-only, so deep items are discoverable.
Failure mode to watch: a "related posts" module rendered client-side. The links exist for a human auditor and not for the crawler, so the site looks well linked and behaves like a set of orphans.
D. Rendering and JavaScript (points 23–29)
Evidence This is the category most SEO audits skip and most AI-visibility problems hide in. Whether the major AI crawlers execute JavaScript is checkable by fetching a page as each bot and diffing raw HTML against the rendered DOM. Operator documentation says they do not; the controlled test is registered and unrun. The claim that fixing it lifts citations is a mechanism argument, not a measured one. Diagnose by fetching the page with scripts disabled and logged out, then diffing that response against the rendered DOM. Verify by searching the raw HTML for your headline and three key facts.
- Core content in the initial HTML (SSR/SSG) - server-rendered or static HTML is the only content most AI crawlers can read.
- Client-side-rendered content verified - use URL Inspection's "view rendered HTML" to confirm JS content appears to Googlebot.
- Links use real
<a href>tags - crawlers follow standard anchors, notonclicknavigation. - No content locked behind interaction - tabs/accordions requiring JS events may never be seen.
- Lazy-loaded content is crawlable - use native
loading="lazy"and confirm content loads on scroll simulation. - Reasonable JS payload - heavy bundles delay rendering and hurt INP.
- Graceful no-JS fallback for key facts - GPTBot, ClaudeBot and PerplexityBot read only raw HTML, so primary facts must live there.
Even for Google, JavaScript is a tax rather than a wall: Onely's testing found it takes roughly nine times longer to crawl JS-dependent content than plain HTML. Failure mode to watch: a prerendering layer bolted on in front of an SPA. It satisfies the raw-fetch test and can serve a cached copy that is weeks stale, which trades an invisibility problem for a freshness one.
If your site is a client-rendered SPA, moving to server-side rendering or static generation is the biggest change available here. View any page's source (Ctrl/Cmd+U): if your headline and key facts are not in the raw HTML, the AI engines cannot read them - and cannot cite them. Hypothesis We would expect this to matter more than any other item on the list. That is a mechanism we are describing, not a lift we have measured, and no first-party test of this specific rewrite exists on this site.
E. Structured data and schema (points 30–36)
Evidence Schema earns Google rich results and clarifies your entity. On the best available evidence it does not win AI citations. Ahrefs tracked 1,885 pages that added schema against roughly 4,000 controls and found no meaningful uplift, with AI Overview appearances dipping slightly; our reading of it, and the replication question it leaves open, is in the schema markup and AI citations study. Diagnose with the Rich Results Test and the Schema Markup Validator; verify in the Search Console enhancement reports. You can generate every type below with the free schema markup generator.
- Valid JSON-LD (no errors) - check with Google's Rich Results Test and the Schema Markup Validator.
- Organization + sameAs - establishes your brand as a recognised entity and links it to authoritative profiles.
- Article / BlogPosting with author + datePublished - signals freshness, authorship and E-E-A-T.
- Person schema for authors - ties content to a credentialed entity.
- FAQPage / QAPage where genuinely applicable - structures Q&A in an extractable format.
- Product / Offer / Review (e-commerce) - powers price, availability and rating rich results.
- BreadcrumbList + WebSite / WebPage - reinforces structure and enables sitelinks search box eligibility.
Failure mode to watch: markup that disagrees with the visible page - an author or a modified date present in JSON-LD and nowhere in the body. It validates cleanly and gives a machine two conflicting answers.
F. Performance and Core Web Vitals (points 37–43)
Evidence Speed is a ranking system on Google and a crawl-rate factor everywhere. No published evidence shows an AI retrieval system weighting page speed when it selects a source. The three Core Web Vitals are measured at the 75th percentile of real-user loads and documented in Google's own Search guidance. Diagnose with field data from PageSpeed Insights or CrUX, never lab data alone; verify 28 days after the fix ships, because the field dataset is a trailing window.
| Metric | Measures | Good | Needs work | Poor |
|---|---|---|---|---|
| LCP (Largest Contentful Paint) | Load speed | ≤ 2.5s | 2.5–4.0s | > 4.0s |
| INP (Interaction to Next Paint) | Responsiveness | ≤ 200ms | 200–500ms | > 500ms |
| CLS (Cumulative Layout Shift) | Visual stability | < 0.1 | 0.1–0.25 | > 0.25 |
- LCP ≤ 2.5s - your largest above-the-fold element loads fast.
- INP ≤ 200ms - the metric that replaced FID in March 2024.
- CLS < 0.1 - nothing jumps around as the page loads.
- Optimised, correctly-sized images (WebP/AVIF) - images are the most common LCP element.
- Explicit width/height or aspect-ratio on media - prevents layout shift.
- Fast TTFB / caching / CDN - server response underlies both LCP and crawl rate.
- Mobile-first verified - Google indexes the mobile version; it must contain all content and pass CWV.
of sites pass all three Core Web Vitals on mobile, at the 75th percentile of real-user loads.
median delay between Google crawling a page and rendering its JavaScript.
longer for Google to crawl JavaScript-dependent content than equivalent plain HTML.
Those figures come from the 2025 Web Almanac performance chapter, the only large-scale, openly published field dataset on this. Failure mode to watch: optimising a lab score. Lighthouse runs on a synthetic device and can improve while the field distribution that Google actually uses does not move at all.
G. AI-crawler and GEO specifics (points 44–50)
Hypothesis This is the layer ordinary audits do not have, and the layer with the least evidence behind it. Every item here is phrased as an eligibility check rather than a lever, because each rests on current crawler behaviour, which is software and can change without notice. Diagnose from raw server logs filtered by user agent and verified by IP; verify by confirming the bots you intended to admit actually arrive, and that they fetch the URLs you care about.
- AI crawlers explicitly configured in robots.txt - decide access for OAI-SearchBot, PerplexityBot, Claude-SearchBot and the rest; blocking the search bots removes you from those engines' answers.
- IndexNow enabled - notifies Bing (and so ChatGPT and Copilot) of new URLs; Bing typically crawls within 1–3 days, and has published its own account of the speed-up.
- Answer-first, extractable content - lead with concise, self-contained answers and clear headings so a model can lift and cite a passage.
- Factual, citable formatting - stats, dates, lists and tables with sources are more quotable than prose.
- Strong entity / authority signals - author schema, sameAs and visible bylines.
- llms.txt considered (optional, low-cost) - an emerging convention Google has called purely speculative; treat it as experimental, and see the first-party log test before spending time on it.
- Content freshness with clear timestamps - visible "updated" dates and genuine refreshes are associated with both ranking and AI retrieval; no controlled test isolates the effect.
Failure mode to watch: a rolling "updated today" timestamp with no substantive edit behind it. For the numbers rather than the assertions, the GEO tactic evidence scoreboard grades each tactic on this list by how much support it actually has, and where AI SEO statistics come from traces the widely-repeated figures back to origin.
What order to fix them in
- 01 Fetch raw Request the page with JavaScript disabled, logged out
- 02 Check blockers robots.txt, noindex, canonicals, status codes
- 03 Diff rendered vs raw Anything only in the DOM is invisible to AI crawlers
- 04 Validate markup JSON-LD errors, breadcrumbs, author and dates
- 05 Measure field data LCP, INP and CLS at the 75th percentile
- 06 Read the logs Which bots actually arrived, and how often
Fix them in dependency order, because early failures make later work pointless. A page an engine cannot crawl cannot be indexed; a page it cannot render cannot be read; a page it cannot read cannot be cited no matter how perfect its schema.
- The blockers (A and B, points 1–15). A single
Disallow: /or straynoindexzeroes out everything downstream. - Rendering (D, points 23–29). The highest-leverage GEO fix and the one most audits skip.
- Architecture and the GEO layer (C and G). Internal linking, IndexNow, answer-first structure, freshness.
- The enhancements (E and F). Schema and Core Web Vitals are multipliers on a foundation that already works, not substitutes for one.
On a sub-500-page site the sequence is a focused day or two, then a light quarterly re-check for regressions. The usual ones: a redesign that reintroduces client-side rendering, a plugin that adds a rogue noindex, a CMS update that breaks schema.
Why a GEO audit differs from an SEO audit
Three things change when the audience is not only Googlebot.
- Rendering becomes the dividing line. Google renders JavaScript with a ~5-second median delay. GPTBot, ClaudeBot and PerplexityBot do not execute it at all.
- The unit of success shifts from ranking to citation, which rewards answer-first structure and discrete extractable facts.
- Entity and authority signals carry more weight. On correlational evidence, sameAs, author markup and off-site brand mentions track AI source selection more closely than they track classic ranking.
Google's own guidance on optimising for AI experiences makes a compatible point in gentler language: there is no separate AI checklist, only a page a machine can read. If the vocabulary is unfamiliar, the AI search glossary defines every term used here, and what AI SEO means sets out the umbrella this work sits under.
Which items do not transfer between engines
A single checklist implies a single reader. There is not one.
| Item | Why it does not transfer |
|---|---|
| JavaScript rendering | Google renders. Several AI crawlers do not. The same page has two different contents depending on the reader. |
| Structured data | Google uses it for rich results. Live-fetch tests suggest some AI systems ignore it. Same markup, different value. |
| Sitemaps and IndexNow | These speak to search indexes. An engine fetching live may never consult either. |
| Core Web Vitals | A ranking input for one audience. Largely irrelevant to a bot that fetches HTML and leaves. |
| Internal linking | Helps discovery everywhere. Helps ranking only where a link graph is used. |
This is why the order above puts rendering above schema: the items that transfer everywhere come first.
What the rendering fix looks like on one page
Category D is abstract until you see the same page in two states. Both versions below render identically in a browser. Only one of them exists for a client that does not run JavaScript.
| State | What a non-rendering fetch receives | Consequence |
|---|---|---|
| Before. Article body and the related-posts module assembled client-side from an API response. | A shell: navigation, footer, and an empty container. The headline and the three key facts are absent from the raw HTML, and the internal links do not exist as <a href>. | Nothing to extract and nothing to follow. The site looks well linked to a human auditor and behaves like a set of orphans — the failure mode named in category C. |
| After. Same page server-rendered or statically generated, related posts emitted as plain anchors. | Headline, the three key facts, and every internal link present in the initial HTML, with scripts disabled and logged out. | The page is a retrieval candidate rather than a shell, and the discovery path to its neighbours survives. This is exactly the diff the category-D diagnosis produces. |
Evidence The readability difference is checkable by fetching the page yourself. That fixing it raises citations remains a mechanism argument, and this page does not upgrade it.
Eight ways an audit gives a wrong answer
Most bad audits are not careless. They are run in the wrong conditions.
- Auditing in a browser. Your browser runs JavaScript. Half this checklist is about clients that do not.
- Auditing while logged in. Sessions change what a server sends.
- Auditing one page. A clean homepage says nothing about your article template.
- Trusting a crawler tool's defaults. Many execute JavaScript by default, hiding the exact failure you are looking for.
- Ignoring subdomains. Each host has its own robots file.
- Testing from one location. Some stacks vary responses by region.
- Auditing staging. Staging often carries blocking rules production does not, and sometimes the reverse.
- Skipping the log check. The checklist describes what a bot could do; logs show what it did.
Only the last one is evidence. The other seven describe conditions under which a passing audit means nothing.
The tool stack to run it with
Most of the 50 points are covered by free, first-party tools.
- Google Search Console - indexation status, coverage errors, URL Inspection with rendered-HTML view, Core Web Vitals field data. Your primary lens for A, B and F.
- Bing Webmaster Tools - Bing indexation, IndexNow submission, and crawl data Search Console cannot give you. Essential for category G.
- A crawler - Screaming Frog (free up to 500 URLs, exactly this guide's ceiling) or Sitebulb surfaces orphan pages, redirect chains, missing canonicals, broken status codes and duplicate titles in one pass. Covers most of A, B and C.
- Rich Results Test and Schema Markup Validator - validates every JSON-LD block (category E).
- PageSpeed Insights / CrUX - LCP, INP and CLS against the real-user thresholds (category F).
- Your raw server logs - the only way to confirm which AI crawlers visit and how often. Filter by user agent, verify by IP; the technique is detailed in the AI crawler guide, and the Claude Code for SEO guide covers scripting the raw-fetch and diff steps.
None of them answers the question that matters most: whether an AI engine can read your content. That test is free and manual. Open a page, view source, and search for your headline and key facts. If they are in the raw HTML, the AI crawlers can see them. If they only appear in the rendered DOM, you have a rendering problem no other tool will flag as urgent.
Why you cannot prove the audit worked
Everything changes at once. An audit is a batch of fixes, and attributing a later improvement to any single one is not possible from the outside. The baseline moves. Engines update during your remediation window, so a change in your numbers may be theirs. Success is invisible. The best outcome is often nothing bad happening, and prevented failures leave no trace in any dashboard. Selection bias. Teams that run audits tend to be teams doing other things well, so any correlation with outcomes is heavily confounded.
Open question We know of no published controlled test of a full technical audit's effect on AI citation. That absence is worth stating plainly, given how confidently this kind of work is usually sold. If server rendering turned out to show no citation effect, the highest-priority item on this list would lose its justification - and that result would go into the null results registry rather than quietly disappear.
Open questions and what would change this page
Open question Does any AI system weight page speed at retrieval time? The mechanism is unclear and no public test exists. Evidence either way would move category F up or down.
Open question How fast do these systems notice a fixed page? Recrawl behaviour after remediation is barely documented; the crawl-to-citation latency study is the registered attempt to measure it.
Open question Does content hidden behind a click count as present? It is in the DOM but not visible, and nobody has published a test of how that is treated.
Three findings would force a rewrite of this page.
- Evidence that a major AI crawler renders JavaScript. That would reorder the priorities above.
- A replication of the schema study reaching a different conclusion. Category E would move from cautionary to supportive.
- An operator documenting that it consults sitemaps or IndexNow at answer time. That would raise those items for AI purposes.
Last verified: September 2026
- Restructured so the checklist leads the page and the background follows it.
- Added an evidence grade to every one of the seven categories, so a reader can tell which items rest on documented mechanics and which rest on current crawler behaviour.
- Cut the stakeholder-reporting and "why it compounds" sections; neither carried evidence.
- Added the "what does not transfer between engines" table and the eight audit failure modes.
Next: generate the markup for category E with the free schema markup generator. Then read the GEO tactic evidence scoreboard to see which of the category-G items have evidence behind them and which do not. Everything on this site that needed testing gets tested in the studies.