Technical GEO

LLMs.txt and Schema Markup: The Technical Foundation for AI Citations

How structured data and AI-readable summaries help machines understand your website.

The CookMyRank Team

· 14 min read

ShareXLinkedIn

Quick answer

LLMs.txt and schema markup are the two halves of the technical foundation that makes a website legible to AI assistants: LLMs.txt is a plain-Markdown orientation file that tells crawlers what your site is and which pages matter, while JSON-LD schema turns your visible content into machine-readable facts about your organization, product, and articles. Neither guarantees a citation, but together they make your pages far easier for ChatGPT, Perplexity, Gemini, and Google AI Overviews to retrieve, understand, and quote accurately. Pair them with canonical URLs, full sitemap coverage, internal links, and self-contained answer passages, and you give every AI engine a clean, unambiguous map of your best content.

Key takeaways

  • LLMs.txt is a Markdown orientation file at /llms.txt that tells AI crawlers what your site is and links to your highest-value pages in plain prose, while a fuller /llms-full.txt can carry the actual content of your key documents.
  • JSON-LD schema (Organization, SoftwareApplication, Article/BlogPosting, FAQPage, and Breadcrumb) converts visible page content into explicit, machine-readable facts so engines stop guessing at your name, author, dates, and answers.
  • Citations are passage-level, so the technical layer only pays off when each page also exposes self-contained answer blocks, descriptive question headings, canonical URLs, and full sitemap coverage that lets crawlers actually reach the content.
  • Neither file nor markup is a ranking switch; they reduce ambiguity and improve retrievability, which raises the odds of being cited, and you should measure that with AI-mention tracking rather than assuming it worked.
Run a free AI visibility scan →
ChatGPTClaudeGeminiPerplexityGrok

Schema and LLMs.txt are the two halves of an AI engine's map of your site

When ChatGPT, Perplexity, Gemini, or Google's AI Overviews decide whether to cite you, they are not reading your page the way a human does. They are trying to answer two questions fast: *what is this site, and which exact passage answers the user's question?* Most websites force the engine to guess at both. The technical foundation for AI citations is simply the work of answering those questions for the machine, on purpose, before it has to infer them.

That foundation has two layers. LLMs.txt is an orientation layer — a short, plain-Markdown file at the root of your domain that tells an AI system what your business is and which pages matter, so crawlers and agents don't have to reverse-engineer your structure from a cluttered nav bar. Schema markup is the fact layer — JSON-LD that turns the visible content on each page into explicit, machine-readable statements: this is the organization, this is the author, this is the question, this is the answer.

Neither is a magic switch. An LLMs.txt file won't conjure a citation, and schema won't push you up the rankings by itself. What they do is remove ambiguity, and ambiguity is the single biggest reason a perfectly good page gets skipped in an AI answer. This guide walks through how to build both layers correctly, the on-page structure that makes them pay off, and how to verify any of it actually worked. If you're still mapping how this differs from classic optimization, our breakdown of how GEO differs from traditional SEO is the right primer to read alongside this one.

1. Publish an LLMs.txt file that orients machines, not markets to humans

The challenge it solves. An AI crawler landing on your homepage sees a mega-menu, a hero animation, cookie banners, and twelve footer links. It has no reliable way to know that your pricing page is more authoritative than your careers page, or that "the product" is the SaaS and not the blog. So it guesses — and guesses badly, conflating your brand with a competitor or quoting a stale page. Human-oriented navigation is noise to a machine that just wants a clean index.

The fix. Publish a `/llms.txt` file at your domain root: a short Markdown document that states, in plain prose, what your business is, who it's for, and a curated list of your highest-value pages with one-line descriptions each. Think of it as the README a new employee would want — factual, concise, no marketing adjectives. It's a proposed convention, not an enforced standard, so treat it as a cheap, high-clarity signal rather than a guaranteed channel.

Implementation steps

  1. 1Create a Markdown file with a top-level `#` title (your brand) and a one-sentence blockquote summary of what you do.
  2. 2Add `##` sections like *Product*, *Key pages*, and *Contact*, each with bulleted Markdown links (`Pricing: plans and what each tier includes`) pointing only to real, canonical URLs.
  3. 3Optionally publish a fuller `/llms-full.txt` that inlines the actual text of your most important docs, so an agent can read the content without crawling.
  4. 4Serve both at the root with a `200` status and `text/plain` or `text/markdown`, and keep them updated whenever a key page changes.

Pro tip

Write every line of llms.txt so it would survive being quoted alone. If a description reads "the best tool on the market," you've written an ad; if it reads "AI-visibility platform that tracks citations across ChatGPT, Claude, Gemini, Grok, and Perplexity," you've written a fact an engine can repeat verbatim.

2. Mark up your organization and product with JSON-LD so engines stop guessing who you are

The challenge it solves. Without explicit identity markup, an engine assembles "who you are" from scattered hints — a logo alt text here, a footer copyright there — and frequently gets it wrong. It may attribute your content to a parent company, miss that you're a software product, or fail to connect your brand to its knowledge-graph entity. That ambiguity quietly disqualifies you from being named confidently in an answer.

The fix. Add an Organization schema block (or SoftwareApplication if you're a SaaS) in JSON-LD, placed once in your site's head. State the legal name, URL, logo, social profiles via `sameAs`, and a `description` that matches your real positioning. JSON-LD is the format Google explicitly recommends because it sits in a single `<script>` block instead of tangling through your HTML, which makes it trivial to template and validate.

Implementation steps

  1. 1Create one canonical `Organization` (or `SoftwareApplication`) JSON-LD block: `name`, `url`, `logo`, `description`, and a `sameAs` array of your verified social/profile URLs.
  2. 2For a product, add `applicationCategory`, `operatingSystem`, and an `offers` object so engines understand it's software with pricing.
  3. 3Inject it site-wide (in the layout head), not per-page, so your identity is consistent everywhere a crawler lands.
  4. 4Run it through Google's Rich Results Test and the Schema.org validator and fix every error before shipping — a single malformed field can void the whole block.

Pro tip

Make `sameAs` exhaustive and accurate. Linking your verified LinkedIn, Crunchbase, GitHub, and X profiles is one of the strongest ways to tie your site to a single, unambiguous entity in the knowledge graph that AI engines lean on for "who is this company."

3. Add Article, FAQPage, and Breadcrumb schema so each answer is a citable unit

The challenge it solves. AI citation is passage-level — the engine lifts a specific sentence or Q&A, not the whole page. If your content is an undifferentiated wall of prose, the engine can't isolate the answer cleanly, so it either paraphrases vaguely (no citation) or skips you for a competitor whose answer was easy to extract. Generic page-level markup doesn't help if the *answers* inside aren't individually legible.

The fix. Layer content-specific schema on each page. Use Article or BlogPosting to lock down headline, author, `datePublished`, and `dateModified`. Use FAQPage on pages with real question-and-answer sections so each Q&A is parsed as a discrete, quotable unit. Add BreadcrumbList so engines understand where the page sits in your hierarchy. The iron rule: schema must describe text the user can actually see — marking up hidden content is structured-data spam and gets the markup ignored.

Implementation steps

  1. 1On every content page, emit a `BlogPosting`/`Article` block with `headline`, `author`, `datePublished`, `dateModified`, and `mainEntityOfPage` pointing at the canonical URL.
  2. 2Where the page has a genuine FAQ section, add `FAQPage` with each `Question` and its `acceptedAnswer` — and confirm the same Q&As appear visibly on the page.
  3. 3Add `BreadcrumbList` reflecting the real path (Home → Blog → This article) so hierarchy is explicit.
  4. 4Keep `dateModified` honest and current; engines weight freshness, and a stale date on genuinely updated content costs you citations.

Pro tip

Your FAQ schema is only as good as your answer copy. Write each `acceptedAnswer` as a self-contained 40–60 word passage that makes sense lifted out of context — that's the exact unit an engine quotes, and it's the same passage-craft we cover in our guide to targeting specific, intent-rich long-tail queries.

5. Make the visible content match what the markup promises

The challenge it solves. Schema and LLMs.txt describe your content; they don't replace it. The most common failure mode is a technically flawless setup wrapped around vague, hedging prose ("it depends on your needs") that gives the engine nothing concrete to lift. Worse is mismatch — schema claiming an FAQ the page doesn't show — which trains engines to distrust your markup entirely.

The fix. Lead each page with a tight answer block that resolves the core question in 40–60 quotable words, follow with descriptive, question-style H2s and H3s that mirror how people actually ask, and put the specific numbers, constraints, and examples no competitor bothered to include. The markup makes the content findable; the content is what gets quoted. They have to agree, and they have to be genuinely good.

Implementation steps

  1. 1Open every page with a self-contained answer paragraph that directly resolves the primary query — no preamble.
  2. 2Convert target questions into verbatim H2/H3 headings, each followed by a concise, liftable answer.
  3. 3Replace generic claims with specifics — real numbers, named constraints, concrete examples — so your passage beats the incumbent's hedged one.
  4. 4Audit for parity: every claim in your schema and llms.txt must correspond to visible, accurate on-page content.

Pro tip

Search your target question inside ChatGPT and Perplexity before you write. If the existing answer is vague or generic, that's an open lane — publish the specific, opinionated passage the engine is hungry for, and the technical layer above makes it easy to retrieve. Our AI-visibility audit checklist walks through finding those gaps systematically.

6. Validate, then measure citations — because clean markup isn't proof of impact

The challenge it solves. Teams ship schema, see it validate green, and assume the job is done. But a passing validator only proves the syntax is correct — it says nothing about whether AI engines are actually retrieving, quoting, or naming your pages. You can have flawless JSON-LD and still be completely absent from every answer that matters, and you'd never know from a rich-results report.

The fix. Split verification into two stages. First, *validate* the plumbing: markup parses, llms.txt resolves, canonicals and sitemap agree, crawlers have access. Then *measure the outcome*: monitor whether your brand and pages get cited, quoted, and linked across ChatGPT, Claude, Gemini, Grok, Perplexity, and AI Overviews over time. Validation tells you the foundation is sound; citation tracking tells you whether it's load-bearing.

Implementation steps

  1. 1Run Google's Rich Results Test and the Schema.org validator on every page type and fix all errors and warnings.
  2. 2Confirm `/llms.txt` returns `200`, links resolve, and your sitemap matches your canonical URLs with no duplicates.
  3. 3Stand up AI-mention monitoring so you can see which pages get cited or skipped, and track the trend, not a one-time snapshot.
  4. 4When a page starts earning citations, study what made it quotable and replicate that structure across adjacent pages.

Pro tip

Set up tracking for your AI mentions across every platform before you scale, not after. The teams that win AI search are the ones who noticed which pages got cited early and poured effort into exactly those topics — and the same diagnostic surfaces the one-click technical fixes most worth shipping first.

Putting it all together

The technical foundation for AI citations is less exotic than it sounds: give machines a clean orientation layer with LLMs.txt, give them unambiguous facts with JSON-LD schema for your organization, product, articles, and FAQs, make every page canonical, reachable, and internally linked, and back all of it with visible content specific enough to quote. None of these steps guarantees a citation on its own — and any honest guide will tell you the markup is necessary, not sufficient — but together they remove the ambiguity that causes good pages to be skipped, and they make the engine's job of finding and quoting you almost effortless.

The piece most teams skip is the feedback loop: knowing whether any of this actually moved the needle. Before you mark up another page, it's worth seeing where you stand today. Run a free AI-visibility audit with CookMyRank's scanner to check whether AI engines can even retrieve your pages and where you're being cited or missed across ChatGPT, Claude, Gemini, Grok, Perplexity, and Google AI Overviews, then work through the rest of the playbooks on the CookMyRank blog. CookMyRank measures and improves your visibility across AI and traditional search — it won't promise a ranking, but it will show you exactly which technical fixes are paying off and where the open lanes are. When you're ready to monitor citations continuously, our plans and pricing lay out the options.

Frequently asked questions

What is an LLMs.txt file and where does it go?

LLMs.txt is a plain-Markdown file you publish at the root of your domain (yoursite.com/llms.txt) that gives AI assistants a concise, factual orientation to your site: what your product is, who it serves, and curated links to your most important pages with one-line descriptions. It is a proposed convention, not an official standard, so no engine is obligated to read it, but it costs almost nothing to maintain and gives crawlers and agents a clean map instead of forcing them to infer your structure from navigation. Keep it short, link only to real canonical URLs, and never state claims your pages cannot back up.

Does LLMs.txt actually get AI models to cite my site?

On its own, no. LLMs.txt is an orientation aid, not a ranking lever, and major training pipelines do not currently depend on it. Its real value is reducing ambiguity for the agents and crawlers that do read it and signaling which pages you consider authoritative. Citations still come from having clear, self-contained, retrievable answers on the pages themselves, reinforced by schema markup, canonical URLs, and sitemap coverage. Treat LLMs.txt as one cheap layer in a stack, not a standalone tactic.

Which schema types matter most for AI citations?

Start with Organization (or SoftwareApplication for a SaaS) so engines know exactly who you are, then add Article or BlogPosting on every content page to lock in the headline, author, and dates, and FAQPage on pages with genuine question-and-answer sections so each Q&A is parsed as a discrete, quotable unit. BreadcrumbList helps engines understand site hierarchy. The non-negotiable rule is that schema must describe content that is actually visible on the page; marking up text a user cannot see is structured-data spam and can get the markup ignored or penalized.

Is JSON-LD or microdata better for schema markup?

Use JSON-LD. It is the format Google explicitly recommends, it lives in a single script block in the page head instead of being woven through your HTML, and it is far easier to maintain, template, and validate. Microdata and RDFa still work but tangle markup into your markup and make errors harder to spot. With JSON-LD you keep all your structured data in one place, can generate it programmatically, and can validate it cleanly before shipping.

Will schema markup improve my regular Google rankings too?

Schema does not directly boost rankings, but it makes your pages eligible for rich results and AI Overviews, clarifies your entities and relationships for the knowledge graph, and removes ambiguity that can cause a page to be misclassified. The same clarity that helps a generative engine quote you accurately also helps traditional search understand your content. In practice, the technical foundation for AI citations and the technical foundation for modern SEO are largely the same work done once.

How do I check whether my LLMs.txt and schema are working?

Validate the markup first with Google's Rich Results Test and the Schema.org validator to confirm there are no errors, then confirm your LLMs.txt resolves at the root with a 200 status and links only to live canonical URLs. Beyond validation, the only honest measure is outcome tracking: monitor whether AI assistants actually cite, quote, or name your pages over time, and watch whether the pages you marked up start appearing in answers. A free AI-visibility audit will tell you whether engines can retrieve your pages and where you are being cited or skipped.

Written by

The CookMyRank Team

AI Visibility & GEO Research

ChatGPTClaudeGeminiPerplexityGrok

See where AI search cites you — and where it doesn't.

Run a free CookMyRank scan to check if your pages are retrievable, then ship the fixes that get you cited.

Get started free →