SEO Lab

Re-picking the llms.txt Article List Every Month

A four-month log of rebuilding the "most-referenced by AI" list in an llms.txt from GA4 AI referrals — the rules, how much turned over, where we overrode the numbers, and what this log can't tell you.

9 min read2026-11-01

We rebuild the "most-referenced by AI" list in llms.txt from zero every month, counting the last 30 days of GA4 sessions from AI services per landing page. Four months in: from September on, 58–75% of each new list wasn't on the previous one; picking by count alone lets off-topic pages near the top; and GA4 "AI referrals" count people clicking links in AI answers — not AI crawlers reading your pages or your llms.txt. Whether rotating the list increased AI traffic is something this log can't tell.

What We Observed: The "Most-Referenced by AI" Section

The llms.txt of a web-development publication we run separately ("the site" below) has a section called "articles most referenced by AI," alongside hub articles by topic, a tool list, and recent posts. The llms.txt proposal calls the file a curated overview for LLMs but says nothing about what to curate. We added this section in May 2026 on the idea of putting pages that AI answers actually link to up front.

Since July, an automated job pulls GA4 data on the 1st of each month and writes a report with the selection table and the diff from last month. The job only proposes; a person reviews before anything goes live. Of the five runs from July to November, four were applied and one (August) was skipped. The site generates llms.txt server-side, and the list is a constant of article identifiers.

The Rules: What Counts, What's Out, How It's Ordered

ItemRule
WindowLast 30 days (run on the 1st of each month, through the previous day)
What counts as AISessions whose GA4 sessionSource contains chatgpt, openai, gemini, copilot, perplexity, or claude
UnitSummed per landing page across sources
Threshold2 sessions or more in total
ScopeArticles only — tool pages, practice apps, the home page, categories, and (not set) landings are excluded
ExcludedHub articles (they already appear in another llms.txt section)
OrderBy sessions; ties broken by engaged sessions
MethodRebuilt from zero each time — the previous list is never carried over

The source filter is a partial match on six words because one company's AI can show up under several labels. Visits from OpenAI's AI were split every month between two sources, chatgpt.com and openai. Filtering on one alone misses more than half the traffic for some pages — hence summing per landing page.

Engaged sessions are GA4's definition: lasting 10 seconds or more, including a key event, or including two or more page views. We use them only to break ties; the reason is in the section on removals below.

Monthly Turnover: 58–75% of Each New List Was New

RunResultKept from previous listNew in this listNote
JulyApplied100%0%Same pages as before; one pair swapped places
AugustSkipped——Most additions sat exactly at the threshold (2 sessions), so one visit decided whether they got in. The data was also a month old and missed that month's new articles, so we rebuilt from zero the next month
SeptemberApplied27%75%The biggest turnover; the previous #1 fell below the threshold
OctoberApplied58%63%More pages cleared the threshold, so the list grew
NovemberApplied42%58%Applied after removing one off-topic page that ranked #2

From September on, 58–75% of each month's list hadn't been on the previous one. The #1 page was different in all four applied runs, and only one article survived all four lists. Had we left July's list in place, fewer than 20% of it would still have met the threshold by November. A "most-referenced" list is, within a few months, a list of pages with no track record.

Turnover is tied to how thin the numbers are. Pages at exactly the 2-session threshold made up a quarter to a half of each month's list, and those move in or out on a single visit. We skipped August because most proposed additions sat in that band. On a site with little AI traffic, assume part of the churn is noise, not a change in track record.

The other shift was where AI visits land. This list covers articles only, yet the share of AI visits landing on articles fell from 60% in July to 43% in October. What grew were non-article pages such as tools and practice apps (tools have their own llms.txt section).

Where AI visits landed (share of all AI visits)JulAugSepOctNov
Articles60%60%56%43%49%
Non-article pages (tools, practice apps)15%13%34%45%40%
Home page20%19%1%1%1%
Landing unknown (not set)5%7%9%11%10%

Landings recorded as (not set) also grew from 5% to around 10%. Visits with no known landing page can't enter any list. The roughly 20% landing on the home page through August is likewise invisible to an article list.

Removals: One Case We Overrode, Two We Didn't

Off-topic Page A: Removed Despite Ranking #2

In November, page A — outside the site's subject, web development — ranked #2 under the rules. Its engaged share was high, and nothing in the numbers argued for removal. We removed it anyway, because llms.txt also tells AI what the site is about. An off-topic page second from the top of a web-development site's list risks blurring that. The reason is written right above the list definition, and the page will be removed for the same reason if it surfaces again.

To be candid, the same page A was #1 on July's list. We used the rule's output as-is and never looked at it from the subject angle. The session rule measures whether AI answers have linked to a page, not whether it fits the site. We keep that check out of the automated rule and leave it as something a person looks at each month.

Pages with Only Non-engaged Visits: Kept

Page B, #3 in November, had no engaged sessions at all. Page C, #1 in September, had an engaged share of 7% that month and 0% in October and November. We still kept the session-count order.

In September we considered reordering by engaged sessions because of page C. We didn't: the section is defined as "pages people reached from links in AI answers," and sessions are the most direct measure of that. Reordering by engagement would change what the section measures from month to month.

The other reason is that we can't verify what those visits are — someone closing the tab within 10 seconds, a link preview, a browser-based automated visit. GA4's numbers can't tell them apart. We don't treat something unidentified as grounds to remove a page, nor to keep it; that's why the order stays fixed.

GA4 "AI Referrals" Don't Count AI Crawlers

There's an easy mistake in calling this list "referenced by AI." GA4 counts a visit when its tag's JavaScript runs in a browser. Sessions sourced from ChatGPT or Gemini are people who clicked a link in an AI answer — not the number of times AI read the page.

AI crawlers barely register in GA4 by design. Vercel and MERJ's December 2024 study found that the major AI crawlers don't execute JavaScript (the exceptions being Gemini, which uses Googlebot's infrastructure, and Applebot). No JavaScript means no GA4 tag. OpenAI documents separate agents — OAI-SearchBot for search, GPTBot for training, and ChatGPT-User for fetches triggered by a user — and says ChatGPT-User isn't used for automatic crawling. Which of them came is something you see in server access logs, not GA4.

QuestionWhere to lookWhat it showsWhat it can't show
Did people arrive from an AI answer?GA4 session sourceWhich pages, how many visits, whether they readWhy that page was linked
Did an AI crawler fetch the page?Server access logs (user agent)When and which URLWhether the content was used in an answer
Was llms.txt itself fetched?Requests to /llms.txt in access logsThat it was retrievedWhether the list influenced what got linked
Showing in Google's AI featuresSearch Console Performance reportOnly as part of the Web search totalsIsolating AI Overviews on their own

Even when logs show a crawler came, you can't verify from outside whether what it read was used in an answer. Even when llms.txt was fetched, you can't tell whether its list affected what got linked. So this list is a trailing record of pages people reached from AI answers, not of pages AI read. To check you aren't blocking crawlers, see checking for AI crawler blocks; for how landing pages split by AI source, see our AI referral genre observation.

By AI Source: OpenAI at 60–80%, and More Pages Reached from Several AIs

Share of all AI visitsJulAugSepOctNov
OpenAI (both chatgpt.com and openai)75%59%64%73%77%
Gemini9%19%26%22%18%
Copilot9%15%7%4%4%
Perplexity3%3%1%1%1%
Claude3%4%3%0%0%

OpenAI made up 60–80% every month; Gemini rose to 26% in September, then eased to 18%. Claude accounted for a few percent from July to September and zero in October and November. Volumes are small, so a point or two is within noise.

The notable change was the share of pages reached from two or more AIs. Among candidates (articles with 2+ sessions), it rose from 8% in July to 43% in November. A page reached from a single AI drops off the list with one change in that AI's answers. We suspect pages reached from several AIs are likelier to stay the next month, but four months isn't enough to confirm it.

Pitfall: Right After Deploying, llms.txt Serves the Old List

The site doesn't build llms.txt on every request; it's generated server-side and cached for up to 13 hours. Open it right after deploying a new list and you get the previous one. That's expected, not a failed deploy — check again after the cache expires.

Checking has its own trap. Searching the whole file for an article name matches the same article in other sections, like recent posts, even when the list hasn't updated. Extract from the changed section's heading to the next heading and compare only that.

If a WordPress plugin or your own code generates llms.txt, know its cache period and whether a CDN sits in front before you check. To see whether the live file follows the format, fetch what's actually being served with the llms.txt checker. For writing the file itself, see how to create llms.txt.

What This Log Can't Tell You

We can't say rotating the list increased AI visits. Total AI visits did grow from July to October, but the site's articles and tools grew over the same period, and we have neither an unchanged period nor a comparable site to compare against. Nothing ties the growth to the list.

Google states that you don't need new machine-readable files or AI text files to appear in AI Overviews or AI Mode. Whether ChatGPT and other AI services use llms.txt in answers hasn't been disclosed and can't be verified from outside. We cover this in is llms.txt really unnecessary? and does llms.txt work as a GEO strategy?.

We keep rebuilding monthly because it's cheap: the proposal is automatic, and a person only checks subject fit and deploys. These four months showed that a list left alone becomes a list of pages with no track record. We continue not because we've confirmed an effect, but because it's a fair price for not serving a stale list.

Related Tools

Sources (checked November 1, 2026)

FAQ

How often should the article list in llms.txt be reviewed?▾
The llms.txt proposal (llmstxt.org) sets no update frequency. We rebuild ours monthly from the last 30 days of GA4 data, and over four months 58–75% of each new list consisted of articles that weren't on the previous one. A list left in place becomes, within a few months, a list of pages with no track record. On sites with little AI traffic, though, pages right at the threshold move in and out on a single visit, so a longer window or a bimonthly review keeps the list steadier.
Do GA4 "AI referrals" include visits from AI crawlers?▾
No. GA4 counts a visit when its tag's JavaScript runs in a browser. Sessions whose source is ChatGPT or Gemini are people who clicked a link in an AI answer. A 2024 study by Vercel and MERJ found that the major AI crawlers don't execute JavaScript (the exceptions being Gemini, which uses Googlebot's infrastructure, and Applebot), so their visits leave no trace in GA4. Whether a crawler came is something you check in server access logs.
Should the list be ordered by sessions or by engaged sessions?▾
It depends on what the list is meant to say. We defined ours as "pages people reached from links in AI answers," so we order by sessions and use engaged sessions only to break ties. Ordering by engaged sessions would drop pages whose visits are all non-engaged — but we can't verify what those visits are (a quick close, a link preview, an automated visit), so that isn't grounds to drop them either. Whichever you choose, keeping it fixed month to month matters more.
Should an off-topic page with plenty of AI traffic be listed in llms.txt?▾
We decided not to. The spec describes llms.txt as a curated overview for LLMs, so it also tells AI what the site is about. Off-topic pages near the top of a web-development site's list risk blurring that. The session threshold measures whether a page has a track record, not whether it fits the site's subject. We keep that check out of the automated rule and make it by hand each month.
Does rotating the llms.txt list increase AI referrals?▾
This log can't tell. Articles and tools across the site grew over the same period, and we have no comparison that separates the list's effect. Google states you don't need new machine-readable files to appear in AI Overviews or AI Mode. Whether ChatGPT and other AI services use llms.txt in their answers hasn't been disclosed and can't be verified from outside. We keep rebuilding the list because it's cheap and keeps it from going stale — not because we've confirmed an effect.
How do I confirm an llms.txt update has gone live?▾
First find out whether llms.txt is cached. Ours is generated server-side and cached for up to 13 hours, so opening it right after deploying returns the previous list. After the cache expires, extract only the section you changed and compare. Searching the whole file misleads you: the same article may also appear in another section, such as recent posts, and match even when the update hasn't landed. If a CDN sits in front, check its cache too.

Check That Your Live llms.txt Says What You Meant

Enter a URL and the checker fetches the llms.txt being served, then checks where it's placed and whether its format follows the spec. If the site has none, it can generate a template.

Open the llms.txt Checker
今井政和

Written by

今井政和

SEO Director / Frontend Developer

SEO Director with 20+ years of web industry experience. Creator of Direbase and the official WordPress plugin "ORECTIC SEO CHECK." Author of a book on web strategy inspired by Edo-era merchant principles.

@imai_director