Technical SEO used to mean writing for exactly one audience, which was Googlebot. Now your HTML gets read by classic crawlers, LLM training scrapers, real-time retrieval bots, and whatever new fetcher ships next quarter. The fundamentals didn’t get replaced, but the tolerance for a messy site dropped to zero.
Technical SEO for AI search is the discipline of making your site effortless for machines to parse and safe for them to quote. Everything worth doing falls out of that sentence: HTML that arrives fully rendered from the server, entity markup that pins down exactly who you are, canonical URLs that agree with each other, and content shaped so a model can lift a clean answer with your name still attached, none of which is exotic work. The sites winning citations are doing boring infrastructure work while their competitors argue about prompts.
People keep asking me what SEO for LLMs actually involves, expecting a secret. After 10+ years of technical SEO, my honest answer: the technical side of AI search optimization is the SEO you should’ve been doing all along, executed stricter, because the new readers are less forgiving than Googlebot ever was.
Does JavaScript rendering hurt AI visibility?
Yes, and more than it hurts you in Google. Googlebot will eventually render your JavaScript; it’s had years and a rendering farm to get decent at it. Most AI crawlers won’t - GPTBot, ClaudeBot, and PerplexityBot grab your raw HTML and move on, so if your content only exists after a framework hydrates, you don’t exist to them.
The test takes about ten seconds, so go run it now. Curl your most important page, or hit view-source (not inspect element, which shows the rendered DOM and lies to you). If the words your buyers care about aren’t in that response, stop reading this and go fix that first.
The fix is server-side rendering or static generation, and nothing cleverer than that. My own site is a static-rendered Astro build: every sentence you’re reading arrived in the initial HTML response, and a bot that executes zero JavaScript gets the exact same page you do, which was never an aesthetic choice.
Is structured data wasted on LLMs?
The skeptic’s version goes: models read prose, not JSON-LD, so schema is dead. That’s half right at best, because while a model generating a sentence isn’t parsing your markup mid-token, the systems feeding that model absolutely are. Google’s AI Overviews sit on top of Google’s index and knowledge graph, and Bing feeds Copilot. The retrieval pipelines behind the assistants lean on crawl infrastructure that has consumed structured data for a decade.
The way I think about structured data for AI is that it’s entity declaration rather than rich-snippet bait. Organization and Person markup with a stable @id and a reconciled sameAs set tells every machine reading your site exactly which real-world thing it’s looking at. That disambiguation is what keeps an assistant from confusing you with the other company that shares your name.
My own site carries a full entity graph for exactly this reason: one Person node, one stable identifier, repeated identically on every page. The one rule I’d hold anyone to is never marking up claims the visible page doesn’t make, because contradictions cost more trust than the markup earns back.
How do you structure content so an AI can cite it?
Models quote whatever is easiest to extract, which in practice means:
- Answer first. A direct answer in the first two sentences under every heading, nuance after. The inverted pyramid came back from the dead.
- Headings as questions, phrased the way people actually ask assistants.
- Steps as numbered lists, definitions as single crisp sentences. If a process has an order, show the order.
- Sections that stand alone. Retrieval systems chunk pages. A paragraph that needs three earlier paragraphs of context won’t survive the chunker.
That covers the technical half of the problem. The strategy half, deciding what to write and how to earn mentions across the web, is what I covered in my breakdown of generative engine optimization.
Do Core Web Vitals still matter?
Reality check: Core Web Vitals were never the ranking jackpot the tools industry sold, and AI crawlers could not care less about your layout shift. What actually matters is server response, because slow TTFB burns crawl budget and times out the real-time fetches that happen while an assistant is mid-answer.
So flip the priority and chase fast, complete HTML responses that are cheap to serve. A Lighthouse 100 on a client-rendered page counts for very little next to a plain 200 response with all the content in it. I’ve watched teams spend a quarter shaving CLS decimals while their category pages quietly soft-404’d.
Why do site architecture and canonicals compound in AI search?
Duplicate URLs have always split signals, and in classic SEO that just meant diluted link equity. In AI search it’s worse: retrieval systems deduplicate aggressively, so when the same content lives at four URLs, you can lose to your own clones or get discarded as near-duplicate noise. Every canonical conflict tells machines “I’m not sure which of these is real either.”
Clean architecture concentrates that force instead of scattering it, because fewer and stronger URLs mean clearer entity mapping and internal links that compound authority. The full technical rebuild at Zomee, which was mostly consolidation, rendering fixes, and canonical discipline, pushed organic up 300%. It is unglamorous work, and it moves the graph more than anything else on this list.
Should you create an llms.txt file?
llms.txt is a proposal, not a standard: a curated markdown map of your site for language models. It’s a reasonable idea on paper, but no major AI provider has confirmed using it, Google’s own people have publicly compared it to the keywords meta tag, and when site owners actually check their logs, AI-bot requests for the file round to zero.
It costs almost nothing, so add one if you want to, but treat it as a low-probability bet rather than a strategy. If an agency’s “AI SEO package” turns out to be an llms.txt file and an invoice, look elsewhere. The work that demonstrably moves AI visibility is everything above this section, and if the ecosystem ever does adopt the file, generating one takes an afternoon.
How do you measure AI search referrals?
Two layers, because clicks only tell half the story.
Referral traffic. ChatGPT, Perplexity, Gemini, and Copilot pass referrers often enough to track. In GA4, build a custom channel group or a segment on session source matching chatgpt.com, perplexity.ai, gemini.google.com, and copilot. The volumes will look small next to organic, but check conversion rates before you shrug - visitors who arrive pre-sold by an answer tend to behave like warm leads.
Presence. Most AI influence never sends a click, so you have to measure the answers themselves. Sample the assistants with real buyer questions on a schedule, then track how often you get mentioned and cited. This is what I build in production as Lead of Innovation and AI at Tandem Interactive: AI-visibility measurement that treats every prompt as a distribution and only flags movement when it’s statistically real instead of sampling noise.
And grep your access logs for GPTBot, ClaudeBot, PerplexityBot, and Google-Extended. Crawl activity is the leading indicator; referrals lag behind it.
Do these in this order
- Curl your money pages. If the content isn’t in the initial HTML, fix rendering before touching anything else. Nothing below matters until this passes.
- Get TTFB down. Fast, complete responses beat lab-score perfection every time.
- Consolidate duplicates. One canonical URL per topic, with redirects and canonical tags that agree with your sitemap.
- Ship entity markup. Organization and Person with stable @id and sameAs links, plus Product or Article where they genuinely apply.
- Restructure key pages for extraction. Question headings, direct answers up top, numbered steps, FAQ at the end.
- Stand up measurement. A GA4 segment for AI referrals plus bot activity monitoring in your logs.
- Then llms.txt, if you must. It’s last for a reason.
Stop doing this
- Shipping content behind client-side JavaScript and assuming “Google renders JS” covers you. Google isn’t the only reader anymore.
- Blocking every AI crawler on the strength of a blog post. Blocking GPTBot means opting out of being the answer, so make that call deliberately instead of out of panic.
- Chasing Lighthouse 100s while your server takes over a second to respond.
- Buying “AI SEO” packages where the deliverable is an llms.txt file.
- Marking up entities and claims your visible pages don’t support.
FAQ
Can ChatGPT read JavaScript-rendered pages?
Mostly they can’t, and that’s the whole reason rendering sits first on my list. GPTBot and the on-demand browsing fetchers pull server HTML and don’t execute your bundle. Content that only appears after client-side rendering is effectively invisible to them, which is why rendering sits at the top of my checklist.
Is llms.txt an official standard?
No, it isn’t a standard by any definition. It’s a community proposal with no confirmed adoption from any major AI provider. Harmless to add, but a red flag whenever it’s sold as the core deliverable of an “AI SEO” engagement.
Do AI crawlers respect robots.txt?
The documented ones say they do, and the majors mostly behave. But robots.txt is a request, not a firewall, and the long tail of scrapers ignores it. Check your access logs instead of trusting anyone’s documentation.
What structured data matters most for AI search?
Organization and Person with stable identifiers and sameAs links do the heavy entity lifting. Add Product, Article, FAQPage, or LocalBusiness where they honestly apply. Deep, accurate markup on a few types beats a scattergun of half-filled ones.
How much traffic does AI search actually send?
Small next to organic today, but it converts unusually well because visitors arrive pre-qualified by the answer that sent them. The bigger effect never shows in referral reports: answers that shape decisions without a click. That’s why presence tracking matters more than the referral count.
Most of this work is unglamorous, which is why it works and why it rarely gets done. If you’d rather hand it to someone else, here’s what I do.