AI Search Is the New Front Page: llms.txt, Schema, and What Actually Got Me Cited

· Insights

ChatGPT, Perplexity and AI Overviews now send real traffic. Here is the exact setup — llms.txt, JSON-LD, topic hubs, feeds — that got my pages quoted.

Last updated: August 3, 2026 · 9-minute read

Somewhere in the last year, "how do I rank" quietly became two questions: how do I rank in search, and how do I get quoted by an assistant. They overlap, but not completely — and the second one has a much shorter list of requirements.

This is everything I implemented on this site, in the order that mattered.

First: the boring foundation still decides everything

No amount of AI-specific markup helps a page a crawler can't read. Before anything else:

  • Server-rendered or prerendered HTML. A client-only React app hands most crawlers an empty <div id="root". I generate a static HTML shell for every route at build time — 66 files, each with real title, description and body content.
  • One canonical URL per page, self-referencing, agreeing with the sitemap.
  • robots.txt that doesn't block the assistants. GPTBot, ClaudeBot, PerplexityBot, Google-Extended — decide deliberately. Blocking them is a valid choice; blocking them by accident is not.

I wrote about how the pipeline generates all of this in the automated blog pipeline post.

Second: llms.txt — a table of contents for models

llms.txt is a plain markdown file at your root that tells a model what your site is and where the good stuff lives. It is not a magic ranking file; it is a cheap, high-signal summary that gets pulled into context when a model fetches your domain.

Sales agent by day, builder by night. Writes about AI agents, MCP, indie builds and developer tooling.

## Core pages - Projects: shipped apps, notebooks, Hugging Face Spaces - Blog: 50+ posts on agents, tooling and shipping - Uses: the actual stack

## Topic hubs - AI Agents - UI & Components

Keep it under a page. Link, don't essay. Pair it with a machine-readable profile (/me.json) if you want a single fetch to answer "who is this person".

Third: structured data that describes reality

Three schema types cover almost every personal or product site:

The two mistakes I made and fixed: publisher must be an Organization (not a Person), and image should be an ImageObject with dimensions, not a bare URL. Both silently invalidated the block.

Validate every type you emit. An invalid block is worth exactly zero.

Fourth: topic hubs instead of 50 orphan posts

Fifty unlinked posts look like fifty unrelated documents. Fifty posts grouped into six hub pages, each with an editorial intro and links to its cluster, look like a site with expertise on six subjects.

This is the change that moved the needle most for me — both for search and for assistants, which lean heavily on internal link structure to decide what a site is about. Each hub gets its own title, description, and a paragraph a model can quote verbatim.

Fifth: write the paragraph you want quoted

Assistants extract passages, not pages. The practical consequences:

  • Answer in the first 60 words under each heading, then elaborate. Inverted pyramid, every section.
  • Use real numbers and dates. "LCP under 2.5s on mobile" gets quoted; "fast loading" doesn't.
  • Make headings questions people ask. ## Does llms.txt actually do anything? outperforms ## Considerations.
  • Tables get extracted disproportionately often. If your content has a comparison in it, put it in a table.
  • State your position. Hedged content is unciteable — the model has nothing to attribute to you.

Sixth: feeds and freshness signals

An RSS feed, a sitemap with honest lastmod values on posts (and no lastmod on static pages you didn't change), and IndexNow submissions on publish. Note that Google's and Bing's old /ping?sitemap= endpoints are retired — they return errors now. Use the Indexing API, Bing's Webmaster API, or IndexNow instead.

What I measure

That last spot-check is unscientific and the most useful. Ask the question your post answers and see whether you're in the answer.

The honest summary

llms.txt is a nice-to-have. Prerendered HTML, valid schema, a coherent internal link graph, and passages written to be quoted are the actual work — and all four also happen to be plain good SEO. The tooling changed; the fundamentals didn't.

If you're starting from zero, 12 weeks of blogging has the traffic numbers behind all of this.