AKAntonios Kioksoglou
Contact

← All articles

By · · 7 min read

What I changed to make this site readable by AI answers, with the numbers

Text in the HTML instead of in scripts, layout shift from 0.28 to 0, no requests to Google's font servers, and tests that keep the structured data true. These are the changes, the numbers before and after, and what Google's own guide says you can ignore.

On this page
  1. What was wrong
  2. What I changed
  3. The numbers
  4. What didn't matter
  5. If you have only an hour
  6. Try it on your own site in ten minutes
  7. What I cannot tell you
  8. Where this leaves me

This site is plain HTML, CSS and JavaScript, with no framework. I wanted it to be easy for search engines and AI answers to read, quote and trust. This is what I changed, what the numbers were before and after, and which popular advice turned out not to matter. As on the rest of this site, the work was done by an agent from a written spec, with the tests as the gate.

There are no rankings in it. At the time of writing the site has no address yet, so nothing has been crawled and I have no Search Console data. It is a report on readiness, from one site, measured in a lab.

What was wrong

For a browser with JavaScript the site was fine. For anything that does not run scripts it was thin.

  • The About story was drawn by a script. It lived as Markdown inside a script block, so without scripts the page held fewer than 200 words.
  • An article was an empty frame. It showed a loading message and filled itself from a Markdown file. Without scripts the page showed 17 words.
  • Pages moved while they loaded. The portrait, the text and the fonts arrived late. Layout shift was 0.28 on the About page and 0.255 on an article. web.dev calls anything above 0.25 poor and wants 0.1 or less. The Software page was at 0.125.
  • Fonts came from another host. The About page made seven requests to Google’s font servers and waited for a stylesheet from them before it could paint.

What I changed

  1. Finished pages. A build step (node tools/build.mjs) turns the About story, the questions page and every article into complete HTML. Scripts now only add behavior, like the contents list and the copy button. The build is five small Node files, about 580 lines, with no dependencies.
  2. Nothing jumps. The portrait and the tag buttons are in the HTML with their sizes. One pixel font is preloaded and set so the headline cannot reflow when it arrives.
  3. Fonts from the site itself. No request leaves the site for them. The first-screen fonts are preloaded when the site is served over http, and a page opened from disk skips that.
  4. One file for every head. Titles, descriptions, social tags and the structured data are written from one file: a Person with roles and certifications, a FAQPage, and a BlogPosting for each article that cites its sources.
  5. Structured data that cannot get ahead of the text. A test reads every topic, role and certification in the data and looks for those words in the text of the pages. It fails if one is missing.
  6. Nothing guessed. Canonical links, the sitemap and the feed exist only when the site has an address. With none, they are not written.
  7. A plain version for agents. Every article is also a Markdown file, there is an llms.txt file, and a candidate summary states the facts in plain text.
  8. Tests. Eight suites with more than 750 checks. Mistakes are planted on purpose, in copies, to check that the tests notice.

A second AI review of the finished work found real problems the first pass had missed: a preview page that named the wrong canonical page, and Markdown copies that could compete with the real pages in search results.

The numbers

Text visible without JavaScript, counted in the main part of the page:

PageBeforeNow
Aboutunder 200 words958
An article17about 1,900 to 2,900

Lighthouse, mobile, on the same plain local server before and after:

PageLayout shiftPerformance score
About0.280 to 0.00082 to 96
An article0.255 to 0.00086 to 97
Software0.125 to 0.00094 to 94
Candidate summary0.095 to 0.00097 to 97

The layout shift is the clear result. The scores moved most where the shift was worst, and on two pages that were already fast they dipped by two or three points on that plain server (the e-commerce page from 98 to 96, the marketing page from 98 to 95). I put that down to the server, which sends no compression and answers one request at a time, and the later runs below point the same way. Treat that as a note, not a proof.

Later runs used a local server that compresses text and keeps connections open, as a real host does. On it all thirteen public pages score 97 to 100 for performance and 100 for accessibility, best practices and SEO. Layout shift is 0.000 on every one, and the largest contentful paint is between 1.6 and 2.4 seconds, where web.dev calls 2.5 seconds good. I have no “before” for that server, so I do not count it as a gain. The About page now makes no request to Google’s font servers.

What didn’t matter

Google published a guide to AI search in May, and it is blunt:

  • There are no additional requirements to appear in AI Overviews or AI Mode, and no special schema.org markup.
  • Google Search does not use llms.txt, and it neither helps nor harms to keep one. I kept mine for other systems that may read it, and I have no evidence that any does.
  • Chunking content, rewriting it for AI systems and chasing inauthentic mentions are things Google says you can ignore.
  • FAQ rich results stopped showing in Google Search on May 7, 2026, so the FAQPage data here is plain structured data and gets no special treatment.
  • Google says it can process JavaScript as long as it is not blocked. So for Google the finished pages were not required.

I built them anyway, for two reasons. I cannot say that every crawler or agent runs scripts, and the no-script test is the strictest reading. And the layout shift could not be fixed without putting the text and the portrait in the HTML.

The guide also notes that browser agents read a page through screenshots, the page structure and the accessibility tree. That is one more reason to keep it honest HTML with real headings and labels, which the axe-core scans of every page here look for.

What the guide does ask for matches the list above: crawling allowed in robots.txt and by any CDN, important content in text, structured data that matches the visible text, and a good page experience. It also says unique, first-hand content will likely matter more in the long run than any other suggestion in it. That part is not a technical change, and no build step does it for you.

If you have only an hour

Do these first, in this order: put the text you want quoted into the HTML, give images and embeds their sizes, serve your fonts yourself, give every page its own title and description, and make sure your structured data says nothing the page does not. They are cheap, and they are the same list Google gives.

Try it on your own site in ten minutes

  1. Turn JavaScript off and reload. Is the text you want quoted still there? Count the words.
  2. Run Lighthouse on mobile. Look at layout shift (0.1 or less is good) and largest contentful paint (2.5 seconds or less).
  3. Open robots.txt, then check that your CDN or firewall does not block crawlers that robots.txt allows.
  4. Check that every page has its own title and description.
  5. Read your structured data next to the page. Does every claim in it appear in the text?
  6. Ask three assistants a question your page answers, and note who is named. Answers change from day to day, so repeat it monthly. The article on shopping assistants has a test like this.
  7. Once the site is live, verify it in Search Console and look at its Generative AI performance report.

What I cannot tell you

Whether any of this ranks, or gets the site named in an answer. Google’s guide is clear that a page can meet every requirement and still not be crawled, indexed or served. Which change did what, because I made them together. And whether the lab numbers hold for real visitors: Lighthouse is a simulation, and this is one site. When the site has an address, the Search Console report is the first place I will look.

Where this leaves me

Most of this was ordinary work: put the text in the page, stop it from jumping, keep the data honest. None of it would make a good demo. Google’s own advice says the same. The one thing I would repeat is the test that fails when the structured data claims more than the page says. It is cheap, and it keeps the part that is easy to inflate honest.

Sources: Google Search Central, Optimizing your website for generative AI features on Google Search (updated July 10, 2026), AI features and your website and Latest Google Search documentation updates. web.dev, Cumulative Layout Shift and Largest Contentful Paint. The measurements were made with Lighthouse 12.8.2 on a local copy of the site. Google’s guidance changes often, so some details here may have moved on.

Markdown version Email me about it

More articles

  1. GA4 or Piwik PRO? What each one sees after a visitor says no

    Both tools lose data when a visitor declines cookies, and they lose different things. This is what GA4's consent mode and Piwik PRO's anonymous mode each record, what is observed and what is estimated, where the EU's cookie reform stands, and a test to run on one site.

  2. Let an AI agent read your analytics, not change it

    Google now ships official MCP servers for Analytics, Ads and BigQuery, so an agent can answer questions about your numbers. This is how I would give it a seat instead of the keys: read-only identities, ten questions with known answers, and the ways it still goes wrong.