Your generated llms.txt omits whatever you never filled in
•5 min read
Every line of a generated llms.txt is conditional on a field being set somewhere. A missing section is not a bug in the generator; it is a field nobody filled in, and the file is a short and free audit of which ones.
A blog missing from a generated llms.txt almost always means the blog has no site address configured, not that the generator failed. Every line in a generated llms.txt is conditional: the summary line appears when the product has a description, the audience line appears when the brand kit names an audience, the blog section appears when blog settings carry a public address, and the links section appears when the footer has links. Reading the file back is therefore a free audit of which fields of your own site are still empty.
200Blog posts a generated llms.txt lists before it stops; past that the sitemap is the document built for exhaustiveness
What the generated file is assembled from
A generated llms.txt in this product is assembled from four places and nothing else: the app record, the brand kit, the published changelog and the blog. The heading is the product name. A blockquote line under it carries the description. A Product section lists the website, who the product is for, the support address and the privacy policy. An Updates section links the public changelog page and its RSS feed, and names the most recent published release with its date. A Blog section lists live posts with title, address, date and a one-line summary. A Links section lists the footer's own links and legal links.
No setting anywhere grants a citation. What a small site controls is the shape of its passages and its own server logs. What makes a paragraph cheap to quote, how to tell whether assistants are fetching your pages, and why a cited page can still show zero referrals.
Market4 turns one release note into a changelog page, a blog post, a mail-out and a week of social posts — and then tells you which of them brought anyone back.
No card to start. Cancel from the settings screen, not from an email.
Why a scheduled post is not in the file
A scheduled post is excluded from llms.txt on purpose, by the same filter every public read applies: a post counts as live when its publication timestamp has passed. Scheduling works by setting that timestamp in the future, so a post scheduled for next Tuesday is invisible everywhere public until Tuesday. Without that filter the file would announce a post to every crawler before the page itself answers, which is a worse outcome than being absent for a few days. Posts marked noindex are excluded for the reason they were marked: they exist for readers rather than for indexes.
The same reasoning explains the cap. A generated file lists up to two hundred posts, because llms.txt is a map read in one go and a file of a thousand list items is a file every consumer truncates at a point nobody chose, often mid-address. A site past that number is better served by its sitemap, which is built for exhaustiveness rather than for reading.
A manual override freezes the audit
A manual override replaces the whole generated document with a fixed string, served verbatim until it is cleared. That is a reasonable choice for a site that wants a hand-written map, and it has one cost worth stating plainly: the file stops tracking the product. New posts do not appear in it, the latest release line stops moving, and a changed support address stays wrong until somebody remembers the override exists. The audit described in this post only works while the file is generated.
How to run the check
Fetch the file the site serves at its llms.txt address and read it top to bottom. It is short by design.
Compare its sections against the list above and note which ones are absent.
Fix the field rather than the file. The generator will pick the value up on the next read; editing the text by hand turns it into an override.
Check the blog section's newest entry against what you last published, which catches a post that is still scheduled or accidentally marked noindex.
Repeat after any change to the footer, the brand kit or the blog's public address, because those three are the fields most often set once and forgotten.
The blog section is written only when blog settings carry a public site address. With no address there is no way to build a link for any post, so the section is omitted rather than emitted with broken entries. Set the blog's public address in blog settings and the section appears on the next read. If the section exists but one post is absent, that post is either scheduled for a future date or marked noindex.
How many blog posts does llms.txt list?
Up to two hundred, newest first. The cap exists because llms.txt is meant to be read whole: a file with a thousand entries gets truncated by whatever consumes it, at a point nobody chose. A site with more posts than the cap should rely on its sitemap for exhaustive discovery, and treat llms.txt as the curated top of the list rather than the full index.
Should I write llms.txt by hand or let it be generated?
Let it be generated unless there is something specific you need to say that the template cannot express. A manual override is served verbatim and stops reflecting the product: new posts, new releases and corrected addresses do not reach it. If you do override it, put a reminder somewhere that the file is now hand-maintained, because nothing in the served file itself announces that.
Does a missing section in llms.txt hurt search rankings?
No. Search engines do not use llms.txt as a ranking input, and an incomplete one is not a penalty. What a missing section indicates is a field that is also empty in the places that do matter: a product with no description in the app record often has no meta description on the pages that read from it either. Treat the gap as a signal about the underlying data, not about the file.
An agent that can write its own audit row can write a plausible one. Four properties keep the trail out of reach: the row is written on the far side of the tool boundary, storage is append-only, the actor is a reference, and recording never fails the operation.
There is no markup that gets a page into an AI Overview. Eligibility is ordinary indexing plus permission to show a snippet, which makes the question what to write rather than what to add.