Skip to main content
Jun 26, 2026 · 3 min

Make your site legible to a machine that answers

Before an AI can cite you, it has to read you. Server rendering, clean structure, and schema are the line between being quoted and being skipped.

Khoa

The reader changed; the oldest rule didn't. If you want a machine to quote you, the words have to actually be there when it looks. Most of GEO is downstream of that one sentence.

Render it in the HTML

The failure mode I see most: a beautiful site, built as a client-rendered single-page app, that ships an almost-empty HTML shell and paints the real content with JavaScript a moment later. A browser fills it in. An answer engine — and plenty of crawlers — often don't. They read the raw HTML, see a skeleton, and move on. You can't be cited for content the model never received.

The fix is boring and total: server-render (SSR) or statically generate (SSG) your pages, so the content is in the first response. View-source on your own site. If the article text isn't in there, that's the whole problem.

When I built SoiTarot, the first thing I checked after deploying wasn't the design — it was view-source. The site runs on Next.js with static generation, so every one of those ~15,000 horoscope and compatibility pages ships its full text in the first HTML response. No waiting for JavaScript. No skeleton. The words are just there. That single decision — SSG over client rendering — is the reason those pages got indexed in the first week instead of the first month.

I've audited sites where the content was gorgeous in the browser and completely absent in the source. The team had no idea. They'd been checking in Chrome, where everything looked fine. View-source doesn't lie.

Structure it so a chunk can be lifted

Models cite passages, not pages. Make passages easy to take:

  • Real heading hierarchy — one H1, then H2/H3 that actually describe the sections.
  • Answer-first writing: state the conclusion, then explain. The first sentence under a heading should be the quotable one.
  • Lists and tables for anything comparative — they extract cleanly into an answer.

Mark it up — in the server HTML

Structured data (JSON-LD) tells the model what things are: an Article, a Person or Organization, a Product, an FAQ. Put it in the server-rendered HTML, not injected later by JavaScript — Google's own December 2025 guidance is explicit that JS-injected structured data and meta can be missed or delayed. And define the entity behind the site: a Person/Organization with sameAs links so the model knows who the source is.

The tradeoff nobody mentions

Here's the tension: making a site legible to machines can make it feel like it was written for machines. Answer-first paragraphs can read as blunt. Lists can flatten nuance. I've seen GEO-optimized pages that technically pass every check and feel like a spec sheet.

The way I handle it on Sartoro, a menswear brand: the product pages get full structured data — Product, Offer, AggregateRating — because that's what the model needs to quote a price and a rating. But the editorial content, the brand story, the lookbook — those stay human-first. I don't force answer-first structure onto a page whose job is to make someone feel something. The machine can read the product schema. The person reads the story.

Legibility is a technical requirement, not a voice requirement. You can be quotable and still sound like a person. The trick is knowing which pages are for citing and which are for feeling, and optimizing each for its actual job.

The test

There's no mystery to checking this — it's all in the raw response. View-source, or paste your URL into the free AI-readiness checker: it flags whether your content is server-rendered, whether you have JSON-LD, and whether the basics (title, canonical, Open Graph) are present. Pass those and you've cleared the technical bar of GEO — what's left is earning the trust to actually get picked.