The GEO templates pack · free

The files AI engines read, ready to paste.

robots.txt, llms.txt and the structured-data blocks, written out with brackets to fill.

PDF · 9 pages · 8 chapters. Most of it is on this page; the whole pack comes as a PDF.

What’s inside

4 of 8 on this page. The rest, and the whole pack as one file, by email.

  1. 01robots.txtRules for 25 AI crawlers, with answer agents kept apart from training crawlers.
  2. 02llms.txtThe index file, and a plain note on what it does and does not do.
  3. 03Organization and sameAsThe block that tells your brand apart from a similar name.
  4. 04FAQPageQuestions and answers, marked up to match the page.
  5. 05ProductThe product entity, with the fields engines quote.In the PDF
  6. 06ArticleGuides and articles, with dates that stay honest.In the PDF
  7. 07Page skeletonA page top to bottom, in the order an engine reads it.In the PDF
  8. 08Fact sheetOne approved set of facts that every page repeats.In the PDF
robots.txt

Crawler access

Two decisions, not one. Search and answer agents fetch pages to build the answer a user is reading right now and usually cite the source — blocking them removes you from AI answers, which is a visibility decision. Bulk training crawlers collect corpora for the next model — declining them is a licensing decision, and either answer is defensible. Conflating the two is the expensive mistake.

Search and answer agents

OAI-SearchBotChatGPT-UserClaude-SearchBotClaude-UserPerplexityBotPerplexity-UserApplebotbingbot…

Allow: /for most vendors

They fetch
The page behind the answer a person is reading now
Blocking means
You disappear from AI answers
A visibility decision

Bulk training crawlers

GPTBotClaudeBotGoogle-ExtendedApplebot-ExtendedMeta-ExternalAgentCCBotBytespider…

Allow: /orDisallow: /

They collect
Text for training the next model
Blocking means
Less chance of entering its memory
A licensing decision
Two decisions, not one. Either answer to the second is defensible; getting the first wrong removes you from AI answers. robots.txt is a request, not an enforcement mechanism.
# --- Search and answer agents -------------------------------------------
# These build the answer a person is reading, and usually cite you.
# Blocking them removes you from AI answers.
User-agent: OAI-SearchBot        # OpenAI — ChatGPT search index
Allow: /
User-agent: ChatGPT-User         # OpenAI — user-initiated fetch
Allow: /
User-agent: Claude-SearchBot     # Anthropic — Claude search
Allow: /
User-agent: Claude-User          # Anthropic — user-initiated fetch
Allow: /
User-agent: PerplexityBot        # Perplexity — index
Allow: /
User-agent: Perplexity-User      # Perplexity — user-initiated fetch
Allow: /
User-agent: Applebot             # Apple — Spotlight, Siri, Safari; may also train Apple's models
Allow: /
User-agent: Meta-WebIndexer      # Meta — Meta AI search
Allow: /
User-agent: Meta-ExternalFetcher # Meta — user-initiated fetch
Allow: /
User-agent: Amzn-SearchBot       # Amazon — Alexa and Amazon search
Allow: /
User-agent: Amzn-User            # Amazon — user-initiated fetch
Allow: /
User-agent: MistralAI-Index      # Mistral — search index
Allow: /
User-agent: MistralAI-User       # Mistral — user-initiated fetch
Allow: /
User-agent: DuckAssistBot        # DuckDuckGo — DuckAssist
Allow: /
User-agent: YouBot               # You.com
Allow: /
User-agent: bingbot              # Microsoft — Bing index, and Copilot with it
Allow: /

# --- Bulk training crawlers ---------------------------------------------
# A separate, deliberate decision. Change Allow to Disallow to appear in
# AI answers without feeding the next training run.
User-agent: GPTBot               # OpenAI
Allow: /
User-agent: ClaudeBot            # Anthropic
Allow: /
User-agent: Google-Extended      # Google — Gemini training and grounding
Allow: /
User-agent: Applebot-Extended    # Apple
Allow: /
User-agent: Meta-ExternalAgent   # Meta
Allow: /
User-agent: CCBot                # Common Crawl — feeds many models
Allow: /
User-agent: Bytespider           # ByteDance — no vendor page documents it
Allow: /
User-agent: MistralAI-Training   # Mistral
Allow: /
User-agent: cohere-ai            # Cohere says it runs no crawler today
Allow: /

# Google-Extended does not affect Search indexing. Blocking Googlebot or
# Bingbot removes you from the indexes that AI search runs on top of.
Sitemap: https://www.example.com/sitemap.xml

robots.txt is a request honoured by reputable crawlers, not an enforcement mechanism. The user-initiated fetchers from OpenAI, Perplexity, Meta and Amazon may not follow it at all: their vendors say a fetch a person asked for may ignore robots.txt. If you need actual prevention, that is authentication or edge rules — and a rule here will not tell you whether a firewall is blocking the agent anyway. The access checker probes each agent live and catches exactly that.

/llms.txt

The llms.txt index

A Markdown file at the site root pointing at your most citable pages. A proposed convention, not a lever: Google says Search does not use it, no engine documents reading it, and Chrome's experimental agentic-browsing audit in Lighthouse checks for one. Cheap and harmless, and not shown to change citations. Ship it if it costs an hour.

example.com/
  • robots.txtwho may read
  • sitemap.xmlevery URL
  • llms.txtthe pages to read first
## Start hereWhat you do, and pricing
## ProductsEach hub and its specs
## ReferenceGlossary, Wikipedia, Wikidata
## CompanyAbout and contact

A proposed convention, not a lever. No engine documents reading it. Ship it if it costs an hour, generated from the sitemap so it never goes stale.

A Markdown index at the site root. It points at your most citable pages, beside robots.txt and the sitemap, never instead of them.
# [Company]

> [One sentence: what the company does, for whom.]

## Start here
- [What [Company] does](https://www.example.com/): [Canonical one-liner.]
- [Pricing](https://www.example.com/pricing): [What it costs and what's included.]

## Products
- [[Product] hub](https://www.example.com/products/[product]): [Canonical definition.]
- [[Product] specifications](https://www.example.com/products/[product]/specs)

## Reference
- [Glossary](https://www.example.com/glossary)
- [[Company] on Wikipedia](https://en.wikipedia.org/wiki/[Company])
- [[Company] on Wikidata](https://www.wikidata.org/wiki/[Q-id])

## Company
- [About](https://www.example.com/about)
- [Contact](https://www.example.com/contact)

Generate one automatically from your sitemap with the llms.txt generator rather than hand-keeping this file — a stale index is worse than none.

Organization + sameAs

Grounding the brand entity

This is the block most sites are missing, and it is the one that lets an engine tell your brand apart from a similarly named one. sameAs is the literal machine instruction "these all refer to the same thing".

WWikipediaen.wikipedia.org/wiki/[Company]
WdWikidatawikidata.org/wiki/[Q-id]

Organization

[Company]

[Short name][Legacy name before the rebrand]
"sameAs": [ … ]

“These all refer to the same thing.”

inLinkedInlinkedin.com/company/[handle]
GHGitHubgithub.com/[handle]

A similarly named company is not in the list, and the canonical description tells them apart.

The block most sites are missing. One Organization, its old and short names, and sameAs links to every authoritative profile of the same entity.
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Organization",
  "@id": "https://www.example.com/#org",
  "name": "[Company]",
  "alternateName": ["[Short name]", "[Legacy name before the rebrand]"],
  "url": "https://www.example.com/",
  "logo": "https://www.example.com/[real-logo].png",
  "description": "[Canonical one-sentence definition, reused word for word everywhere]",
  "foundingDate": "[YYYY]",
  "sameAs": [
    "https://en.wikipedia.org/wiki/[Company]",
    "https://www.wikidata.org/wiki/[Q-id]",
    "https://www.linkedin.com/company/[handle]",
    "https://github.com/[handle]"
  ]
}
</script>
FAQPage

Questions and answers

Mirror the visible block exactly. The visible questions are what get extracted; the markup only makes them unambiguous. Marking up answers that do not appear on the page is the one way this block can hurt you.

On the page

[Real buyer question][One-sentence direct answer, then the supporting detail.]
[Second question][Its answer, as it reads on the page.]

FAQPage markup

"name": "[Real buyer question]",
"text": "[One-sentence direct answer…]"

"name": "[Second question]",
"text": "[Its answer…]"

"name": "[A question not on the page]"

Marking up an answer the page does not show is the one way this block hurts you.

Mirror the visible block exactly. The questions on the page are what gets extracted; the markup only makes them unambiguous.
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [
    {
      "@type": "Question",
      "name": "[Real buyer question, word for word from the page]",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "[One-sentence direct answer, then the supporting detail]"
      }
    }
  ]
}
</script>

In the PDF

The page skeleton and the fact sheet are in the pack.

With the Product and Article blocks. The four templates above make a site readable. These four shape the page an engine quotes, and keep every page stating the same facts.

  • ProductThe product entity, with the fields engines quote.
  • ArticleGuides and articles, with dates that stay honest.
  • Page skeletonA page top to bottom, in the order an engine reads it.
  • Fact sheetOne approved set of facts that every page repeats.

  • Build the page, not only the markup. The skeleton lays a page out top to bottom, in the order an engine reads it.
  • Know when a crawler changes. Agents get renamed, added and retired. We email you when the crawler list moves.
  • Hand one file to a developer. All eight templates in one PDF, every bracket marked.

One email with your copy, then a note only when the pack changes. One-click unsubscribe on every email. How we use your address.