How do you build a page so that AI cites it?
A model does not read a page in order. It splits the text into passages and picks the one that answers the question, which makes headings the boundaries of those passages. That produces four jobs: a question as the heading with the answer directly beneath it, 40 to 120 words per passage, JSON-LD with Organization and Article nodes, and access for answer crawlers in robots.txt. Internal links tie pages on one topic together, so a model finds a topic hub rather than a single answer.
AI does not have a page it reads from start to finish. It splits the text into chunks, scores each one separately, and puts into the answer whichever chunk answers the question. So GEO work is not a writing style but the way a page is assembled.
How a model splits a page
The model's question is not "what is this page about" but "where on this page is the answer". For the answer it takes a chunk rather than the whole document.
Headings set the chunk boundaries. A block without them is one passage, whatever its length. So a twenty-question FAQ with no headings is a single piece of text from which the answer to one question cannot be taken.
A heading is a passage boundary
Three rules follow for headings, and all three can be checked by code:
A question as the heading. "Our services" answers nothing. "How much does a GEO audit cost" is a question, and the model looks for the answer under it.
The answer directly beneath. No introduction and no context borrowed from the section above. The passage has to make sense on its own, because that is how it will be taken.
A heading tag, not bold text. On screen there is no difference, but <b>
creates no boundary at all. If a piece of text has a name, it is a heading:
h2 or h3.
How long one passage should be
Our threshold is 40 to 120 words between two headings. Shorter leaves nothing to quote; longer and the model starts trimming on its own, often cutting the part that mattered.
The second limit is sentence length. Sentences over 30 words are harder to extract, and once more than a third of them cross that line the passage stops being useful. This limit does not depend on language, which is why we check it: formulas built on syllable counts rate any Lithuanian text as "difficult".
Which crawlers have to get in
Crawlers come in two kinds, and they are worth separating:
ANSWER crawlers — these must be allowed, or your text is not in the answer
OAI-SearchBot ChatGPT search
ChatGPT-User when a person asks ChatGPT to open a link
Claude-User the same on Claude's side
PerplexityBot Perplexity's index
TRAINING crawlers — blocking these is a legitimate copyright decision
GPTBot OpenAI model training
ClaudeBot Anthropic
Google-Extended Gemini, NOT Google Search
CCBot Common Crawl
Blocking Google-Extended does not remove a page from Google Search and does
not remove it from AI Overviews; it only controls use in Gemini models. It is
the most commonly misunderstood line in the whole robots.txt file.
JSON-LD: which nodes are actually used
There is no need to produce much schema. In practice four nodes matter:
Organization— who you are. Without it a model guesses the company name from the text;WebSite— the site as one object;Articlewithauthor,datePublishedanddateModified— who wrote it and when;BreadcrumbList— where the page sits in the structure.
The nodes should be joined into one graph through @id references rather than
sitting as three separate statements. That is how Yoast and RankMath write it,
and failing to follow those references is why tools report "no author" for
perfectly tidy articles.
Schema has to match what is visible on the page. A node with questions that do not appear on screen is treated by Google as a violation.
The content cluster
One page answers one question. A topic is made of several pages, and they need to be joined by internal links: a main page about the topic plus a few answering its separate questions.
A page with no internal links pointing at it often stays unindexed even when it sits in the sitemap. A model will not cite an unindexed page, because some of them use the ordinary search index for answers.
What to check when you are done
robots.txt do the four answer crawlers get through
page source are headings h2/h3 rather than bold text
passages 40-120 words between headings
JSON-LD are nodes joined by @id and do they match the screen
internal links does at least one point at every page
markdown does the page answer Accept: text/markdown
A free scan checks all six at once and shows which pages fail which point.
Related articles
- GEO myths that are still being sold
- How to measure whether GEO is working
- How AI chooses what to cite
- How to write an FAQ an answer can be taken from
The full list of checks is on what we check.
Sources
Frequently asked
Do I need an llms.txt file?
It does no harm and costs little, but no vendor has publicly committed to reading it. What matters more is that `robots.txt` does not block answer crawlers and that pages are assembled as described above.
Does schema help AI, or only Google?
It helps both, differently. Google turns some nodes into rich results, while for a model schema is the one place where a fact is stated without having to interpret prose: who the author is, when it was published, what it costs. None of it is visible to a reader, which is why schema is easy to forget.
How many words should a page have?
There is no general number, and "1000 to 1500 words" is a myth. What matters is the number of words in one passage between headings, and there the range is 40 to 120. A page can hold three such passages or thirty.
Is a markdown version really necessary?
No, it is not required. But an agent receiving HTML first strips the layout, and a markdown response does that work for it and saves part of the context window. This is negotiation over the same URL, with no new `.md` addresses — those would put a copy of the same page into the index.
Check yours
A free scan shows which of the things described here your site already does, and which it does not.