Why doesn’t AI mention your brand? Find out which half is brokenGet a free report
LLMention
Blog

Notes from measuring AI search

Pieces from the run behind the scanner: the distribution nobody quotes, the nine homepages that never answered, the markup gap in most of the sample, the two rules this site will not pretend to be stronger than they are, and the technical notes that follow from measuring the same thing repeatedly.

RSS feed →

Published 18 October 2026 · by Alex

Method30 October 2026

What I would measure next (and what this tool still cannot tell you)

The honest close to the series: what the tool cannot see, what was actually measured, and the next round of questions that could be answered without overclaiming.

30pieces in this series
Method30 October 2026

A 30-site sample is not a benchmark: reading the study correctly

A small sample is useful when it is described as one. The damage starts when 30 hand-picked homepages become "the industry average".

30homepages in the convenience sample
Method30 October 2026

Paywalls, consent walls and citation loss

A paywall is a business decision; a consent wall is a legal workflow. Both can hide the body, and the citation cost is the same.

0gated article pages on this site
Method30 October 2026

Core Web Vitals and AI crawlers: what is actually connected

Both are about pages being fast, so a sentence connecting them sounds plausible. The connection is shared causes, not a shared score.

3Core Web Vitals metrics
Method29 October 2026

TTFB, edge caching and prerendered HTML

Prerendered does not mean cached. The build answer and the runtime answer are different, and TTFB plus a cache-status header shows which one a reader got.

MISSx-nextjs-cache on repeated requests
Method29 October 2026

Cache headers and what an auditor actually sees

An external audit read the old page after a deploy because the headers allowed it. The fix was not a harder purge; it was to stop granting permission to be stale.

0max-age on HTML after the fix
Method29 October 2026

Redirect chains and crawler budget

A redirect is for addresses the site cannot edit. When internal links depend on one, the site pays the hop on every crawl and every click.

1hop for the legacy URLs tested
Method29 October 2026

Refused vs blocked: telling WAF from robots.txt

The same symptom has three causes and three fixes. Editing robots.txt for a WAF refusal is the most common waste in this category.

9blocked rows in the 30-site sample
Method29 October 2026

Three runs per question: why "2 of 3" beats a percentage

Three runs are the smallest set with a majority and a visible split. The result is x of n, never a rate, because the denominator is the finding.

2/3the form the measurement is reported in
Method28 October 2026

Meta descriptions: does an AI engine read them?

The question is unanswerable from outside, and the useful response is not a guess. Write the summary for the reader, measure the length, and do not let it stand in for the page.

33/40sampled descriptions in range
Method28 October 2026

Content-Signal and robots.txt content policies

Content-Signal lets a site distinguish search, AI input and training. It does not block anything, and a line that disagrees with the robots rules is worse than no line.

1point of 16 for a content-signal line
Method28 October 2026

Markdown alternates: serving LLM-readable content

The declaration is one point and never followed. The twin behind it is the work: generated from the same source, scoped to the pages that exist, and tested against the page.

1point for a text/markdown alternate
Method28 October 2026

Hreflang for a site that machine-translates

Cheap translation and a loop-generated cluster look complete. The failure is a declaration that names pages which do not exist, and a single fetch cannot catch it.

2points for two distinct language codes
Method28 October 2026

Sitemap lastmod: why false freshness is worse than none

A lastmod is a promise that something changed. A field that always claims freshness teaches the crawler to ignore it, and the loss is quiet.

27rule pages hit by a stale lastmod
Method27 October 2026

Canonical URLs: the mistakes that split citations

The interesting failures are not in the tag but in the address it names. A canonical that points at a redirect, a 404 or another language is worse than none.

1point for a rel=canonical tag
Explainer27 October 2026

Heading hierarchy for extraction, not just SEO

One H1, real H2 sections, landmarks — but the reason is extraction, not a checklist. What a heading does for a passage, and what it does not.

1H1 the outline rule wants
Method27 October 2026

Quotations, attribution and trust signals

The scanner passes any blockquote and any byline-shaped string. Neither is evidence. What a quotation needs, and the trust signals around it.

3points for any blockquote
Method27 October 2026

Statistics without sources: the citation trap

A number is the most quotable thing on a page and the easiest to fake. Both rules that touch statistics are presence checks, and the rule pages say so.

0numbers the scan verifies against a source
Method27 October 2026

Tables, lists and the cost of prose-only facts

A paragraph can hold five facts and be cited for none of them cleanly. A list item is one claim; a table row is a tuple. The trade is real in both directions.

3points for a list and a table
Method26 October 2026

Answer-first writing: measured positions

Answer-first is a claim about position, so it can be measured. This is the measurement taken here — 101 pairs, 90% short openers — and the limits of a sample written to the rule.

91/101openers under 80 words
Explainer26 October 2026

How answer engines pick the span they quote

An engine quotes a sentence or a paragraph, not a URL. The author's half of that decision is making the passage findable, self-contained and checkable.

60percent short openers for a full pass
Explainer26 October 2026

datePublished, dateModified and AI freshness

A page's dates are claims about its own history. The easiest way to make them worthless is to move one on every deploy.

12months for a full freshness pass
Explainer26 October 2026

FAQPage schema after the rich-result changes

Most sites kept their FAQPage markup after the rich result went away without asking what it still does. The answer is smaller and more useful than the old one.

3points for a FAQPage node
Explainer26 October 2026

sameAs: which profiles actually help an entity resolve

sameAs is a list of claims, not a link dump. What counts as corroboration, what counts as padding, and why the scanner's two-point check does not fetch a single profile.

2points for a non-empty sameAs
Explainer25 October 2026

The entity graph: Organization vs WebSite vs SoftwareApplication

Most entity markup is three disconnected blocks. The part that makes it a graph is the identifiers and relations — and the part most sites skip is deciding what the product is.

3nodes most product sites need
Explainer25 October 2026

llms-full.txt and context budgets

A full corpus is offered as the generous version of llms.txt. It is also the version that pays a context bill on every request — and most sites never do the arithmetic.

~25ktokens in a 100 KB corpus
Explainer25 October 2026

llms.txt: what it changes and what it does not

llms.txt is cheap to publish and easy to over-claim. This is what it can do, what it cannot, and how to tell whether yours is worth the bytes.

3.3points of 100 at most
Explainer25 October 2026

What a crawler sees when your page needs JavaScript

A page that looks complete in a browser can be a shell in the fetch a crawler makes. The gap is cheap to measure and easy to miss, because every manual test runs JavaScript.

100words the rule looks for
Method25 October 2026

Cloudflare WAF and AI crawlers: what a 403 actually means

Most accidental AI-crawler blocks are a 403 that was never about robots.txt. The two-probe test tells you which layer refused the request before you edit anything.

403the status this article is about
Method24 October 2026

Which robots.txt lines actually block AI crawlers

Most sites that block an AI crawler did not mean to. This is the difference between a deliberate policy line, a wildcard that catches more than intended, and a 403 that has nothing to do with robots.txt.

5crawler tokens the scanner tests
Study18 October 2026

We scanned 30 homepages and none graded an A

The study has one number everyone quotes and four it rarely does. This is the distribution behind them, including the nine rows that never produced a page at all.

0 of 30scored an A
Study18 October 2026

Six news publishers, six blocking AI crawlers

Every news publisher in the sample turns away at least one of the crawlers behind ChatGPT, Claude, Perplexity and Doubao. That is a policy choice with a measurable cost, and it is not obviously the wrong one.

6 of 6news sites block a crawler
Method18 October 2026

Nine homepages never answered the crawler

A 403 is not a page. Nine rows in the study describe an error response rather than a site, and counting them as zero would have produced a more dramatic and less true number.

9 of 30answered with an error
Study18 October 2026

22 of 30 sites leave AI guessing who they are

A model that cannot bind a name to a domain has to guess, and a guess is not a citation. The markup that fixes it is four lines of JSON, and most of the sample does not have it.

22 of 30declare no entity
Explainer18 October 2026

llms.txt: what the evidence actually supports

The file is easy to add and hard to justify as a lever. This is the case for publishing one anyway, and the case against pretending it is more than it is.

3.3 / 100maximum points at stake
Method18 October 2026

How to read a failed check and fix the right thing

Most bad fixes come from reading a failure as an instruction. The rule pages publish what each check does not test for exactly this reason; this is how to use that.

3 questionsbefore you rewrite anything

All posts

36 of 36 posts

Every piece, newest first. Filter by category or year, or search a title.

2026

  1. What I would measure next (and what this tool still cannot tell you)Method
  2. A 30-site sample is not a benchmark: reading the study correctlyMethod
  3. Paywalls, consent walls and citation lossMethod
  4. Core Web Vitals and AI crawlers: what is actually connectedMethod
  5. TTFB, edge caching and prerendered HTMLMethod
  6. Cache headers and what an auditor actually seesMethod
  7. Redirect chains and crawler budgetMethod
  8. Refused vs blocked: telling WAF from robots.txtMethod
  9. Three runs per question: why "2 of 3" beats a percentageMethod
  10. Meta descriptions: does an AI engine read them?Method
  11. Content-Signal and robots.txt content policiesMethod
  12. Markdown alternates: serving LLM-readable contentMethod
  13. Hreflang for a site that machine-translatesMethod
  14. Sitemap lastmod: why false freshness is worse than noneMethod
  15. Canonical URLs: the mistakes that split citationsMethod
  16. Heading hierarchy for extraction, not just SEOExplainer
  17. Quotations, attribution and trust signalsMethod
  18. Statistics without sources: the citation trapMethod
  19. Tables, lists and the cost of prose-only factsMethod
  20. Answer-first writing: measured positionsMethod
  21. How answer engines pick the span they quoteExplainer
  22. datePublished, dateModified and AI freshnessExplainer
  23. FAQPage schema after the rich-result changesExplainer
  24. sameAs: which profiles actually help an entity resolveExplainer
  25. The entity graph: Organization vs WebSite vs SoftwareApplicationExplainer
  26. llms-full.txt and context budgetsExplainer
  27. llms.txt: what it changes and what it does notExplainer
  28. What a crawler sees when your page needs JavaScriptExplainer
  29. Cloudflare WAF and AI crawlers: what a 403 actually meansMethod
  30. Which robots.txt lines actually block AI crawlersMethod
  31. We scanned 30 homepages and none graded an AStudy
  32. Six news publishers, six blocking AI crawlersStudy
  33. Nine homepages never answered the crawlerMethod
  34. 22 of 30 sites leave AI guessing who they areStudy
  35. llms.txt: what the evidence actually supportsExplainer
  36. How to read a failed check and fix the right thingMethod

What is published here?

First-party writing: measurements from the 30-site study, explanations of rules that fail in ways worth explaining, and a record of where this method is weaker than it looks. Nothing here is a press release, nothing is sponsored, and no piece is written to fill a calendar.

The standard is one sentence long: delete the piece and ask what the reader lost. If the answer is a number they could not get elsewhere, or a step they can run themselves, it stays. If the answer is nothing, it does not get published — which is why every piece has to earn its place rather than fill a calendar.

The figures the archive turns on are all from one run over 30 homepages: 53% graded F, 7% reached a B, 30% never answered the crawler at all, 27% declared an entity and 63% have neither an entity nor asameAs list. Each piece below links to the rows it came from, and the rows can be re-scanned.

How was each piece made?

Every article rests on data that can be re-run. The study rows come from the scanner itself, the rule weights come from the published catalogue, and the limits come from the notes attached to each rule.

PieceData it rests onRule it reads
The distribution of 30 scoresThe published study rowsAll 40, grouped by dimension
The news publishersSix rows, their status codes and robotsCrawler passability
The nine that never answeredStatus and browser-status pairsThe measurement guards
The entity gapTwo boolean fields across the sampleEntity and sameAs
llms.txt and the evidenceThe weighting arithmeticContext files
Reading a failed checkThe rule pages and their notesThe published limits

What will not appear here?

  • Sponsored posts. There are no paid placements, and a vendor cannot buy a mention by buying a report.
  • Numbers without a source. A figure that cannot be traced to the study or a re-runnable scan does not go in, however plausible it sounds.
  • Predictions dressed as measurements. The scanner does not query a model about your brand, so neither do the articles about it.
  • Volume for its own sake. A posting schedule is a promise to publish, and a site that keeps it by lowering the bar has published less than it appears to.

How do I read a piece I disagree with?

Send the check, the URL and what the scan reported. A disagreement that names a rule is the most useful message this project receives, and the method is public specifically so a disagreement can be specific.

How the writing is produced, corrected and funded is described on the author page. The full rule set is at the check reference, and the arithmetic is on the methodology page.

Questions about the writing

Is this a blog?

It is a blog of first-party notes: study results, rule explanations and stated limits. The plan is a new note every few days, and each one still has to sit on a measurement — no news feed, no sponsored posts.

Can I quote a piece?

Yes, with attribution and a link. Quoting a figure without the sample it came from is the failure this archive is written to make harder, so please take the sentence that carries the number and its source.

Are the pieces peer reviewed?

No, and calling them that would be false. They are checked against the published data and the rule catalogue, and each one states where its own method is weaker than it looks.

Evidence and sources

GEO can boost visibility by up to 40% overall in generative engine responses, and in the paper's Table 1 the best of the tested methods improve on the no-optimization baseline by 41% and 28%. — Generative Engine Optimization, KDD 2024

The weightings this archive argues about follow published research rather than taste; the study rows behind each figure are published and re-runnable.

Primary sources