Geodocs.dev

AI Agent Content Specification

ShareLinkedIn

Open this article in your favorite AI assistant for deeper analysis, summaries, or follow-up questions.

This specification defines how to structure web content for autonomous AI agents — crawlers, chatbots, research assistants, browser-based agents like ChatGPT Atlas and Perplexity Comet, coding agents like Cursor and Claude Code, and any other AI system that discovers, parses, and synthesizes information from the web on behalf of a user.

The AI Agent Content Specification defines three layers — discovery (llms.txt, agents.json, sitemap, robots.txt), parsing (frontmatter, semantic HTML, JSON-LD, agent.md), and attribution (ai.txt, canonical URLs) — that together let AI agents reliably find, understand, and cite web content. Compliance is verified through the checklist at the end of this page.

TL;DR

Make every page agent-ready by ensuring it is discoverable (present in llms.txt and sitemap.xml, allowed for major bots in robots.txt, optionally exposed via agents.json), parseable (full ~30-field frontmatter, semantic headings, JSON-LD, and where relevant a paired agent.md for tool-use surfaces), and attributable (canonical URL plus an ai.txt policy declaring source name and citation format). The compliance checklist at the bottom of this page is the single source of truth.

For the broader strategy, see the AI Agents pillar.

Specification overview

LayerPurposeStandards
DiscoveryAI agents find your contentllms.txt, agents.json, sitemap.xml, robots.txt
ParsingAI agents understand your contentFrontmatter, semantic HTML, JSON-LD, agent.md
AttributionAI agents cite your contentai.txt, source metadata, canonical URLs

Layer 1: Discovery

llms.txt

Every site should provide a /llms.txt file — a Markdown index that tells AI agents what your site contains and how it is organized. The format was proposed by Jeremy Howard and is documented at llmstxt.org.

Required elements:

  • Site name (H1 heading)
  • Site description (blockquote)
  • Content index (links with descriptions)
  • Section organization (H2 headings)

Minimal example:

markdown

Acme is a payments platform. This index lists the canonical references AI agents should consult.

Core concepts

API

Full specification: How to Create llms.txt.

agents.json (proposed)

agents.json is an emerging convention for declaring agent-actionable surfaces — APIs, tools, and structured tasks — at a well-known location (/.well-known/agents.json). It complements llms.txt by exposing capabilities, not just content.

Minimal example:

{
  "schema_version": "v1",
  "name_for_model": "acme_payments",
  "description_for_model": "Read and act on Acme payment data.",
  "auth": { "type": "oauth", "authorization_url": "https://acme.com/oauth" },
  "tools": [
    {
      "name": "create_invoice",
      "description": "Create an invoice for a customer.",
      "endpoint": "https://api.acme.com/v1/invoices",
      "method": "POST"
    }
  ],
  "contact_email": "[email protected]"
}

Adoption is partial; treat it as forward-compatible metadata, not a hard requirement.

Sitemap for AI

Standard XML sitemaps help AI crawlers discover content. Enhance with:

  • for freshness signals
  • to indicate update patterns
  • to highlight key pages

A separate sitemap-ai.xml can list only canonical, citation-ready pages — useful when your site mixes marketing and reference content.

robots.txt for AI crawlers

Explicitly allow major agent crawlers; disallow only when you have a specific reason:

User-agent: GPTBot

Allow: /

User-agent: OAI-SearchBot

Allow: /

User-agent: ChatGPT-User

Allow: /

User-agent: ClaudeBot

Allow: /

User-agent: Claude-Web

Allow: /

User-agent: PerplexityBot

Allow: /

User-agent: Perplexity-User

Allow: /

User-agent: Applebot-Extended

Allow: /

User-agent: Google-Extended

Allow: /

Crawler user-agents change. Verify at OpenAI bot docs, Anthropic crawler docs, and Google crawler docs.

Layer 2: Parsing

Frontmatter metadata schema

Every content page should include structured frontmatter. The schema below is the canonical 30-field shape; deviate only where a field truly does not apply.

---
# Identity
title: "Page Title"
slug: "url-slug"
section: "section-name"
canonical_url: "https://example.com/section/url-slug"
status: "published"

Knowledge

canonical_concept_id: "unique-concept-identifier"

knowledge_domain: "domain-name"

concept_type: "core-concept|sub-concept|technique|tool|standard|metric"

entities: ["Primary Entity"]

aliases: ["alt name"]

related_concepts: ["related-id"]

Taxonomy

content_type: "guide|reference|comparison|definition|specification|checklist|tutorial|framework"

primary_audience: "developer|seo-specialist|content-strategist|founder|marketer"

secondary_audiences: ["..."]

reader_modes: ["human", "ai-agent"]

difficulty: "beginner|intermediate|advanced"

ai_platforms: ["chatgpt", "perplexity", "claude", "gemini"]

SEO

description: "120-160 char description."

focus_keyword: "primary keyword"

secondary_keywords: ["k1", "k2"]

AI readiness

canonical_question: "What is X?"

llm_summary: "2-sentence factual summary."

citation_readiness: "reviewed|draft"

Lifecycle

published_at: "YYYY-MM-DD"

updated_at: "YYYY-MM-DD"

last_reviewed_at: "YYYY-MM-DD"

review_cycle_days: 90

version: "1.0"

Relations

series: "series-id"

series_order: 1

related_articles: ["section/slug"]

I18n + authorship

lang: "en"

translations: []

author: "Author Name"

reviewed_by: null


agent.md (tool-use surface)

For pages that document an API, CLI, or other tool, pair the human-readable page with a sibling agent.md file at the same path. agent.md strips marketing prose and gives an agent the deterministic signature it needs.

Minimal example:

# acme.payments.create_invoice

Signature

POST /v1/invoices

Content-Type: application/json

Authorization: Bearer

Input

  • customer_id (string, required): Acme customer ID, format cus_.
  • amount_cents (integer, required): Positive integer.
  • currency (string, required): ISO 4217 code.

Output

  • invoice_id (string): Created invoice ID, format inv_.
  • status (string): One of open, paid, void.

Errors

  • 400 invalid_currency — currency not in ISO 4217.
  • 402 insufficient_funds — customer balance below amount_cents.

Idempotency

Pass Idempotency-Key header. Same key returns the original response.

Cursor, Claude Code, and similar coding agents are the primary consumers of agent.md-style surfaces today. Repository-root files (AGENTS.md, CLAUDE.md) follow the same pattern for code-context use.

Content body structure

Answer-first pattern

The first section directly answers the page's core question:

# [Title as Question or Topic]

[Direct answer in 1-2 sentences. Complete and self-contained.]

[2-3 sentence expanded summary.]

TL;DR

[Snippet-ready 2-3 sentence summary.]

Heading hierarchy

  • H1: page title (exactly one)
  • H2: major sections
  • H3: sub-sections within H2
  • H4: rare; avoid deeper nesting

Required structural elements

Every agent-ready page must include:

  1. One H1 matching the frontmatter title.
  2. One AI summary blockquote immediately after the H1.
  3. A TL;DR section (## TL;DR) with a 2-3 sentence snippet.
  4. At least one extractable definition, table, or step list in the body.
  5. A FAQ section with 3-8 question-answer pairs phrased as natural questions.
  6. A canonical URL in frontmatter and in .
  7. At least one JSON-LD block describing the primary entity.

Pages missing any of (1)-(7) are non-compliant and should not be marked citation_readiness: reviewed.

Extractable patterns

Definition:

[Term] is [complete definition in one sentence].
[Optional second sentence on significance.]

Comparison table:

| Dimension | Option A | Option B |
|---|---|---|
| Aspect 1 | Value | Value |

Step-by-step:

1. **Step name** — Description.
2. **Step name** — Description.

FAQ pair:

### Question in natural language?
[Direct answer. No preamble.]

JSON-LD structured data

Every page should include at least one JSON-LD block.

Article:

{
  "@context": "https://schema.org",
  "@type": "TechArticle",
  "headline": "Page Title",
  "description": "Page description",
  "author": { "@type": "Organization", "name": "Site Name" },
  "datePublished": "2025-01-01",
  "dateModified": "2026-05-01"
}

FAQ:

{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [
    {
      "@type": "Question",
      "name": "Question text",
      "acceptedAnswer": { "@type": "Answer", "text": "Answer text" }
    }
  ]
}

Full reference: Structured Data for AI Search.

Layer 3: Attribution

ai.txt

Define how AI agents should attribute your content:

AI Agent Access Policy

User-agent: *

Allow: /

Attribution-required: yes

Source-name: Your Site Name

Source-url: https://yoursite.com

Citation-format: "[Title] — [Source-name] (Source-url/path)"

Full specification: ai.txt Starter Template.

Canonical URLs

Every page must have exactly one canonical URL:

<link rel="canonical" href="https://yoursite.com/section/slug" />

Agents should use this URL for attribution regardless of how they discovered the page. Mirror sites, syndicated copies, and AMP variants must point back to the canonical.

Source metadata

Mark organization-level information once with Organization schema (logo, sameAs, contact) so agents can resolve "who owns this content" without parsing every page individually.

Implementation patterns by platform

Different agents weight signals differently. The patterns below summarize observed behavior; verify against each platform's current docs.

ChatGPT (OpenAI) — Search and Atlas browser

  • Honors robots.txt for GPTBot, OAI-SearchBot, and ChatGPT-User.
  • Strongly favors pages with clear , meta description, and Article / TechArticle JSON-LD.</li> <li>Atlas (browser agent) consumes the rendered DOM, so client-side-only content is parseable but slower than server-rendered HTML.</li> <li>Cites Source-name from ai.txt when present; otherwise falls back to the domain.</li> </ul> <h3 id="perplexity-answer-engine-and-comet-browser">Perplexity — Answer engine and Comet browser</h3> <ul> <li>Crawls aggressively via PerplexityBot; honors per-page noindex and robots.txt.</li> <li>Quotes short extractive snippets and links back; benefits most from concise answer-first openers and FAQ sections.</li> <li>Comet (browser agent) follows links the user is on; well-structured headings let it summarize without re-fetching.</li> </ul> <h3 id="claude-anthropic-chat-computer-use-claude-code">Claude (Anthropic) — Chat, Computer Use, Claude Code</h3> <ul> <li>Uses ClaudeBot and Claude-Web for retrieval; respects robots.txt.</li> <li>Computer Use parses page screenshots plus accessibility trees — semantic HTML (proper headings, labeled inputs, alt text) materially improves agent reliability.</li> <li>Claude Code reads repo-local agent.md / AGENTS.md / CLAUDE.md files; mirror your public spec into the repo for code-context use.</li> </ul> <h3 id="gemini-google-search-ai-overviews-gemini-live">Gemini (Google) — Search, AI Overviews, Gemini Live</h3> <ul> <li>Uses Googlebot for search and Google-Extended for generative training and grounding opt-in.</li> <li>Heavily weights structured data: Article, FAQPage, HowTo, Product, and BreadcrumbList.</li> <li>AI Overviews favor pages already ranking organically, so traditional SEO hygiene compounds with agent readiness.</li> </ul> <h3 id="cursor-and-other-coding-agents">Cursor and other coding agents</h3> <ul> <li>Read AGENTS.md, agent.md, and project-root README files first.</li> <li>Prefer deterministic input/output examples and explicit error taxonomies over prose.</li> <li>Pages that document libraries should publish a sibling llms-full.txt containing the full Markdown body for offline indexing.</li> </ul> <h2 id="validation">Validation</h2> <p>Validate compliance with the same tools agents (or their pipelines) use:</p> <ul> <li>Schema.org Validator</li> <li>Google Rich Results Test</li> <li>llms.txt validator reference implementations</li> <li>curl -A "GPTBot" -I https://yoursite.com/page to confirm crawler access</li> <li>curl -A "ClaudeBot" -I and curl -A "PerplexityBot" -I for the other major bots</li> <li>A dry-run "ask the chatbot" check: paste the URL into ChatGPT, Perplexity, and Claude and verify the summary matches the canonical content</li> </ul> <h2 id="compliance-checklist">Compliance checklist</h2> <h3 id="discovery">Discovery</h3> <ul> <li>[ ] /llms.txt exists and is current</li> <li>[ ] /.well-known/agents.json published if the site exposes tools/APIs</li> <li>[ ] sitemap.xml includes all content pages with lastmod</li> <li>[ ] robots.txt allows the major agent crawlers listed above</li> <li>[ ] /ai.txt defines access policy</li> </ul> <h3 id="parsing">Parsing</h3> <ul> <li>[ ] Every page has full frontmatter (~30-field schema)</li> <li>[ ] Every page has answer-first opening</li> <li>[ ] Every page has a single AI summary blockquote and a TL;DR section</li> <li>[ ] Every page has at least one JSON-LD block describing the primary entity</li> <li>[ ] Heading hierarchy is semantic (one H1, then H2 → H3)</li> <li>[ ] Tables, lists, and code blocks use proper Markdown / HTML markup</li> <li>[ ] Tool / API pages have a sibling agent.md</li> </ul> <h3 id="attribution">Attribution</h3> <ul> <li>[ ] <link rel="canonical"> is set on every page</li> <li>[ ] ai.txt specifies attribution requirements and citation format</li> <li>[ ] Author / Organization metadata is included</li> <li>[ ] published_at and updated_at are accurate</li> </ul> <h2 id="common-mistakes">Common mistakes</h2> <ul> <li>Mixing legacy and current frontmatter keys. Drop date_published, date_updated, ai_summary, and schema_type; use published_at, updated_at, llm_summary, and concept_type consistently.</li> <li>Two or more "AI summary" blocks per page. Dilutes which sentence agents extract; keep exactly one immediately after the H1.</li> <li>Leaving JSON-LD as the only structured signal. Agents cross-check JSON-LD against the rendered HTML; mismatches cause structured data to be ignored.</li> <li>Disallowing all bots in robots.txt "to be safe". This blocks citations and grounding; allow the major agent UAs explicitly and use per-path rules for sensitive sections.</li> <li>Treating llms.txt as a marketing brochure. It is an index; keep it terse and link-heavy.</li> </ul> <h2 id="faq">FAQ</h2> <h3 id="is-this-specification-an-official-standard">Is this specification an official standard?</h3> <p>No. It is a practical specification based on observable AI system behavior and emerging community conventions. JSON-LD, semantic HTML, and sitemaps are well-established standards; llms.txt, ai.txt, and agents.json are proposals with growing adoption.</p> <h3 id="do-all-ai-agents-follow-these-conventions">Do all AI agents follow these conventions?</h3> <p>Not uniformly. JSON-LD and structured HTML are recognized by every major AI system. llms.txt and ai.txt are emerging — major models do not yet officially commit to consuming them, but they are low-cost to publish and forward-compatible.</p> <h3 id="how-often-should-i-update-my-compliance">How often should I update my compliance?</h3> <p>Review quarterly. Crawler user agents, structured-data types, and emerging conventions shift fast. Core HTML and schema are stable, but discovery and attribution mechanisms continue to evolve.</p> <h3 id="is-the-frontmatter-schema-required-for-html-only-pages">Is the frontmatter schema required for HTML-only pages?</h3> <p>The frontmatter schema is the canonical metadata source — it can be expressed equivalently in HTML <meta> tags or JSON-LD. The exact transport matters less than completeness and accuracy. Static-site generators like Next.js, Astro, and Hugo make YAML frontmatter the easiest path; for hand-authored HTML, mirror the same fields into JSON-LD Article and Organization blocks.</p> <h3 id="what-is-the-bare-minimum-subset">What is the bare-minimum subset?</h3> <p>If you can only do four things: (1) one canonical URL per page, (2) JSON-LD for the primary entity, (3) llms.txt listing your top pages, (4) robots.txt allowing GPTBot, ClaudeBot, and PerplexityBot. This subset captures most of the citation upside.</p> <h3 id="how-does-this-differ-from-traditional-seo">How does this differ from traditional SEO?</h3> <p>Traditional SEO optimizes for ranking in a SERP that a human reads. Agent content optimization additionally optimizes for extraction (a non-human consumer copying a sentence) and attribution (that consumer linking back). The two overlap heavily — a well-structured SEO page is already most of the way to agent-ready — but agent readiness adds explicit machine-readable layers (frontmatter, JSON-LD, llms.txt, ai.txt).</p> <h3 id="do-i-need-a-separate-agent-md-for-every-page">Do I need a separate agent.md for every page?</h3> <p>No. Pair agent.md only with pages that document an actionable surface: APIs, CLIs, SDKs, configuration files. Pure narrative or conceptual pages do not need one — the standard frontmatter and JSON-LD are sufficient.</p> <h3 id="will-following-this-spec-guarantee-citations">Will following this spec guarantee citations?</h3> <p>No. It maximizes eligibility — agents still rank by topical authority, freshness, and source reputation. Treat the spec as removing avoidable failure modes, not as a ranking lever.</p></div><div style="margin-top:64px"><h2 style="font-size:18px;font-weight:600;margin-bottom:16px;padding-bottom:8px;border-bottom:1px solid var(--border-default)">Related Articles</h2><div style="display:grid;grid-template-columns:repeat(auto-fill, minmax(280px, 1fr));gap:16px"><a style="text-decoration:none" data-related-article="ai-agent-optimization" data-related-position="1" href="/ai-agents/ai-agent-optimization"><div class="card"><span class="badge badge-green" style="margin-bottom:8px">guide</span><h3 style="font-size:15px;font-weight:600;color:var(--text-heading);margin-bottom:4px">AI Agent Optimization: Technical Guide</h3><p style="font-size:13px;color:var(--text-secondary);line-height:1.5">Technical implementation guide for optimizing websites for AI agent discovery, evaluation, and interaction. Covers discovery, understanding, and action layers.</p></div></a><a style="text-decoration:none" data-related-article="ai-txt-template" data-related-position="2" href="/technical/ai-txt-template"><div class="card"><span class="badge badge-green" style="margin-bottom:8px">reference</span><h3 style="font-size:15px;font-weight:600;color:var(--text-heading);margin-bottom:4px">ai.txt Starter Template: Copy-Ready AI Access Policy File</h3><p style="font-size:13px;color:var(--text-secondary);line-height:1.5">A copy-ready ai.txt starter template for declaring AI crawler access policies, attribution requirements, and content licensing terms.</p></div></a><a style="text-decoration:none" data-related-article="how-to-create-llms-txt" data-related-position="3" href="/technical/how-to-create-llms-txt"><div class="card"><span class="badge badge-green" style="margin-bottom:8px">guide</span><h3 style="font-size:15px;font-weight:600;color:var(--text-heading);margin-bottom:4px">How to Create llms.txt: Step-by-Step Tutorial for AI Search</h3><p style="font-size:13px;color:var(--text-secondary);line-height:1.5">Step-by-step tutorial for creating, deploying, and validating an llms.txt file so AI systems and LLMs can discover your site's most important content.</p></div></a></div></div></article><div style="padding-left:40px" class="toc-sidebar"><nav style="position:sticky;top:88px;font-size:13px;line-height:1.6;max-height:calc(100vh - 100px);overflow-y:auto"><div style="font-family:var(--font-mono);font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:2px;color:var(--color-cool-gray);margin-bottom:12px">On this page</div><a href="#tl-dr" style="display:block;padding:4px 0;padding-left:0;color:var(--text-secondary);text-decoration:none;transition:color 0.15s ease;border-left:none">TL;DR</a><a href="#specification-overview" style="display:block;padding:4px 0;padding-left:0;color:var(--text-secondary);text-decoration:none;transition:color 0.15s ease;border-left:none">Specification overview</a><a href="#layer-1-discovery" style="display:block;padding:4px 0;padding-left:0;color:var(--text-secondary);text-decoration:none;transition:color 0.15s ease;border-left:none">Layer 1: Discovery</a><a href="#llms-txt" style="display:block;padding:4px 0;padding-left:16px;color:var(--text-secondary);text-decoration:none;transition:color 0.15s ease;border-left:1px solid var(--border-default)">llms.txt</a><a href="#core-concepts" style="display:block;padding:4px 0;padding-left:0;color:var(--text-secondary);text-decoration:none;transition:color 0.15s ease;border-left:none">Core concepts</a><a href="#api" style="display:block;padding:4px 0;padding-left:0;color:var(--text-secondary);text-decoration:none;transition:color 0.15s ease;border-left:none">API</a><a href="#agents-json-proposed" style="display:block;padding:4px 0;padding-left:16px;color:var(--text-secondary);text-decoration:none;transition:color 0.15s ease;border-left:1px solid var(--border-default)">agents.json (proposed)</a><a href="#sitemap-for-ai" style="display:block;padding:4px 0;padding-left:16px;color:var(--text-secondary);text-decoration:none;transition:color 0.15s ease;border-left:1px solid var(--border-default)">Sitemap for AI</a><a href="#robots-txt-for-ai-crawlers" style="display:block;padding:4px 0;padding-left:16px;color:var(--text-secondary);text-decoration:none;transition:color 0.15s ease;border-left:1px solid var(--border-default)">robots.txt for AI crawlers</a><a href="#layer-2-parsing" style="display:block;padding:4px 0;padding-left:0;color:var(--text-secondary);text-decoration:none;transition:color 0.15s ease;border-left:none">Layer 2: Parsing</a><a href="#frontmatter-metadata-schema" style="display:block;padding:4px 0;padding-left:16px;color:var(--text-secondary);text-decoration:none;transition:color 0.15s ease;border-left:1px solid var(--border-default)">Frontmatter metadata schema</a><a href="#agent-md-tool-use-surface" style="display:block;padding:4px 0;padding-left:16px;color:var(--text-secondary);text-decoration:none;transition:color 0.15s ease;border-left:1px solid var(--border-default)">agent.md (tool-use surface)</a><a href="#signature" style="display:block;padding:4px 0;padding-left:0;color:var(--text-secondary);text-decoration:none;transition:color 0.15s ease;border-left:none">Signature</a><a href="#input" style="display:block;padding:4px 0;padding-left:0;color:var(--text-secondary);text-decoration:none;transition:color 0.15s ease;border-left:none">Input</a><a href="#output" style="display:block;padding:4px 0;padding-left:0;color:var(--text-secondary);text-decoration:none;transition:color 0.15s ease;border-left:none">Output</a><a href="#errors" style="display:block;padding:4px 0;padding-left:0;color:var(--text-secondary);text-decoration:none;transition:color 0.15s ease;border-left:none">Errors</a><a href="#idempotency" style="display:block;padding:4px 0;padding-left:0;color:var(--text-secondary);text-decoration:none;transition:color 0.15s ease;border-left:none">Idempotency</a><a href="#content-body-structure" style="display:block;padding:4px 0;padding-left:16px;color:var(--text-secondary);text-decoration:none;transition:color 0.15s ease;border-left:1px solid var(--border-default)">Content body structure</a><a href="#tl-dr" style="display:block;padding:4px 0;padding-left:0;color:var(--text-secondary);text-decoration:none;transition:color 0.15s ease;border-left:none">TL;DR</a><a href="#question-in-natural-language" style="display:block;padding:4px 0;padding-left:16px;color:var(--text-secondary);text-decoration:none;transition:color 0.15s ease;border-left:1px solid var(--border-default)">Question in natural language?</a><a href="#json-ld-structured-data" style="display:block;padding:4px 0;padding-left:16px;color:var(--text-secondary);text-decoration:none;transition:color 0.15s ease;border-left:1px solid var(--border-default)">JSON-LD structured data</a><a href="#layer-3-attribution" style="display:block;padding:4px 0;padding-left:0;color:var(--text-secondary);text-decoration:none;transition:color 0.15s ease;border-left:none">Layer 3: Attribution</a><a href="#ai-txt" style="display:block;padding:4px 0;padding-left:16px;color:var(--text-secondary);text-decoration:none;transition:color 0.15s ease;border-left:1px solid var(--border-default)">ai.txt</a><a href="#canonical-urls" style="display:block;padding:4px 0;padding-left:16px;color:var(--text-secondary);text-decoration:none;transition:color 0.15s ease;border-left:1px solid var(--border-default)">Canonical URLs</a><a href="#source-metadata" style="display:block;padding:4px 0;padding-left:16px;color:var(--text-secondary);text-decoration:none;transition:color 0.15s ease;border-left:1px solid var(--border-default)">Source metadata</a><a href="#implementation-patterns-by-platform" style="display:block;padding:4px 0;padding-left:0;color:var(--text-secondary);text-decoration:none;transition:color 0.15s ease;border-left:none">Implementation patterns by platform</a><a href="#chatgpt-openai-search-and-atlas-browser" style="display:block;padding:4px 0;padding-left:16px;color:var(--text-secondary);text-decoration:none;transition:color 0.15s ease;border-left:1px solid var(--border-default)">ChatGPT (OpenAI) — Search and Atlas browser</a><a href="#perplexity-answer-engine-and-comet-browser" style="display:block;padding:4px 0;padding-left:16px;color:var(--text-secondary);text-decoration:none;transition:color 0.15s ease;border-left:1px solid var(--border-default)">Perplexity — Answer engine and Comet browser</a><a href="#claude-anthropic-chat-computer-use-claude-code" style="display:block;padding:4px 0;padding-left:16px;color:var(--text-secondary);text-decoration:none;transition:color 0.15s ease;border-left:1px solid var(--border-default)">Claude (Anthropic) — Chat, Computer Use, Claude Code</a><a href="#gemini-google-search-ai-overviews-gemini-live" style="display:block;padding:4px 0;padding-left:16px;color:var(--text-secondary);text-decoration:none;transition:color 0.15s ease;border-left:1px solid var(--border-default)">Gemini (Google) — Search, AI Overviews, Gemini Live</a><a href="#cursor-and-other-coding-agents" style="display:block;padding:4px 0;padding-left:16px;color:var(--text-secondary);text-decoration:none;transition:color 0.15s ease;border-left:1px solid var(--border-default)">Cursor and other coding agents</a><a href="#validation" style="display:block;padding:4px 0;padding-left:0;color:var(--text-secondary);text-decoration:none;transition:color 0.15s ease;border-left:none">Validation</a><a href="#compliance-checklist" style="display:block;padding:4px 0;padding-left:0;color:var(--text-secondary);text-decoration:none;transition:color 0.15s ease;border-left:none">Compliance checklist</a><a href="#discovery" style="display:block;padding:4px 0;padding-left:16px;color:var(--text-secondary);text-decoration:none;transition:color 0.15s ease;border-left:1px solid var(--border-default)">Discovery</a><a href="#parsing" style="display:block;padding:4px 0;padding-left:16px;color:var(--text-secondary);text-decoration:none;transition:color 0.15s ease;border-left:1px solid var(--border-default)">Parsing</a><a href="#attribution" style="display:block;padding:4px 0;padding-left:16px;color:var(--text-secondary);text-decoration:none;transition:color 0.15s ease;border-left:1px solid var(--border-default)">Attribution</a><a href="#common-mistakes" style="display:block;padding:4px 0;padding-left:0;color:var(--text-secondary);text-decoration:none;transition:color 0.15s ease;border-left:none">Common mistakes</a><a href="#faq" style="display:block;padding:4px 0;padding-left:0;color:var(--text-secondary);text-decoration:none;transition:color 0.15s ease;border-left:none">FAQ</a><a href="#is-this-specification-an-official-standard" style="display:block;padding:4px 0;padding-left:16px;color:var(--text-secondary);text-decoration:none;transition:color 0.15s ease;border-left:1px solid var(--border-default)">Is this specification an official standard?</a><a href="#do-all-ai-agents-follow-these-conventions" style="display:block;padding:4px 0;padding-left:16px;color:var(--text-secondary);text-decoration:none;transition:color 0.15s ease;border-left:1px solid var(--border-default)">Do all AI agents follow these conventions?</a><a href="#how-often-should-i-update-my-compliance" style="display:block;padding:4px 0;padding-left:16px;color:var(--text-secondary);text-decoration:none;transition:color 0.15s ease;border-left:1px solid var(--border-default)">How often should I update my compliance?</a><a href="#is-the-frontmatter-schema-required-for-html-only-pages" style="display:block;padding:4px 0;padding-left:16px;color:var(--text-secondary);text-decoration:none;transition:color 0.15s ease;border-left:1px solid var(--border-default)">Is the frontmatter schema required for HTML-only pages?</a><a href="#what-is-the-bare-minimum-subset" style="display:block;padding:4px 0;padding-left:16px;color:var(--text-secondary);text-decoration:none;transition:color 0.15s ease;border-left:1px solid var(--border-default)">What is the bare-minimum subset?</a><a href="#how-does-this-differ-from-traditional-seo" style="display:block;padding:4px 0;padding-left:16px;color:var(--text-secondary);text-decoration:none;transition:color 0.15s ease;border-left:1px solid var(--border-default)">How does this differ from traditional SEO?</a><a href="#do-i-need-a-separate-agent-md-for-every-page" style="display:block;padding:4px 0;padding-left:16px;color:var(--text-secondary);text-decoration:none;transition:color 0.15s ease;border-left:1px solid var(--border-default)">Do I need a separate agent.md for every page?</a><a href="#will-following-this-spec-guarantee-citations" style="display:block;padding:4px 0;padding-left:16px;color:var(--text-secondary);text-decoration:none;transition:color 0.15s ease;border-left:1px solid var(--border-default)">Will following this spec guarantee citations?</a></nav></div></div><style> @media (max-width: 1024px) { .toc-sidebar { display: none !important; } } @media (min-width: 1025px) { article { /* override grid for 3-col with TOC */ } } .article-tag-link:hover { border-color: var(--color-dark-green) !important; color: var(--text-primary) !important; background: rgba(0, 237, 100, 0.06) !important; } </style></main><section style="padding:64px 24px;background:var(--bg-surface);border-top:1px solid var(--border-subtle)"><div style="max-width:520px;margin:0 auto;text-align:center"><div style="font-family:var(--font-mono);font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:2px;color:var(--color-dark-green);margin-bottom:12px">Stay Updated</div><h2 style="font-family:var(--font-display);font-size:clamp(1.25rem, 3vw, 1.75rem);font-weight:400;color:var(--text-heading);margin-bottom:8px;line-height:1.3">GEO & AI Search Insights</h2><p style="font-size:14px;color:var(--text-secondary);line-height:1.7;margin-bottom:24px">New articles, framework updates, and industry analysis. No spam, unsubscribe anytime.</p><form style="display:flex;flex-wrap:wrap;gap:8px;max-width:420px;margin:0 auto"><input type="email" placeholder="your@email.com" required="" style="flex:1;min-width:200px;padding:12px 16px;border-radius:var(--radius-pill);border:1px solid var(--border-default);background:var(--bg-page);color:var(--text-primary);font-family:var(--font-body);font-size:14px;outline:none;transition:border-color 0.2s ease" value=""/><button type="submit" class="btn btn-primary" style="padding:12px 24px;font-size:14px;opacity:1">Subscribe</button></form></div></section><footer style="background:var(--color-forest-black);border-top:1px solid var(--color-teal-gray);padding:64px 24px 32px"><div style="max-width:1200px;margin:0 auto"><div style="display:grid;grid-template-columns:repeat(auto-fit, minmax(180px, 1fr));gap:48px;margin-bottom:48px"><div><div style="margin-bottom:16px"><img alt="Geodocs.dev" loading="lazy" width="140" height="32" decoding="async" data-nimg="1" style="color:transparent;height:24px;width:auto" src="/geodocs-logo-dark.svg"/></div><p style="font-size:13px;color:var(--color-cool-gray);line-height:1.6;max-width:220px">Structured knowledge for AI search visibility. The canonical reference for GEO, AEO, and AI search optimization.</p></div><div><h4 style="font-family:var(--font-mono);font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:2px;color:var(--color-mongodb-green);margin-bottom:16px">Learn</h4><ul style="list-style:none;display:flex;flex-direction:column;gap:10px"><li><a class="footer-link" href="/geo/what-is-geo">What Is GEO?</a></li><li><a class="footer-link" href="/aeo/what-is-aeo">What Is AEO?</a></li><li><a class="footer-link" href="/geo/geo-vs-seo">GEO vs SEO</a></li><li><a class="footer-link" href="/reference/geo-aeo-glossary">GEO Glossary</a></li></ul></div><div><h4 style="font-family:var(--font-mono);font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:2px;color:var(--color-mongodb-green);margin-bottom:16px">Build</h4><ul style="list-style:none;display:flex;flex-direction:column;gap:10px"><li><a class="footer-link" href="/technical/llms-txt">llms.txt Reference</a></li><li><a class="footer-link" href="/technical/how-to-create-llms-txt">Create llms.txt</a></li><li><a class="footer-link" href="/technical/structured-data-for-ai-search">Structured Data</a></li><li><a class="footer-link" href="/technical/ai-txt">ai.txt Reference</a></li></ul></div><div><h4 style="font-family:var(--font-mono);font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:2px;color:var(--color-mongodb-green);margin-bottom:16px">Strategy</h4><ul style="list-style:none;display:flex;flex-direction:column;gap:10px"><li><a class="footer-link" href="/strategy/ai-visibility-measurement">AI Visibility</a></li><li><a class="footer-link" href="/strategy/geo-content-strategy">Content Strategy</a></li><li><a class="footer-link" href="/strategy/geo-roi-framework">GEO ROI</a></li><li><a class="footer-link" href="/aeo/aeo-content-checklist">AEO Checklist</a></li></ul></div><div><h4 style="font-family:var(--font-mono);font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:2px;color:var(--color-mongodb-green);margin-bottom:16px">Resources</h4><ul style="list-style:none;display:flex;flex-direction:column;gap:10px"><li><a class="footer-link" href="https://github.com/Geodocs-dev">GitHub</a></li><li><a class="footer-link" href="/contact">Contact</a></li><li><a class="footer-link" href="/tags">Tags</a></li><li><a class="footer-link" href="/sitemap.xml">Sitemap</a></li><li><a class="footer-link" href="/llms.txt">llms.txt</a></li><li><a class="footer-link" href="/ai.txt">ai.txt</a></li></ul></div></div><div style="border-top:1px solid var(--color-teal-gray);padding-top:24px;display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:16px"><p style="font-size:12px;color:var(--color-cool-gray)">© <!-- -->2026<!-- --> Geodocs.dev. <!-- -->All rights reserved.</p><p style="font-size:12px;color:var(--color-cool-gray)"><a href="mailto:contact@geodocs.dev" class="footer-link">contact@geodocs.dev</a> · <!-- -->Built for humans and AI agents.</p></div></div><style> .footer-link { font-size: 13px; color: var(--color-silver-teal); text-decoration: none; transition: color 0.2s ease; } .footer-link:hover { color: var(--color-white); } </style></footer><!--$--><!--/$--><script> (function(){ var s=document.createElement('script'); s.src='https://cdn.jsdelivr.net/npm/mermaid@11.4.1/dist/mermaid.min.js'; s.defer=true; s.onload=function(){ var isDark=document.documentElement.getAttribute('data-theme')==='dark'; mermaid.initialize({startOnLoad:true,theme:isDark?'dark':'default',securityLevel:'loose'}); mermaid.run(); }; document.head.appendChild(s); })(); (function(){ var link=document.createElement('link'); link.rel='stylesheet'; var isDark=document.documentElement.getAttribute('data-theme')==='dark'; link.href=isDark ?'https://cdn.jsdelivr.net/gh/highlightjs/cdn-release@11.11.1/build/styles/github-dark.min.css' :'https://cdn.jsdelivr.net/gh/highlightjs/cdn-release@11.11.1/build/styles/github.min.css'; link.id='hljs-theme'; document.head.appendChild(link); var s=document.createElement('script'); s.src='https://cdn.jsdelivr.net/gh/highlightjs/cdn-release@11.11.1/build/highlight.min.js'; s.defer=true; s.onload=function(){hljs.highlightAll()}; document.head.appendChild(s); })(); </script><script src="/_next/static/chunks/0_k5kz-r4593u.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[86402,[\"/_next/static/chunks/0ld4q8u-25eux.js\",\"/_next/static/chunks/0d3shmwh5_nmn.js\",\"/_next/static/chunks/0q_5ckv7l6e70.js\",\"/_next/static/chunks/148t.fhegq9f1.js\",\"/_next/static/chunks/05cra..ka3fzk.js\"],\"GTMNoScript\"]\n3:I[59919,[\"/_next/static/chunks/0ld4q8u-25eux.js\",\"/_next/static/chunks/0d3shmwh5_nmn.js\",\"/_next/static/chunks/0q_5ckv7l6e70.js\",\"/_next/static/chunks/148t.fhegq9f1.js\",\"/_next/static/chunks/05cra..ka3fzk.js\"],\"ThemeProvider\"]\n4:\"$Sreact.suspense\"\n5:I[86402,[\"/_next/static/chunks/0ld4q8u-25eux.js\",\"/_next/static/chunks/0d3shmwh5_nmn.js\",\"/_next/static/chunks/0q_5ckv7l6e70.js\",\"/_next/static/chunks/148t.fhegq9f1.js\",\"/_next/static/chunks/05cra..ka3fzk.js\"],\"PostHogPageView\"]\n6:I[39756,[\"/_next/static/chunks/0ld4q8u-25eux.js\",\"/_next/static/chunks/0d3shmwh5_nmn.js\",\"/_next/static/chunks/0q_5ckv7l6e70.js\",\"/_next/static/chunks/148t.fhegq9f1.js\",\"/_next/static/chunks/05cra..ka3fzk.js\"],\"default\"]\n7:I[37457,[\"/_next/static/chunks/0ld4q8u-25eux.js\",\"/_next/static/chunks/0d3shmwh5_nmn.js\",\"/_next/static/chunks/0q_5ckv7l6e70.js\",\"/_next/static/chunks/148t.fhegq9f1.js\",\"/_next/static/chunks/05cra..ka3fzk.js\"],\"default\"]\n9:I[35264,[\"/_next/static/chunks/0ld4q8u-25eux.js\",\"/_next/static/chunks/0d3shmwh5_nmn.js\",\"/_next/static/chunks/0q_5ckv7l6e70.js\",\"/_next/static/chunks/148t.fhegq9f1.js\",\"/_next/static/chunks/05cra..ka3fzk.js\"],\"AlgoliaSearchDialog\"]\na:I[56414,[\"/_next/static/chunks/0ld4q8u-25eux.js\",\"/_next/static/chunks/0d3shmwh5_nmn.js\",\"/_next/static/chunks/0q_5ckv7l6e70.js\",\"/_next/static/chunks/148t.fhegq9f1.js\",\"/_next/static/chunks/05cra..ka3fzk.js\"],\"GeolifyAIDialog\"]\nb:I[86402,[\"/_next/static/chunks/0ld4q8u-25eux.js\",\"/_next/static/chunks/0d3shmwh5_nmn.js\",\"/_next/static/chunks/0q_5ckv7l6e70.js\",\"/_next/static/chunks/148t.fhegq9f1.js\",\"/_next/static/chunks/05cra..ka3fzk.js\"],\"Analytics\"]\ne:I[97367,[\"/_next/static/chunks/0ld4q8u-25eux.js\",\"/_next/static/chunks/0d3shmwh5_nmn.js\",\"/_next/static/chunks/0q_5ckv7l6e70.js\",\"/_next/static/chunks/148t.fhegq9f1.js\",\"/_next/static/chunks/05cra..ka3fzk.js\"],\"OutletBoundary\"]\n11:I[97367,[\"/_next/static/chunks/0ld4q8u-25eux.js\",\"/_next/static/chunks/0d3shmwh5_nmn.js\",\"/_next/static/chunks/0q_5ckv7l6e70.js\",\"/_next/static/chunks/148t.fhegq9f1.js\",\"/_next/static/chunks/05cra..ka3fzk.js\"],\"ViewportBoundary\"]\n13:I[97367,[\"/_next/static/chunks/0ld4q8u-25eux.js\",\"/_next/static/chunks/0d3shmwh5_nmn.js\",\"/_next/static/chunks/0q_5ckv7l6e70.js\",\"/_next/static/chunks/148t.fhegq9f1.js\",\"/_next/static/chunks/05cra..ka3fzk.js\"],\"MetadataBoundary\"]\n15:I[63491,[\"/_next/static/chunks/0ld4q8u-25eux.js\",\"/_next/static/chunks/0d3shmwh5_nmn.js\",\"/_next/static/chunks/0q_5ckv7l6e70.js\",\"/_next/static/chunks/148t.fhegq9f1.js\",\"/_next/static/chunks/05cra..ka3fzk.js\",\"/_next/static/chunks/0z~59b-n8nq5n.js\"],\"default\"]\n:HL[\"/_next/static/chunks/0m3u_6ri~.w--.css\",\"style\"]\n:HL[\"https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700\u0026family=JetBrains+Mono:wght@400;500;600\u0026family=Lora:ital,wght@0,400;0,500;0,600;0,700;1,400;1,500;1,600;1,700\u0026display=swap\",\"style\"]\nc:T42d,\n(function(){\n var s=document.createElement('script');\n s.src='https://cdn.jsdelivr.net/npm/mermaid@11.4.1/dist/mermaid.min.js';\n s.defer=true;\n s.onload=function(){\n var isDark=document.documentElement.getAttribute('data-theme')==='dark';\n mermaid.initialize({startOnLoad:true,theme:isDark?'dark':'default',securityLevel:'loose'});\n mermaid.run();\n };\n document.head.appendChild(s);\n})();\n(function(){\n var link=document.createElement('link');\n link.rel='stylesheet';\n var isDark=document.documentElement.getAttribute('data-theme')==='dark';\n link.href=isDark\n ?'https://cdn.jsdelivr.net/gh/highlightjs/cdn-release@11.11.1/build/styles/github-dark.min.css'\n :'https://cdn.jsdelivr.net/gh/highlightjs/cdn-release@11.11.1/build/styles/github.min.css';\n link.id='hljs-theme';\n document.head.appendChild(link);\n var s=document.createElement('script');\n s.src='https://cdn.jsdelivr.net/gh/highlightjs/cdn-release@11.11.1/build/highlight.min.js';\n s.defer=true;\n s.onload=fu"])</script><script>self.__next_f.push([1,"nction(){hljs.highlightAll()};\n document.head.appendChild(s);\n})();\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"c\":[\"\",\"ai-agents\",\"content-spec\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"ai-agents\",{\"children\":[[\"slug\",\"content-spec\",\"d\",null],{\"children\":[\"__PAGE__\",{}]}]}]},\"$undefined\",\"$undefined\",16],[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/0m3u_6ri~.w--.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/0ld4q8u-25eux.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-1\",{\"src\":\"/_next/static/chunks/0d3shmwh5_nmn.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-2\",{\"src\":\"/_next/static/chunks/0q_5ckv7l6e70.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-3\",{\"src\":\"/_next/static/chunks/148t.fhegq9f1.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-4\",{\"src\":\"/_next/static/chunks/05cra..ka3fzk.js\",\"async\":true,\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"suppressHydrationWarning\":true,\"children\":[[\"$\",\"head\",null,{\"children\":[[\"$\",\"script\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"(function(){try{var t=localStorage.getItem('geodocs-theme');if(t==='dark'){document.documentElement.setAttribute('data-theme','dark')}else{document.documentElement.setAttribute('data-theme','light')}}catch(e){}})()\"}}],[\"$\",\"link\",null,{\"rel\":\"icon\",\"href\":\"/favicon.ico\",\"sizes\":\"any\"}],[\"$\",\"link\",null,{\"rel\":\"preconnect\",\"href\":\"https://fonts.googleapis.com\"}],[\"$\",\"link\",null,{\"rel\":\"preconnect\",\"href\":\"https://fonts.gstatic.com\",\"crossOrigin\":\"anonymous\"}],[\"$\",\"link\",null,{\"href\":\"https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700\u0026family=JetBrains+Mono:wght@400;500;600\u0026family=Lora:ital,wght@0,400;0,500;0,600;0,700;1,400;1,500;1,600;1,700\u0026display=swap\",\"rel\":\"stylesheet\"}]]}],[\"$\",\"body\",null,{\"children\":[[\"$\",\"$L2\",null,{}],[\"$\",\"$L3\",null,{\"children\":[[\"$\",\"$4\",null,{\"fallback\":null,\"children\":[\"$\",\"$L5\",null,{}]}],[\"$\",\"$L6\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L7\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[\"$L8\",[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}],[\"$\",\"$L9\",null,{}],[\"$\",\"$La\",null,{}]]}],[\"$\",\"$Lb\",null,{}],[\"$\",\"script\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"$c\"}}]]}]]}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L6\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L7\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L6\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L7\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[\"$Ld\",[[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/0immojv~8w4~6.js\",\"async\":true,\"nonce\":\"$undefined\"}]],[\"$\",\"$Le\",null,{\"children\":[\"$\",\"$4\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@f\"}]}]]}],{},null,false,null]},null,false,\"$@10\"]},null,false,\"$@10\"]},null,false,null],[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$L11\",null,{\"children\":\"$L12\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$L13\",null,{\"children\":[\"$\",\"$4\",null,{\"name\":\"Next.Metadata\",\"children\":\"$L14\"}]}]}],null]}],false]],\"m\":\"$undefined\",\"G\":[\"$15\",[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/0m3u_6ri~.w--.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]]],\"S\":true,\"h\":null,\"s\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"XmxgrMGsPQQMqpdfzGmxJ\"}\n"])</script><script>self.__next_f.push([1,"16:[]\n10:\"$W16\"\n"])</script><script>self.__next_f.push([1,"17:I[2971,[\"/_next/static/chunks/0ld4q8u-25eux.js\",\"/_next/static/chunks/0d3shmwh5_nmn.js\",\"/_next/static/chunks/0q_5ckv7l6e70.js\",\"/_next/static/chunks/148t.fhegq9f1.js\",\"/_next/static/chunks/05cra..ka3fzk.js\",\"/_next/static/chunks/0immojv~8w4~6.js\"],\"Header\"]\n"])</script><script>self.__next_f.push([1,"8:[[\"$\",\"$L17\",null,{\"lang\":\"en\",\"dict\":{\"nav\":{\"startHere\":\"Start Here\",\"geo\":\"GEO\",\"aeo\":\"AEO\",\"technical\":\"Technical\",\"strategy\":\"Strategy\",\"reference\":\"Reference\",\"tools\":\"Tools\",\"search\":\"Search docs...\",\"askGeolifyAI\":\"Ask GeolifyAI\",\"beta\":\"Beta\"},\"home\":{\"tagline\":\"The Canonical Knowledge System\",\"headline\":\"Structured knowledge for\",\"headlineHighlight\":\"AI search visibility\",\"subtitle\":\"GEO, AEO, and AI search optimization — defined, structured, and operationalized. Built for SEO professionals, developers, content teams, and AI agents.\",\"ctaPrimary\":\"Start with GEO\",\"ctaSecondary\":\"Read llms.txt spec\",\"trustSignals\":{\"answerFirst\":\"Answer-first content\",\"aiCitable\":\"AI-citable definitions\",\"machineReadable\":\"Machine-readable specs\",\"openFree\":\"Open \u0026 free\"},\"essentialReading\":\"Essential Reading\",\"geoPlaybooks\":\"GEO Playbooks\",\"playbooksSubtitle\":\"Canonical definitions, comparisons, and implementation guides. Start here to build your GEO foundation.\",\"readArticle\":\"Read article\",\"operatorsToolkit\":\"Operator's Toolkit\",\"technicalStandards\":\"Technical Standards for AI Search\",\"technicalSubtitle\":\"Implementation specs, file standards, and measurement frameworks. Everything you need to make your content AI-ready.\",\"knowledgeMap\":\"Knowledge Map\",\"browseBySection\":\"Browse by Section\",\"browseSubtitle\":\"Every concept has one canonical page. Explore the knowledge graph organized by domain.\",\"aiNativeDoc\":\"AI-Native Documentation\",\"builtForHumans\":\"Built for humans.\",\"readableByAI\":\"Readable by AI.\",\"aiNativeSubtitle\":\"Every page on geodocs.dev includes AI summary blocks, structured frontmatter, and machine-readable specs. Our content is designed to be cited by AI systems worldwide.\",\"aiContentSpec\":\"AI Content Spec\",\"viewLlmsTxt\":\"View llms.txt\"},\"sections\":{\"geo\":{\"title\":\"GEO - Generative Engine Optimization\",\"description\":\"Guides, definitions, and frameworks for optimizing content visibility in AI-generated answers.\"},\"aeo\":{\"title\":\"AEO - Answer Engine Optimization\",\"description\":\"How to structure content so AI systems can extract and cite direct answers.\"},\"technical\":{\"title\":\"Technical Implementation\",\"description\":\"llms.txt, ai.txt, structured data, and other technical specs for AI search readiness.\"},\"strategy\":{\"title\":\"Strategy \u0026 Frameworks\",\"description\":\"Business frameworks for AI search visibility — ROI, measurement, and content planning.\"},\"reference\":{\"title\":\"Reference\",\"description\":\"Glossary, cheatsheets, and canonical definitions for GEO/AEO terminology.\"},\"tools\":{\"title\":\"Tools \u0026 Platforms\",\"description\":\"Evaluations, comparisons, and stack recommendations for AI search optimization tools.\"},\"case-studies\":{\"title\":\"Case Studies\",\"description\":\"Evidence-based examples with real data — before/after results and industry applications.\"},\"ai-agents\":{\"title\":\"AI Agents\",\"description\":\"Machine-readable specs and documentation designed specifically for AI parsers and bots.\"}},\"article\":{\"minRead\":\"{min} min read\",\"words\":\"{count} words\",\"updated\":\"Updated {date}\",\"relatedArticles\":\"Related Articles\",\"onThisPage\":\"On this page\",\"topics\":\"Topics\",\"copy\":\"Copy\",\"copied\":\"Copied!\"},\"tags\":{\"browseByTopic\":\"Browse by Topic\",\"exploreTopics\":\"Explore {count} topics across all GEO, AEO, and AI search optimization articles.\",\"articlesTaggedWith\":\"{count} article tagged with \\\"{tag}\\\"|{count} articles tagged with \\\"{tag}\\\"\"},\"newsletter\":{\"stayUpdated\":\"Stay Updated\",\"title\":\"GEO \u0026 AI Search Insights\",\"description\":\"New articles, framework updates, and industry analysis. No spam, unsubscribe anytime.\",\"placeholder\":\"your@email.com\",\"subscribe\":\"Subscribe\",\"success\":\"You're subscribed! We'll keep you updated.\",\"error\":\"Something went wrong. Please try again.\"},\"footer\":{\"learn\":\"Learn\",\"build\":\"Build\",\"strategy\":\"Strategy\",\"resources\":\"Resources\",\"description\":\"Structured knowledge for AI search visibility. The canonical reference for GEO, AEO, and AI search optimization.\",\"allRightsReserved\":\"All rights reserved.\",\"builtForHumansAndAI\":\"Built for humans and AI agents.\"},\"common\":{\"articles\":\"articles\",\"article\":\"article\",\"page\":\"Page {current} of {total}\",\"noArticles\":\"No published articles in this section yet.\",\"checkBackSoon\":\"Content is being actively developed. Check back soon.\",\"loadingArticles\":\"Loading articles…\",\"prev\":\"← Prev\",\"next\":\"Next →\",\"goHome\":\"Go home\",\"startWithGEO\":\"Start with GEO\"},\"notFound\":{\"label\":\"404 - Page Not Found\",\"title\":\"This page doesn't exist yet.\",\"description\":\"The content you're looking for may be in development. Geodocs.dev is actively building the canonical knowledge base for GEO and AEO.\"},\"error\":{\"title\":\"Something went wrong\",\"description\":\"An unexpected error occurred. Our team has been notified.\",\"tryAgain\":\"Try Again\"},\"contact\":{\"getInTouch\":\"Get In Touch\",\"contactUs\":\"Contact Us\",\"heroDescription\":\"Have a question about GEO, AEO, or AI search optimization? Want to collaborate or contribute? We'd love to hear from you.\",\"name\":\"Name\",\"email\":\"Email\",\"subject\":\"Subject\",\"subjectPlaceholder\":\"What is this about?\",\"namePlaceholder\":\"Your name\",\"message\":\"Message\",\"messagePlaceholder\":\"Tell us more...\",\"sendMessage\":\"Send Message\",\"sending\":\"Sending...\",\"messageSent\":\"Message sent!\",\"thankYou\":\"Thank you for reaching out. We'll get back to you within 1-2 business days.\",\"sendAnother\":\"Send another message\",\"emailDirectly\":\"Or email us directly at\",\"validationName\":\"Please enter your name.\",\"validationEmail\":\"Please enter a valid email address.\",\"validationMessage\":\"Please enter a message (at least 10 characters).\",\"networkError\":\"Network error. Please try again.\",\"genericError\":\"Something went wrong. Please try again.\"},\"languagePicker\":{\"label\":\"Language\"}}}],\"$L18\",\"$L19\"]\n"])</script><script>self.__next_f.push([1,"1a:I[22016,[\"/_next/static/chunks/0ld4q8u-25eux.js\",\"/_next/static/chunks/0d3shmwh5_nmn.js\",\"/_next/static/chunks/0q_5ckv7l6e70.js\",\"/_next/static/chunks/148t.fhegq9f1.js\",\"/_next/static/chunks/05cra..ka3fzk.js\",\"/_next/static/chunks/0immojv~8w4~6.js\"],\"\"]\n1b:I[5500,[\"/_next/static/chunks/0ld4q8u-25eux.js\",\"/_next/static/chunks/0d3shmwh5_nmn.js\",\"/_next/static/chunks/0q_5ckv7l6e70.js\",\"/_next/static/chunks/148t.fhegq9f1.js\",\"/_next/static/chunks/05cra..ka3fzk.js\",\"/_next/static/chunks/0immojv~8w4~6.js\"],\"Image\"]\n18:[\"$\",\"main\",null,{\"style\":{\"minHeight\":\"60vh\",\"display\":\"flex\",\"alignItems\":\"center\",\"justifyContent\":\"center\",\"textAlign\":\"center\",\"padding\":\"80px 24px\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"var(--font-mono)\",\"fontSize\":11,\"fontWeight\":600,\"textTransform\":\"uppercase\",\"letterSpacing\":3,\"color\":\"var(--color-cool-gray)\",\"marginBottom\":16},\"children\":\"404 - Page Not Found\"}],[\"$\",\"h1\",null,{\"style\":{\"fontFamily\":\"var(--font-display)\",\"fontSize\":\"clamp(2rem, 4vw, 3rem)\",\"fontWeight\":400,\"color\":\"var(--color-forest-black)\",\"marginBottom\":16},\"children\":\"This page doesn't exist yet.\"}],[\"$\",\"p\",null,{\"style\":{\"fontSize\":16,\"color\":\"var(--color-cool-gray)\",\"lineHeight\":1.7,\"maxWidth\":480,\"margin\":\"0 auto 32px\"},\"children\":\"The content you're looking for may be in development. Geodocs.dev is actively building the canonical knowledge base for GEO and AEO.\"}],[\"$\",\"div\",null,{\"style\":{\"display\":\"flex\",\"justifyContent\":\"center\",\"gap\":12},\"children\":[[\"$\",\"$L1a\",null,{\"href\":\"/\",\"className\":\"btn btn-primary\",\"children\":\"Go home\"}],[\"$\",\"$L1a\",null,{\"href\":\"/geo/what-is-geo\",\"className\":\"btn btn-outline\",\"children\":\"Start with GEO\"}]]}]]}]}]\n"])</script><script>self.__next_f.push([1,"19:[\"$\",\"footer\",null,{\"style\":{\"background\":\"var(--color-forest-black)\",\"borderTop\":\"1px solid var(--color-teal-gray)\",\"padding\":\"64px 24px 32px\"},\"children\":[[\"$\",\"div\",null,{\"style\":{\"maxWidth\":1200,\"margin\":\"0 auto\"},\"children\":[[\"$\",\"div\",null,{\"style\":{\"display\":\"grid\",\"gridTemplateColumns\":\"repeat(auto-fit, minmax(180px, 1fr))\",\"gap\":48,\"marginBottom\":48},\"children\":[[\"$\",\"div\",null,{\"children\":[[\"$\",\"div\",null,{\"style\":{\"marginBottom\":16},\"children\":[\"$\",\"$L1b\",null,{\"src\":\"/geodocs-logo-dark.svg\",\"alt\":\"Geodocs.dev\",\"width\":140,\"height\":32,\"style\":{\"height\":24,\"width\":\"auto\"}}]}],[\"$\",\"p\",null,{\"style\":{\"fontSize\":13,\"color\":\"var(--color-cool-gray)\",\"lineHeight\":1.6,\"maxWidth\":220},\"children\":\"Structured knowledge for AI search visibility. The canonical reference for GEO, AEO, and AI search optimization.\"}]]}],[[\"$\",\"div\",\"Learn\",{\"children\":[[\"$\",\"h4\",null,{\"style\":{\"fontFamily\":\"var(--font-mono)\",\"fontSize\":11,\"fontWeight\":600,\"textTransform\":\"uppercase\",\"letterSpacing\":2,\"color\":\"var(--color-mongodb-green)\",\"marginBottom\":16},\"children\":\"Learn\"}],[\"$\",\"ul\",null,{\"style\":{\"listStyle\":\"none\",\"display\":\"flex\",\"flexDirection\":\"column\",\"gap\":10},\"children\":[[\"$\",\"li\",\"/geo/what-is-geo\",{\"children\":[\"$\",\"$L1a\",null,{\"href\":\"/geo/what-is-geo\",\"className\":\"footer-link\",\"children\":\"What Is GEO?\"}]}],[\"$\",\"li\",\"/aeo/what-is-aeo\",{\"children\":[\"$\",\"$L1a\",null,{\"href\":\"/aeo/what-is-aeo\",\"className\":\"footer-link\",\"children\":\"What Is AEO?\"}]}],[\"$\",\"li\",\"/geo/geo-vs-seo\",{\"children\":[\"$\",\"$L1a\",null,{\"href\":\"/geo/geo-vs-seo\",\"className\":\"footer-link\",\"children\":\"GEO vs SEO\"}]}],[\"$\",\"li\",\"/reference/geo-aeo-glossary\",{\"children\":[\"$\",\"$L1a\",null,{\"href\":\"/reference/geo-aeo-glossary\",\"className\":\"footer-link\",\"children\":\"GEO Glossary\"}]}]]}]]}],[\"$\",\"div\",\"Build\",{\"children\":[[\"$\",\"h4\",null,{\"style\":{\"fontFamily\":\"var(--font-mono)\",\"fontSize\":11,\"fontWeight\":600,\"textTransform\":\"uppercase\",\"letterSpacing\":2,\"color\":\"var(--color-mongodb-green)\",\"marginBottom\":16},\"children\":\"Build\"}],[\"$\",\"ul\",null,{\"style\":{\"listStyle\":\"none\",\"display\":\"flex\",\"flexDirection\":\"column\",\"gap\":10},\"children\":[[\"$\",\"li\",\"/technical/llms-txt\",{\"children\":[\"$\",\"$L1a\",null,{\"href\":\"/technical/llms-txt\",\"className\":\"footer-link\",\"children\":\"llms.txt Reference\"}]}],[\"$\",\"li\",\"/technical/how-to-create-llms-txt\",{\"children\":[\"$\",\"$L1a\",null,{\"href\":\"/technical/how-to-create-llms-txt\",\"className\":\"footer-link\",\"children\":\"Create llms.txt\"}]}],[\"$\",\"li\",\"/technical/structured-data-for-ai-search\",{\"children\":[\"$\",\"$L1a\",null,{\"href\":\"/technical/structured-data-for-ai-search\",\"className\":\"footer-link\",\"children\":\"Structured Data\"}]}],[\"$\",\"li\",\"/technical/ai-txt\",{\"children\":[\"$\",\"$L1a\",null,{\"href\":\"/technical/ai-txt\",\"className\":\"footer-link\",\"children\":\"ai.txt Reference\"}]}]]}]]}],[\"$\",\"div\",\"Strategy\",{\"children\":[[\"$\",\"h4\",null,{\"style\":{\"fontFamily\":\"var(--font-mono)\",\"fontSize\":11,\"fontWeight\":600,\"textTransform\":\"uppercase\",\"letterSpacing\":2,\"color\":\"var(--color-mongodb-green)\",\"marginBottom\":16},\"children\":\"Strategy\"}],[\"$\",\"ul\",null,{\"style\":{\"listStyle\":\"none\",\"display\":\"flex\",\"flexDirection\":\"column\",\"gap\":10},\"children\":[[\"$\",\"li\",\"/strategy/ai-visibility-measurement\",{\"children\":[\"$\",\"$L1a\",null,{\"href\":\"/strategy/ai-visibility-measurement\",\"className\":\"footer-link\",\"children\":\"AI Visibility\"}]}],[\"$\",\"li\",\"/strategy/geo-content-strategy\",{\"children\":[\"$\",\"$L1a\",null,{\"href\":\"/strategy/geo-content-strategy\",\"className\":\"footer-link\",\"children\":\"Content Strategy\"}]}],[\"$\",\"li\",\"/strategy/geo-roi-framework\",{\"children\":[\"$\",\"$L1a\",null,{\"href\":\"/strategy/geo-roi-framework\",\"className\":\"footer-link\",\"children\":\"GEO ROI\"}]}],[\"$\",\"li\",\"/aeo/aeo-content-checklist\",{\"children\":[\"$\",\"$L1a\",null,{\"href\":\"/aeo/aeo-content-checklist\",\"className\":\"footer-link\",\"children\":\"AEO Checklist\"}]}]]}]]}],[\"$\",\"div\",\"Resources\",{\"children\":[[\"$\",\"h4\",null,{\"style\":{\"fontFamily\":\"var(--font-mono)\",\"fontSize\":11,\"fontWeight\":600,\"textTransform\":\"uppercase\",\"letterSpacing\":2,\"color\":\"var(--color-mongodb-green)\",\"marginBottom\":16},\"children\":\"Resources\"}],[\"$\",\"ul\",null,{\"style\":{\"listStyle\":\"none\",\"display\":\"flex\",\"flexDirection\":\"column\",\"gap\":10},\"children\":[[\"$\",\"li\",\"https://github.com/Geodocs-dev\",{\"children\":[\"$\",\"$L1a\",null,{\"href\":\"https://github.com/Geodocs-dev\",\"className\":\"footer-link\",\"children\":\"GitHub\"}]}],[\"$\",\"li\",\"/contact\",{\"children\":[\"$\",\"$L1a\",null,{\"href\":\"/contact\",\"className\":\"footer-link\",\"children\":\"Contact\"}]}],[\"$\",\"li\",\"/tags\",{\"children\":[\"$\",\"$L1a\",null,{\"href\":\"/tags\",\"className\":\"footer-link\",\"children\":\"Tags\"}]}],[\"$\",\"li\",\"/sitemap.xml\",{\"children\":[\"$\",\"$L1a\",null,{\"href\":\"/sitemap.xml\",\"className\":\"footer-link\",\"children\":\"Sitemap\"}]}],\"$L1c\",\"$L1d\"]}]]}]]]}],\"$L1e\"]}],\"$L1f\"]}]\n"])</script><script>self.__next_f.push([1,"1c:[\"$\",\"li\",\"/llms.txt\",{\"children\":[\"$\",\"$L1a\",null,{\"href\":\"/llms.txt\",\"className\":\"footer-link\",\"children\":\"llms.txt\"}]}]\n1d:[\"$\",\"li\",\"/ai.txt\",{\"children\":[\"$\",\"$L1a\",null,{\"href\":\"/ai.txt\",\"className\":\"footer-link\",\"children\":\"ai.txt\"}]}]\n1e:[\"$\",\"div\",null,{\"style\":{\"borderTop\":\"1px solid var(--color-teal-gray)\",\"paddingTop\":24,\"display\":\"flex\",\"justifyContent\":\"space-between\",\"alignItems\":\"center\",\"flexWrap\":\"wrap\",\"gap\":16},\"children\":[[\"$\",\"p\",null,{\"style\":{\"fontSize\":12,\"color\":\"var(--color-cool-gray)\"},\"children\":[\"© \",2026,\" Geodocs.dev. \",\"All rights reserved.\"]}],[\"$\",\"p\",null,{\"style\":{\"fontSize\":12,\"color\":\"var(--color-cool-gray)\"},\"children\":[[\"$\",\"a\",null,{\"href\":\"mailto:contact@geodocs.dev\",\"className\":\"footer-link\",\"children\":\"contact@geodocs.dev\"}],\" · \",\"Built for humans and AI agents.\"]}]]}]\n1f:[\"$\",\"style\",null,{\"children\":\"\\n .footer-link {\\n font-size: 13px;\\n color: var(--color-silver-teal);\\n text-decoration: none;\\n transition: color 0.2s ease;\\n }\\n .footer-link:hover {\\n color: var(--color-white);\\n }\\n \"}]\n"])</script><script>self.__next_f.push([1,"20:I[43937,[\"/_next/static/chunks/0ld4q8u-25eux.js\",\"/_next/static/chunks/0d3shmwh5_nmn.js\",\"/_next/static/chunks/0q_5ckv7l6e70.js\",\"/_next/static/chunks/148t.fhegq9f1.js\",\"/_next/static/chunks/05cra..ka3fzk.js\",\"/_next/static/chunks/0immojv~8w4~6.js\"],\"ArticleTracker\"]\n21:T44a,{\"@context\":\"https://schema.org\",\"@type\":\"TechArticle\",\"mainEntityOfPage\":{\"@type\":\"WebPage\",\"@id\":\"https://geodocs.dev/ai-agents/content-spec\"},\"headline\":\"AI Agent Content Specification\",\"description\":\"Specification for structuring web content readable by AI agents — frontmatter, body patterns, llms.txt, ai.txt, agent.md, JSON-LD, per-platform tips.\",\"image\":\"https://geodocs.dev/geodocs-logo-dark.png\",\"url\":\"https://geodocs.dev/ai-agents/content-spec\",\"author\":{\"@type\":\"Person\",\"name\":\"Geodocs Research Team\"},\"publisher\":{\"@type\":\"Organization\",\"name\":\"Geodocs.dev\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://geodocs.dev/geodocs-logo-dark.png\"}},\"datePublished\":\"2025-04-01\",\"dateModified\":\"2026-05-01\",\"keywords\":\"AI agent content specification, machine-readable content, frontmatter schema, agent content format, agents.json, agent.md\",\"about\":[{\"@type\":\"Thing\",\"name\":\"AI Agent Content Specification\"},{\"@type\":\"Thing\",\"name\":\"llms.txt\"},{\"@type\":\"Thing\",\"name\":\"ai.txt\"},{\"@type\":\"Thing\",\"name\":\"agents.json\"},{\"@type\":\"Thing\",\"name\":\"agent.md\"},{\"@type\":\"Thing\",\"name\":\"JSON-LD\"}]}22:Tc4d,"])</script><script>self.__next_f.push([1,"{\"@context\":\"https://schema.org\",\"@type\":\"FAQPage\",\"mainEntity\":[{\"@type\":\"Question\",\"name\":\"Is this specification an official standard?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"No. It is a practical specification based on observable AI system behavior and emerging community conventions. JSON-LD, semantic HTML, and sitemaps are well-established standards; llms.txt, ai.txt, and agents.json are proposals with growing adoption.\"}},{\"@type\":\"Question\",\"name\":\"Do all AI agents follow these conventions?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Not uniformly. JSON-LD and structured HTML are recognized by every major AI system. llms.txt and ai.txt are emerging — major models do not yet officially commit to consuming them, but they are low-cost to publish and forward-compatible.\"}},{\"@type\":\"Question\",\"name\":\"How often should I update my compliance?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Review quarterly. Crawler user agents, structured-data types, and emerging conventions shift fast. Core HTML and schema are stable, but discovery and attribution mechanisms continue to evolve.\"}},{\"@type\":\"Question\",\"name\":\"Is the frontmatter schema required for HTML-only pages?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"The frontmatter schema is the canonical metadata source — it can be expressed equivalently in HTML \u003cmeta\u003e tags or JSON-LD. The exact transport matters less than completeness and accuracy. Static-site generators like Next.js, Astro, and Hugo make YAML frontmatter the easiest path; for hand-authored HTML, mirror the same fields into JSON-LD Article and Organization blocks.\"}},{\"@type\":\"Question\",\"name\":\"What is the bare-minimum subset?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"If you can only do four things: (1) one canonical URL per page, (2) JSON-LD for the primary entity, (3) llms.txt listing your top pages, (4) robots.txt allowing GPTBot, ClaudeBot, and PerplexityBot. This subset captures most of the citation upside.\"}},{\"@type\":\"Question\",\"name\":\"How does this differ from traditional SEO?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Traditional SEO optimizes for ranking in a SERP that a human reads. Agent content optimization additionally optimizes for extraction (a non-human consumer copying a sentence) and attribution (that consumer linking back). The two overlap heavily — a well-structured SEO page is already most of the way to agent-ready — but agent readiness adds explicit machine-readable layers (frontmatter, JSON-LD, llms.txt, ai.txt).\"}},{\"@type\":\"Question\",\"name\":\"Do I need a separate agent.md for every page?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"No. Pair agent.md only with pages that document an actionable surface: APIs, CLIs, SDKs, configuration files. Pure narrative or conceptual pages do not need one — the standard frontmatter and JSON-LD are sufficient.\"}},{\"@type\":\"Question\",\"name\":\"Will following this spec guarantee citations?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"No. It maximizes eligibility — agents still rank by topical authority, freshness, and source reputation. Treat the spec as removing avoidable failure modes, not as a ranking lever.\"}}]}"])</script><script>self.__next_f.push([1,"d:[[\"$\",\"$L17\",null,{\"lang\":\"en\",\"dict\":\"$8:0:props:dict\"}],[[\"$\",\"main\",null,{\"style\":{\"minHeight\":\"70vh\"},\"children\":[[\"$\",\"$L20\",null,{\"meta\":{\"slug\":\"content-spec\",\"section\":\"ai-agents\",\"content_type\":\"specification\",\"difficulty\":\"advanced\",\"primary_audience\":\"developer\",\"secondary_audiences\":[\"content-strategist\",\"engineering-lead\"],\"word_count\":2307,\"reading_time_min\":12,\"has_code_snippet\":false,\"has_table\":true,\"citation_readiness\":\"reviewed\",\"series\":\"ai-agents-foundations\",\"series_order\":6}}],[[\"$\",\"script\",null,{\"type\":\"application/ld+json\",\"dangerouslySetInnerHTML\":{\"__html\":\"$21\"}}],[\"$\",\"script\",null,{\"type\":\"application/ld+json\",\"dangerouslySetInnerHTML\":{\"__html\":\"{\\\"@context\\\":\\\"https://schema.org\\\",\\\"@type\\\":\\\"BreadcrumbList\\\",\\\"itemListElement\\\":[{\\\"@type\\\":\\\"ListItem\\\",\\\"position\\\":1,\\\"name\\\":\\\"Home\\\",\\\"item\\\":\\\"https://geodocs.dev\\\"},{\\\"@type\\\":\\\"ListItem\\\",\\\"position\\\":2,\\\"name\\\":\\\"AI-AGENTS\\\",\\\"item\\\":\\\"https://geodocs.dev/ai-agents\\\"},{\\\"@type\\\":\\\"ListItem\\\",\\\"position\\\":3,\\\"name\\\":\\\"AI Agent Content Specification\\\",\\\"item\\\":\\\"https://geodocs.dev/ai-agents/content-spec\\\"}]}\"}}],[\"$\",\"script\",null,{\"type\":\"application/ld+json\",\"dangerouslySetInnerHTML\":{\"__html\":\"$22\"}}],\"$L23\",\"$L24\"]]}],\"$L25\"],\"$L26\"]\n"])</script><script>self.__next_f.push([1,"27:I[23150,[\"/_next/static/chunks/0ld4q8u-25eux.js\",\"/_next/static/chunks/0d3shmwh5_nmn.js\",\"/_next/static/chunks/0q_5ckv7l6e70.js\",\"/_next/static/chunks/148t.fhegq9f1.js\",\"/_next/static/chunks/05cra..ka3fzk.js\",\"/_next/static/chunks/0immojv~8w4~6.js\"],\"ShareButtons\"]\n28:I[47654,[\"/_next/static/chunks/0ld4q8u-25eux.js\",\"/_next/static/chunks/0d3shmwh5_nmn.js\",\"/_next/static/chunks/0q_5ckv7l6e70.js\",\"/_next/static/chunks/148t.fhegq9f1.js\",\"/_next/static/chunks/05cra..ka3fzk.js\",\"/_next/static/chunks/0immojv~8w4~6.js\"],\"ExploreWithAI\"]\n2c:I[11181,[\"/_next/static/chunks/0ld4q8u-25eux.js\",\"/_next/static/chunks/0d3shmwh5_nmn.js\",\"/_next/static/chunks/0q_5ckv7l6e70.js\",\"/_next/static/chunks/148t.fhegq9f1.js\",\"/_next/static/chunks/05cra..ka3fzk.js\",\"/_next/static/chunks/0immojv~8w4~6.js\"],\"Newsletter\"]\n29:T6c68,"])</script><script>self.__next_f.push([1,"\u003cp\u003eThis specification defines how to structure web content for autonomous AI agents — crawlers, chatbots, research assistants, browser-based agents like ChatGPT Atlas and Perplexity Comet, coding agents like Cursor and Claude Code, and any other AI system that discovers, parses, and synthesizes information from the web on behalf of a user.\u003c/p\u003e\n\u003cdiv class=\"ai-summary\"\u003e\u003cp\u003eThe AI Agent Content Specification defines three layers — discovery (llms.txt, agents.json, sitemap, robots.txt), parsing (frontmatter, semantic HTML, JSON-LD, agent.md), and attribution (ai.txt, canonical URLs) — that together let AI agents reliably find, understand, and cite web content. Compliance is verified through the checklist at the end of this page.\u003c/p\u003e\u003c/div\u003e\n\u003ch2 id=\"tl-dr\"\u003eTL;DR\u003c/h2\u003e\n\u003cp\u003eMake every page agent-ready by ensuring it is discoverable (present in llms.txt and sitemap.xml, allowed for major bots in robots.txt, optionally exposed via agents.json), parseable (full ~30-field frontmatter, semantic headings, JSON-LD, and where relevant a paired agent.md for tool-use surfaces), and attributable (canonical URL plus an ai.txt policy declaring source name and citation format). The compliance checklist at the bottom of this page is the single source of truth.\u003c/p\u003e\n\u003cp\u003eFor the broader strategy, see the AI Agents pillar.\u003c/p\u003e\n\u003ch2 id=\"specification-overview\"\u003eSpecification overview\u003c/h2\u003e\n\u003cdiv class=\"table-responsive\"\u003e\u003ctable\u003e\u003cthead\u003e\u003ctr\u003e\u003cth\u003eLayer\u003c/th\u003e\u003cth\u003ePurpose\u003c/th\u003e\u003cth\u003eStandards\u003c/th\u003e\u003c/tr\u003e\u003c/thead\u003e\u003ctbody\u003e\u003ctr\u003e\u003ctd\u003eDiscovery\u003c/td\u003e\u003ctd\u003eAI agents find your content\u003c/td\u003e\u003ctd\u003ellms.txt, agents.json, sitemap.xml, robots.txt\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003eParsing\u003c/td\u003e\u003ctd\u003eAI agents understand your content\u003c/td\u003e\u003ctd\u003eFrontmatter, semantic HTML, JSON-LD, agent.md\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd\u003eAttribution\u003c/td\u003e\u003ctd\u003eAI agents cite your content\u003c/td\u003e\u003ctd\u003eai.txt, source metadata, canonical URLs\u003c/td\u003e\u003c/tr\u003e\u003c/tbody\u003e\u003c/table\u003e\u003c/div\u003e\n\u003ch2 id=\"layer-1-discovery\"\u003eLayer 1: Discovery\u003c/h2\u003e\n\u003ch3 id=\"llms-txt\"\u003ellms.txt\u003c/h3\u003e\n\u003cp\u003eEvery site should provide a /llms.txt file — a Markdown index that tells AI agents what your site contains and how it is organized. The format was proposed by Jeremy Howard and is documented at llmstxt.org.\u003c/p\u003e\n\u003cp\u003eRequired elements:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSite name (H1 heading)\u003c/li\u003e\n\u003cli\u003eSite description (blockquote)\u003c/li\u003e\n\u003cli\u003eContent index (links with descriptions)\u003c/li\u003e\n\u003cli\u003eSection organization (H2 headings)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eMinimal example:\u003c/p\u003e\n\u003cp\u003emarkdown\u003c/p\u003e\n\u003cblockquote\u003e\u003cp\u003eAcme is a payments platform. This index lists the canonical references AI agents should consult.\u003c/p\u003e\u003c/blockquote\u003e\n\u003ch2 id=\"core-concepts\"\u003eCore concepts\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"/docs/payments\" style=\"color:var(--color-action-blue)\"\u003ePayments overview\u003c/a\u003e: How card and bank transfers move through Acme.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/docs/webhooks\" style=\"color:var(--color-action-blue)\"\u003eWebhooks reference\u003c/a\u003e: Event types, retry policy, and signature verification.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"api\"\u003eAPI\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"/api/auth\" style=\"color:var(--color-action-blue)\"\u003eAuthentication\u003c/a\u003e: API key formats and header conventions.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/api/errors\" style=\"color:var(--color-action-blue)\"\u003eErrors\u003c/a\u003e: Error envelope and code taxonomy.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eFull specification: How to Create llms.txt.\u003c/p\u003e\n\u003ch3 id=\"agents-json-proposed\"\u003eagents.json (proposed)\u003c/h3\u003e\n\u003cp\u003eagents.json is an emerging convention for declaring agent-actionable surfaces — APIs, tools, and structured tasks — at a well-known location (/.well-known/agents.json). It complements llms.txt by exposing capabilities, not just content.\u003c/p\u003e\n\u003cp\u003eMinimal example:\u003c/p\u003e\n\u003cdiv class=\"code-block-wrapper\" style=\"position:relative\"\u003e\u003cbutton data-copy-snippet=\"true\" data-snippet-id=\"snippet-0\" data-snippet-lang=\"json\" class=\"copy-btn\" title=\"Copy\" style=\"position:absolute;top:8px;right:8px;padding:4px 10px;border-radius:4px;border:1px solid var(--border-default);background:var(--bg-surface);color:var(--text-secondary);font-size:12px;font-family:var(--font-mono);cursor:pointer;opacity:0.7;transition:opacity 0.2s;z-index:1\" onclick=\"navigator.clipboard.writeText(this.parentElement.querySelector('code').textContent);this.textContent='Copied!';setTimeout(()=\u003ethis.textContent='Copy',1500)\"\u003eCopy\u003c/button\u003e\u003cpre\u003e\u003ccode class=\"language-json\"\u003e{\n \"schema_version\": \"v1\",\n \"name_for_model\": \"acme_payments\",\n \"description_for_model\": \"Read and act on Acme payment data.\",\n \"auth\": { \"type\": \"oauth\", \"authorization_url\": \"https://acme.com/oauth\" },\n \"tools\": [\n {\n \"name\": \"create_invoice\",\n \"description\": \"Create an invoice for a customer.\",\n \"endpoint\": \"https://api.acme.com/v1/invoices\",\n \"method\": \"POST\"\n }\n ],\n \"contact_email\": \"[email protected]\"\n}\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eAdoption is partial; treat it as forward-compatible metadata, not a hard requirement.\u003c/p\u003e\n\u003ch3 id=\"sitemap-for-ai\"\u003eSitemap for AI\u003c/h3\u003e\n\u003cp\u003eStandard XML sitemaps help AI crawlers discover content. Enhance with:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003clastmod\u003e for freshness signals\u003c/li\u003e\n\u003cli\u003e\u003cchangefreq\u003e to indicate update patterns\u003c/li\u003e\n\u003cli\u003e\u003cpriority\u003e to highlight key pages\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eA separate sitemap-ai.xml can list only canonical, citation-ready pages — useful when your site mixes marketing and reference content.\u003c/p\u003e\n\u003ch3 id=\"robots-txt-for-ai-crawlers\"\u003erobots.txt for AI crawlers\u003c/h3\u003e\n\u003cp\u003eExplicitly allow major agent crawlers; disallow only when you have a specific reason:\u003c/p\u003e\n\u003cp\u003eUser-agent: GPTBot\u003c/p\u003e\n\u003cp\u003eAllow: /\u003c/p\u003e\n\u003cp\u003eUser-agent: OAI-SearchBot\u003c/p\u003e\n\u003cp\u003eAllow: /\u003c/p\u003e\n\u003cp\u003eUser-agent: ChatGPT-User\u003c/p\u003e\n\u003cp\u003eAllow: /\u003c/p\u003e\n\u003cp\u003eUser-agent: ClaudeBot\u003c/p\u003e\n\u003cp\u003eAllow: /\u003c/p\u003e\n\u003cp\u003eUser-agent: Claude-Web\u003c/p\u003e\n\u003cp\u003eAllow: /\u003c/p\u003e\n\u003cp\u003eUser-agent: PerplexityBot\u003c/p\u003e\n\u003cp\u003eAllow: /\u003c/p\u003e\n\u003cp\u003eUser-agent: Perplexity-User\u003c/p\u003e\n\u003cp\u003eAllow: /\u003c/p\u003e\n\u003cp\u003eUser-agent: Applebot-Extended\u003c/p\u003e\n\u003cp\u003eAllow: /\u003c/p\u003e\n\u003cp\u003eUser-agent: Google-Extended\u003c/p\u003e\n\u003cp\u003eAllow: /\u003c/p\u003e\n\u003cp\u003eCrawler user-agents change. Verify at OpenAI bot docs, Anthropic crawler docs, and Google crawler docs.\u003c/p\u003e\n\u003ch2 id=\"layer-2-parsing\"\u003eLayer 2: Parsing\u003c/h2\u003e\n\u003ch3 id=\"frontmatter-metadata-schema\"\u003eFrontmatter metadata schema\u003c/h3\u003e\n\u003cp\u003eEvery content page should include structured frontmatter. The schema below is the canonical 30-field shape; deviate only where a field truly does not apply.\u003c/p\u003e\n\u003cdiv class=\"code-block-wrapper\" style=\"position:relative\"\u003e\u003cbutton data-copy-snippet=\"true\" data-snippet-id=\"snippet-1\" data-snippet-lang=\"yaml\" class=\"copy-btn\" title=\"Copy\" style=\"position:absolute;top:8px;right:8px;padding:4px 10px;border-radius:4px;border:1px solid var(--border-default);background:var(--bg-surface);color:var(--text-secondary);font-size:12px;font-family:var(--font-mono);cursor:pointer;opacity:0.7;transition:opacity 0.2s;z-index:1\" onclick=\"navigator.clipboard.writeText(this.parentElement.querySelector('code').textContent);this.textContent='Copied!';setTimeout(()=\u003ethis.textContent='Copy',1500)\"\u003eCopy\u003c/button\u003e\u003cpre\u003e\u003ccode class=\"language-yaml\"\u003e---\n# Identity\ntitle: \"Page Title\"\nslug: \"url-slug\"\nsection: \"section-name\"\ncanonical_url: \"https://example.com/section/url-slug\"\nstatus: \"published\"\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003ch1 id=\"knowledge\"\u003eKnowledge\u003c/h1\u003e\n\u003cp\u003ecanonical_concept_id: \"unique-concept-identifier\"\u003c/p\u003e\n\u003cp\u003eknowledge_domain: \"domain-name\"\u003c/p\u003e\n\u003cp\u003econcept_type: \"core-concept|sub-concept|technique|tool|standard|metric\"\u003c/p\u003e\n\u003cp\u003eentities: [\"Primary Entity\"]\u003c/p\u003e\n\u003cp\u003ealiases: [\"alt name\"]\u003c/p\u003e\n\u003cp\u003erelated_concepts: [\"related-id\"]\u003c/p\u003e\n\u003ch1 id=\"taxonomy\"\u003eTaxonomy\u003c/h1\u003e\n\u003cp\u003econtent_type: \"guide|reference|comparison|definition|specification|checklist|tutorial|framework\"\u003c/p\u003e\n\u003cp\u003eprimary_audience: \"developer|seo-specialist|content-strategist|founder|marketer\"\u003c/p\u003e\n\u003cp\u003esecondary_audiences: [\"...\"]\u003c/p\u003e\n\u003cp\u003ereader_modes: [\"human\", \"ai-agent\"]\u003c/p\u003e\n\u003cp\u003edifficulty: \"beginner|intermediate|advanced\"\u003c/p\u003e\n\u003cp\u003eai_platforms: [\"chatgpt\", \"perplexity\", \"claude\", \"gemini\"]\u003c/p\u003e\n\u003ch1 id=\"seo\"\u003eSEO\u003c/h1\u003e\n\u003cp\u003edescription: \"120-160 char description.\"\u003c/p\u003e\n\u003cp\u003efocus_keyword: \"primary keyword\"\u003c/p\u003e\n\u003cp\u003esecondary_keywords: [\"k1\", \"k2\"]\u003c/p\u003e\n\u003ch1 id=\"ai-readiness\"\u003eAI readiness\u003c/h1\u003e\n\u003cp\u003ecanonical_question: \"What is X?\"\u003c/p\u003e\n\u003cp\u003ellm_summary: \"2-sentence factual summary.\"\u003c/p\u003e\n\u003cp\u003ecitation_readiness: \"reviewed|draft\"\u003c/p\u003e\n\u003ch1 id=\"lifecycle\"\u003eLifecycle\u003c/h1\u003e\n\u003cp\u003epublished_at: \"YYYY-MM-DD\"\u003c/p\u003e\n\u003cp\u003eupdated_at: \"YYYY-MM-DD\"\u003c/p\u003e\n\u003cp\u003elast_reviewed_at: \"YYYY-MM-DD\"\u003c/p\u003e\n\u003cp\u003ereview_cycle_days: 90\u003c/p\u003e\n\u003cp\u003eversion: \"1.0\"\u003c/p\u003e\n\u003ch1 id=\"relations\"\u003eRelations\u003c/h1\u003e\n\u003cp\u003eseries: \"series-id\"\u003c/p\u003e\n\u003cp\u003eseries_order: 1\u003c/p\u003e\n\u003cp\u003erelated_articles: [\"section/slug\"]\u003c/p\u003e\n\u003ch1 id=\"i18n-authorship\"\u003eI18n + authorship\u003c/h1\u003e\n\u003cp\u003elang: \"en\"\u003c/p\u003e\n\u003cp\u003etranslations: []\u003c/p\u003e\n\u003cp\u003eauthor: \"Author Name\"\u003c/p\u003e\n\u003cp\u003ereviewed_by: null\u003c/p\u003e\n\u003chr /\u003e\n\u003ch3 id=\"agent-md-tool-use-surface\"\u003eagent.md (tool-use surface)\u003c/h3\u003e\n\u003cp\u003eFor pages that document an API, CLI, or other tool, pair the human-readable page with a sibling agent.md file at the same path. agent.md strips marketing prose and gives an agent the deterministic signature it needs.\u003c/p\u003e\n\u003cp\u003eMinimal example:\u003c/p\u003e\n\u003cdiv class=\"code-block-wrapper\" style=\"position:relative\"\u003e\u003cbutton data-copy-snippet=\"true\" data-snippet-id=\"snippet-2\" data-snippet-lang=\"markdown\" class=\"copy-btn\" title=\"Copy\" style=\"position:absolute;top:8px;right:8px;padding:4px 10px;border-radius:4px;border:1px solid var(--border-default);background:var(--bg-surface);color:var(--text-secondary);font-size:12px;font-family:var(--font-mono);cursor:pointer;opacity:0.7;transition:opacity 0.2s;z-index:1\" onclick=\"navigator.clipboard.writeText(this.parentElement.querySelector('code').textContent);this.textContent='Copied!';setTimeout(()=\u003ethis.textContent='Copy',1500)\"\u003eCopy\u003c/button\u003e\u003cpre\u003e\u003ccode class=\"language-markdown\"\u003e# acme.payments.create_invoice\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003ch2 id=\"signature\"\u003eSignature\u003c/h2\u003e\n\u003cp\u003ePOST /v1/invoices\u003c/p\u003e\n\u003cp\u003eContent-Type: application/json\u003c/p\u003e\n\u003cp\u003eAuthorization: Bearer \u003ctoken\u003e\u003c/p\u003e\n\u003ch2 id=\"input\"\u003eInput\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003ecustomer_id (string, required): Acme customer ID, format cus_.\u003c/li\u003e\n\u003cli\u003eamount_cents (integer, required): Positive integer.\u003c/li\u003e\n\u003cli\u003ecurrency (string, required): ISO 4217 code.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"output\"\u003eOutput\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003einvoice_id (string): Created invoice ID, format inv_.\u003c/li\u003e\n\u003cli\u003estatus (string): One of open, paid, void.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"errors\"\u003eErrors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e400 invalid_currency — currency not in ISO 4217.\u003c/li\u003e\n\u003cli\u003e402 insufficient_funds — customer balance below amount_cents.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"idempotency\"\u003eIdempotency\u003c/h2\u003e\n\u003cp\u003ePass Idempotency-Key header. Same key returns the original response.\u003c/p\u003e\n\u003cp\u003eCursor, Claude Code, and similar coding agents are the primary consumers of agent.md-style surfaces today. Repository-root files (AGENTS.md, CLAUDE.md) follow the same pattern for code-context use.\u003c/p\u003e\n\u003ch3 id=\"content-body-structure\"\u003eContent body structure\u003c/h3\u003e\n\u003ch4 id=\"answer-first-pattern\"\u003eAnswer-first pattern\u003c/h4\u003e\n\u003cp\u003eThe first section directly answers the page's core question:\u003c/p\u003e\n\u003cdiv class=\"code-block-wrapper\" style=\"position:relative\"\u003e\u003cbutton data-copy-snippet=\"true\" data-snippet-id=\"snippet-3\" data-snippet-lang=\"markdown\" class=\"copy-btn\" title=\"Copy\" style=\"position:absolute;top:8px;right:8px;padding:4px 10px;border-radius:4px;border:1px solid var(--border-default);background:var(--bg-surface);color:var(--text-secondary);font-size:12px;font-family:var(--font-mono);cursor:pointer;opacity:0.7;transition:opacity 0.2s;z-index:1\" onclick=\"navigator.clipboard.writeText(this.parentElement.querySelector('code').textContent);this.textContent='Copied!';setTimeout(()=\u003ethis.textContent='Copy',1500)\"\u003eCopy\u003c/button\u003e\u003cpre\u003e\u003ccode class=\"language-markdown\"\u003e# [Title as Question or Topic]\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003e[Direct answer in 1-2 sentences. Complete and self-contained.]\u003c/p\u003e\n\u003cdiv class=\"ai-summary\"\u003e\u003cp\u003e[2-3 sentence expanded summary.]\u003c/p\u003e\u003c/div\u003e\n\u003ch2 id=\"tl-dr\"\u003eTL;DR\u003c/h2\u003e\n\u003cp\u003e[Snippet-ready 2-3 sentence summary.]\u003c/p\u003e\n\u003ch4 id=\"heading-hierarchy\"\u003eHeading hierarchy\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eH1: page title (exactly one)\u003c/li\u003e\n\u003cli\u003eH2: major sections\u003c/li\u003e\n\u003cli\u003eH3: sub-sections within H2\u003c/li\u003e\n\u003cli\u003eH4: rare; avoid deeper nesting\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4 id=\"required-structural-elements\"\u003eRequired structural elements\u003c/h4\u003e\n\u003cp\u003eEvery agent-ready page must include:\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003eOne H1 matching the frontmatter title.\u003c/li\u003e\n\u003cli\u003eOne AI summary blockquote immediately after the H1.\u003c/li\u003e\n\u003cli\u003eA TL;DR section (## TL;DR) with a 2-3 sentence snippet.\u003c/li\u003e\n\u003cli\u003eAt least one extractable definition, table, or step list in the body.\u003c/li\u003e\n\u003cli\u003eA FAQ section with 3-8 question-answer pairs phrased as natural questions.\u003c/li\u003e\n\u003cli\u003eA canonical URL in frontmatter and in \u003clink rel=\"canonical\"\u003e.\u003c/li\u003e\n\u003cli\u003eAt least one JSON-LD block describing the primary entity.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003ePages missing any of (1)-(7) are non-compliant and should not be marked citation_readiness: reviewed.\u003c/p\u003e\n\u003ch4 id=\"extractable-patterns\"\u003eExtractable patterns\u003c/h4\u003e\n\u003cp\u003eDefinition:\u003c/p\u003e\n\u003cdiv class=\"code-block-wrapper\" style=\"position:relative\"\u003e\u003cbutton data-copy-snippet=\"true\" data-snippet-id=\"snippet-4\" data-snippet-lang=\"markdown\" class=\"copy-btn\" title=\"Copy\" style=\"position:absolute;top:8px;right:8px;padding:4px 10px;border-radius:4px;border:1px solid var(--border-default);background:var(--bg-surface);color:var(--text-secondary);font-size:12px;font-family:var(--font-mono);cursor:pointer;opacity:0.7;transition:opacity 0.2s;z-index:1\" onclick=\"navigator.clipboard.writeText(this.parentElement.querySelector('code').textContent);this.textContent='Copied!';setTimeout(()=\u003ethis.textContent='Copy',1500)\"\u003eCopy\u003c/button\u003e\u003cpre\u003e\u003ccode class=\"language-markdown\"\u003e[Term] is [complete definition in one sentence].\n[Optional second sentence on significance.]\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eComparison table:\u003c/p\u003e\n\u003cdiv class=\"code-block-wrapper\" style=\"position:relative\"\u003e\u003cbutton data-copy-snippet=\"true\" data-snippet-id=\"snippet-5\" data-snippet-lang=\"markdown\" class=\"copy-btn\" title=\"Copy\" style=\"position:absolute;top:8px;right:8px;padding:4px 10px;border-radius:4px;border:1px solid var(--border-default);background:var(--bg-surface);color:var(--text-secondary);font-size:12px;font-family:var(--font-mono);cursor:pointer;opacity:0.7;transition:opacity 0.2s;z-index:1\" onclick=\"navigator.clipboard.writeText(this.parentElement.querySelector('code').textContent);this.textContent='Copied!';setTimeout(()=\u003ethis.textContent='Copy',1500)\"\u003eCopy\u003c/button\u003e\u003cpre\u003e\u003ccode class=\"language-markdown\"\u003e| Dimension | Option A | Option B |\n|---|---|---|\n| Aspect 1 | Value | Value |\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eStep-by-step:\u003c/p\u003e\n\u003cdiv class=\"code-block-wrapper\" style=\"position:relative\"\u003e\u003cbutton data-copy-snippet=\"true\" data-snippet-id=\"snippet-6\" data-snippet-lang=\"markdown\" class=\"copy-btn\" title=\"Copy\" style=\"position:absolute;top:8px;right:8px;padding:4px 10px;border-radius:4px;border:1px solid var(--border-default);background:var(--bg-surface);color:var(--text-secondary);font-size:12px;font-family:var(--font-mono);cursor:pointer;opacity:0.7;transition:opacity 0.2s;z-index:1\" onclick=\"navigator.clipboard.writeText(this.parentElement.querySelector('code').textContent);this.textContent='Copied!';setTimeout(()=\u003ethis.textContent='Copy',1500)\"\u003eCopy\u003c/button\u003e\u003cpre\u003e\u003ccode class=\"language-markdown\"\u003e1. **Step name** — Description.\n2. **Step name** — Description.\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eFAQ pair:\u003c/p\u003e\n\u003cdiv class=\"code-block-wrapper\" style=\"position:relative\"\u003e\u003cbutton data-copy-snippet=\"true\" data-snippet-id=\"snippet-7\" data-snippet-lang=\"markdown\" class=\"copy-btn\" title=\"Copy\" style=\"position:absolute;top:8px;right:8px;padding:4px 10px;border-radius:4px;border:1px solid var(--border-default);background:var(--bg-surface);color:var(--text-secondary);font-size:12px;font-family:var(--font-mono);cursor:pointer;opacity:0.7;transition:opacity 0.2s;z-index:1\" onclick=\"navigator.clipboard.writeText(this.parentElement.querySelector('code').textContent);this.textContent='Copied!';setTimeout(()=\u003ethis.textContent='Copy',1500)\"\u003eCopy\u003c/button\u003e\u003cpre\u003e\u003ccode class=\"language-markdown\"\u003e### Question in natural language?\n[Direct answer. No preamble.]\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003ch3 id=\"json-ld-structured-data\"\u003eJSON-LD structured data\u003c/h3\u003e\n\u003cp\u003eEvery page should include at least one JSON-LD block.\u003c/p\u003e\n\u003cp\u003eArticle:\u003c/p\u003e\n\u003cdiv class=\"code-block-wrapper\" style=\"position:relative\"\u003e\u003cbutton data-copy-snippet=\"true\" data-snippet-id=\"snippet-8\" data-snippet-lang=\"json\" class=\"copy-btn\" title=\"Copy\" style=\"position:absolute;top:8px;right:8px;padding:4px 10px;border-radius:4px;border:1px solid var(--border-default);background:var(--bg-surface);color:var(--text-secondary);font-size:12px;font-family:var(--font-mono);cursor:pointer;opacity:0.7;transition:opacity 0.2s;z-index:1\" onclick=\"navigator.clipboard.writeText(this.parentElement.querySelector('code').textContent);this.textContent='Copied!';setTimeout(()=\u003ethis.textContent='Copy',1500)\"\u003eCopy\u003c/button\u003e\u003cpre\u003e\u003ccode class=\"language-json\"\u003e{\n \"@context\": \"https://schema.org\",\n \"@type\": \"TechArticle\",\n \"headline\": \"Page Title\",\n \"description\": \"Page description\",\n \"author\": { \"@type\": \"Organization\", \"name\": \"Site Name\" },\n \"datePublished\": \"2025-01-01\",\n \"dateModified\": \"2026-05-01\"\n}\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eFAQ:\u003c/p\u003e\n\u003cdiv class=\"code-block-wrapper\" style=\"position:relative\"\u003e\u003cbutton data-copy-snippet=\"true\" data-snippet-id=\"snippet-9\" data-snippet-lang=\"json\" class=\"copy-btn\" title=\"Copy\" style=\"position:absolute;top:8px;right:8px;padding:4px 10px;border-radius:4px;border:1px solid var(--border-default);background:var(--bg-surface);color:var(--text-secondary);font-size:12px;font-family:var(--font-mono);cursor:pointer;opacity:0.7;transition:opacity 0.2s;z-index:1\" onclick=\"navigator.clipboard.writeText(this.parentElement.querySelector('code').textContent);this.textContent='Copied!';setTimeout(()=\u003ethis.textContent='Copy',1500)\"\u003eCopy\u003c/button\u003e\u003cpre\u003e\u003ccode class=\"language-json\"\u003e{\n \"@context\": \"https://schema.org\",\n \"@type\": \"FAQPage\",\n \"mainEntity\": [\n {\n \"@type\": \"Question\",\n \"name\": \"Question text\",\n \"acceptedAnswer\": { \"@type\": \"Answer\", \"text\": \"Answer text\" }\n }\n ]\n}\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eFull reference: Structured Data for AI Search.\u003c/p\u003e\n\u003ch2 id=\"layer-3-attribution\"\u003eLayer 3: Attribution\u003c/h2\u003e\n\u003ch3 id=\"ai-txt\"\u003eai.txt\u003c/h3\u003e\n\u003cp\u003eDefine how AI agents should attribute your content:\u003c/p\u003e\n\u003ch1 id=\"ai-agent-access-policy\"\u003eAI Agent Access Policy\u003c/h1\u003e\n\u003cp\u003eUser-agent: *\u003c/p\u003e\n\u003cp\u003eAllow: /\u003c/p\u003e\n\u003cp\u003eAttribution-required: yes\u003c/p\u003e\n\u003cp\u003eSource-name: Your Site Name\u003c/p\u003e\n\u003cp\u003eSource-url: https://yoursite.com\u003c/p\u003e\n\u003cp\u003eCitation-format: \"[Title] — [Source-name] (Source-url/path)\"\u003c/p\u003e\n\u003cp\u003eFull specification: ai.txt Starter Template.\u003c/p\u003e\n\u003ch3 id=\"canonical-urls\"\u003eCanonical URLs\u003c/h3\u003e\n\u003cp\u003eEvery page must have exactly one canonical URL:\u003c/p\u003e\n\u003cdiv class=\"code-block-wrapper\" style=\"position:relative\"\u003e\u003cbutton data-copy-snippet=\"true\" data-snippet-id=\"snippet-10\" data-snippet-lang=\"html\" class=\"copy-btn\" title=\"Copy\" style=\"position:absolute;top:8px;right:8px;padding:4px 10px;border-radius:4px;border:1px solid var(--border-default);background:var(--bg-surface);color:var(--text-secondary);font-size:12px;font-family:var(--font-mono);cursor:pointer;opacity:0.7;transition:opacity 0.2s;z-index:1\" onclick=\"navigator.clipboard.writeText(this.parentElement.querySelector('code').textContent);this.textContent='Copied!';setTimeout(()=\u003ethis.textContent='Copy',1500)\"\u003eCopy\u003c/button\u003e\u003cpre\u003e\u003ccode class=\"language-html\"\u003e\u0026lt;link rel=\"canonical\" href=\"https://yoursite.com/section/slug\" /\u0026gt;\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp\u003eAgents should use this URL for attribution regardless of how they discovered the page. Mirror sites, syndicated copies, and AMP variants must point back to the canonical.\u003c/p\u003e\n\u003ch3 id=\"source-metadata\"\u003eSource metadata\u003c/h3\u003e\n\u003cp\u003eMark organization-level information once with Organization schema (logo, sameAs, contact) so agents can resolve \"who owns this content\" without parsing every page individually.\u003c/p\u003e\n\u003ch2 id=\"implementation-patterns-by-platform\"\u003eImplementation patterns by platform\u003c/h2\u003e\n\u003cp\u003eDifferent agents weight signals differently. The patterns below summarize observed behavior; verify against each platform's current docs.\u003c/p\u003e\n\u003ch3 id=\"chatgpt-openai-search-and-atlas-browser\"\u003eChatGPT (OpenAI) — Search and Atlas browser\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eHonors robots.txt for GPTBot, OAI-SearchBot, and ChatGPT-User.\u003c/li\u003e\n\u003cli\u003eStrongly favors pages with clear \u003ctitle\u003e, meta description, and Article / TechArticle JSON-LD.\u003c/li\u003e\n\u003cli\u003eAtlas (browser agent) consumes the rendered DOM, so client-side-only content is parseable but slower than server-rendered HTML.\u003c/li\u003e\n\u003cli\u003eCites Source-name from ai.txt when present; otherwise falls back to the domain.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3 id=\"perplexity-answer-engine-and-comet-browser\"\u003ePerplexity — Answer engine and Comet browser\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCrawls aggressively via PerplexityBot; honors per-page noindex and robots.txt.\u003c/li\u003e\n\u003cli\u003eQuotes short extractive snippets and links back; benefits most from concise answer-first openers and FAQ sections.\u003c/li\u003e\n\u003cli\u003eComet (browser agent) follows links the user is on; well-structured headings let it summarize without re-fetching.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3 id=\"claude-anthropic-chat-computer-use-claude-code\"\u003eClaude (Anthropic) — Chat, Computer Use, Claude Code\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUses ClaudeBot and Claude-Web for retrieval; respects robots.txt.\u003c/li\u003e\n\u003cli\u003eComputer Use parses page screenshots plus accessibility trees — semantic HTML (proper headings, labeled inputs, alt text) materially improves agent reliability.\u003c/li\u003e\n\u003cli\u003eClaude Code reads repo-local agent.md / AGENTS.md / CLAUDE.md files; mirror your public spec into the repo for code-context use.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3 id=\"gemini-google-search-ai-overviews-gemini-live\"\u003eGemini (Google) — Search, AI Overviews, Gemini Live\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUses Googlebot for search and Google-Extended for generative training and grounding opt-in.\u003c/li\u003e\n\u003cli\u003eHeavily weights structured data: Article, FAQPage, HowTo, Product, and BreadcrumbList.\u003c/li\u003e\n\u003cli\u003eAI Overviews favor pages already ranking organically, so traditional SEO hygiene compounds with agent readiness.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3 id=\"cursor-and-other-coding-agents\"\u003eCursor and other coding agents\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRead AGENTS.md, agent.md, and project-root README files first.\u003c/li\u003e\n\u003cli\u003ePrefer deterministic input/output examples and explicit error taxonomies over prose.\u003c/li\u003e\n\u003cli\u003ePages that document libraries should publish a sibling llms-full.txt containing the full Markdown body for offline indexing.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"validation\"\u003eValidation\u003c/h2\u003e\n\u003cp\u003eValidate compliance with the same tools agents (or their pipelines) use:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSchema.org Validator\u003c/li\u003e\n\u003cli\u003eGoogle Rich Results Test\u003c/li\u003e\n\u003cli\u003ellms.txt validator reference implementations\u003c/li\u003e\n\u003cli\u003ecurl -A \"GPTBot\" -I https://yoursite.com/page to confirm crawler access\u003c/li\u003e\n\u003cli\u003ecurl -A \"ClaudeBot\" -I and curl -A \"PerplexityBot\" -I for the other major bots\u003c/li\u003e\n\u003cli\u003eA dry-run \"ask the chatbot\" check: paste the URL into ChatGPT, Perplexity, and Claude and verify the summary matches the canonical content\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"compliance-checklist\"\u003eCompliance checklist\u003c/h2\u003e\n\u003ch3 id=\"discovery\"\u003eDiscovery\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[ ] /llms.txt exists and is current\u003c/li\u003e\n\u003cli\u003e[ ] /.well-known/agents.json published if the site exposes tools/APIs\u003c/li\u003e\n\u003cli\u003e[ ] sitemap.xml includes all content pages with lastmod\u003c/li\u003e\n\u003cli\u003e[ ] robots.txt allows the major agent crawlers listed above\u003c/li\u003e\n\u003cli\u003e[ ] /ai.txt defines access policy\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3 id=\"parsing\"\u003eParsing\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[ ] Every page has full frontmatter (~30-field schema)\u003c/li\u003e\n\u003cli\u003e[ ] Every page has answer-first opening\u003c/li\u003e\n\u003cli\u003e[ ] Every page has a single AI summary blockquote and a TL;DR section\u003c/li\u003e\n\u003cli\u003e[ ] Every page has at least one JSON-LD block describing the primary entity\u003c/li\u003e\n\u003cli\u003e[ ] Heading hierarchy is semantic (one H1, then H2 → H3)\u003c/li\u003e\n\u003cli\u003e[ ] Tables, lists, and code blocks use proper Markdown / HTML markup\u003c/li\u003e\n\u003cli\u003e[ ] Tool / API pages have a sibling agent.md\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3 id=\"attribution\"\u003eAttribution\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[ ] \u003clink rel=\"canonical\"\u003e is set on every page\u003c/li\u003e\n\u003cli\u003e[ ] ai.txt specifies attribution requirements and citation format\u003c/li\u003e\n\u003cli\u003e[ ] Author / Organization metadata is included\u003c/li\u003e\n\u003cli\u003e[ ] published_at and updated_at are accurate\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"common-mistakes\"\u003eCommon mistakes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMixing legacy and current frontmatter keys. Drop date_published, date_updated, ai_summary, and schema_type; use published_at, updated_at, llm_summary, and concept_type consistently.\u003c/li\u003e\n\u003cli\u003eTwo or more \"AI summary\" blocks per page. Dilutes which sentence agents extract; keep exactly one immediately after the H1.\u003c/li\u003e\n\u003cli\u003eLeaving JSON-LD as the only structured signal. Agents cross-check JSON-LD against the rendered HTML; mismatches cause structured data to be ignored.\u003c/li\u003e\n\u003cli\u003eDisallowing all bots in robots.txt \"to be safe\". This blocks citations and grounding; allow the major agent UAs explicitly and use per-path rules for sensitive sections.\u003c/li\u003e\n\u003cli\u003eTreating llms.txt as a marketing brochure. It is an index; keep it terse and link-heavy.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"faq\"\u003eFAQ\u003c/h2\u003e\n\u003ch3 id=\"is-this-specification-an-official-standard\"\u003eIs this specification an official standard?\u003c/h3\u003e\n\u003cp\u003eNo. It is a practical specification based on observable AI system behavior and emerging community conventions. JSON-LD, semantic HTML, and sitemaps are well-established standards; llms.txt, ai.txt, and agents.json are proposals with growing adoption.\u003c/p\u003e\n\u003ch3 id=\"do-all-ai-agents-follow-these-conventions\"\u003eDo all AI agents follow these conventions?\u003c/h3\u003e\n\u003cp\u003eNot uniformly. JSON-LD and structured HTML are recognized by every major AI system. llms.txt and ai.txt are emerging — major models do not yet officially commit to consuming them, but they are low-cost to publish and forward-compatible.\u003c/p\u003e\n\u003ch3 id=\"how-often-should-i-update-my-compliance\"\u003eHow often should I update my compliance?\u003c/h3\u003e\n\u003cp\u003eReview quarterly. Crawler user agents, structured-data types, and emerging conventions shift fast. Core HTML and schema are stable, but discovery and attribution mechanisms continue to evolve.\u003c/p\u003e\n\u003ch3 id=\"is-the-frontmatter-schema-required-for-html-only-pages\"\u003eIs the frontmatter schema required for HTML-only pages?\u003c/h3\u003e\n\u003cp\u003eThe frontmatter schema is the canonical metadata source — it can be expressed equivalently in HTML \u003cmeta\u003e tags or JSON-LD. The exact transport matters less than completeness and accuracy. Static-site generators like Next.js, Astro, and Hugo make YAML frontmatter the easiest path; for hand-authored HTML, mirror the same fields into JSON-LD Article and Organization blocks.\u003c/p\u003e\n\u003ch3 id=\"what-is-the-bare-minimum-subset\"\u003eWhat is the bare-minimum subset?\u003c/h3\u003e\n\u003cp\u003eIf you can only do four things: (1) one canonical URL per page, (2) JSON-LD for the primary entity, (3) llms.txt listing your top pages, (4) robots.txt allowing GPTBot, ClaudeBot, and PerplexityBot. This subset captures most of the citation upside.\u003c/p\u003e\n\u003ch3 id=\"how-does-this-differ-from-traditional-seo\"\u003eHow does this differ from traditional SEO?\u003c/h3\u003e\n\u003cp\u003eTraditional SEO optimizes for ranking in a SERP that a human reads. Agent content optimization additionally optimizes for extraction (a non-human consumer copying a sentence) and attribution (that consumer linking back). The two overlap heavily — a well-structured SEO page is already most of the way to agent-ready — but agent readiness adds explicit machine-readable layers (frontmatter, JSON-LD, llms.txt, ai.txt).\u003c/p\u003e\n\u003ch3 id=\"do-i-need-a-separate-agent-md-for-every-page\"\u003eDo I need a separate agent.md for every page?\u003c/h3\u003e\n\u003cp\u003eNo. Pair agent.md only with pages that document an actionable surface: APIs, CLIs, SDKs, configuration files. Pure narrative or conceptual pages do not need one — the standard frontmatter and JSON-LD are sufficient.\u003c/p\u003e\n\u003ch3 id=\"will-following-this-spec-guarantee-citations\"\u003eWill following this spec guarantee citations?\u003c/h3\u003e\n\u003cp\u003eNo. It maximizes eligibility — agents still rank by topical authority, freshness, and source reputation. Treat the spec as removing avoidable failure modes, not as a ranking lever.\u003c/p\u003e"])</script><script>self.__next_f.push([1,"23:[\"$\",\"div\",null,{\"style\":{\"display\":\"grid\",\"gridTemplateColumns\":\"1fr min(var(--content-max-width), 100%) 1fr\",\"gap\":0,\"maxWidth\":1200,\"margin\":\"0 auto\",\"padding\":\"48px 24px 80px\"},\"children\":[[\"$\",\"div\",null,{}],[\"$\",\"article\",null,{\"children\":[[\"$\",\"h1\",null,{\"style\":{\"fontFamily\":\"var(--font-display)\",\"fontSize\":\"clamp(1.75rem, 4vw, 2.5rem)\",\"fontWeight\":500,\"lineHeight\":1.2,\"color\":\"var(--text-heading)\",\"marginBottom\":16},\"children\":\"AI Agent Content Specification\"}],[\"$\",\"div\",null,{\"className\":\"metadata-bar\",\"style\":{\"marginBottom\":24},\"children\":[[\"$\",\"span\",null,{\"className\":\"metadata-bar__tag metadata-bar__tag--section\",\"children\":\"ai-agents\"}],[\"$\",\"span\",null,{\"className\":\"metadata-bar__tag\",\"children\":\"specification\"}],[\"$\",\"span\",null,{\"className\":\"metadata-bar__tag\",\"children\":\"advanced\"}],[\"$\",\"span\",null,{\"className\":\"metadata-bar__dot\"}],[\"$\",\"span\",null,{\"children\":\"12 min read\"}],[\"$\",\"span\",null,{\"className\":\"metadata-bar__dot\"}],[\"$\",\"span\",null,{\"children\":\"2,307 words\"}],[[\"$\",\"span\",null,{\"className\":\"metadata-bar__dot\"}],[\"$\",\"span\",null,{\"children\":\"Updated May 2026\"}]]]}],[\"$\",\"$L27\",null,{\"title\":\"AI Agent Content Specification\",\"url\":\"https://geodocs.dev/ai-agents/content-spec\"}],[\"$\",\"$L28\",null,{\"title\":\"AI Agent Content Specification\",\"url\":\"https://geodocs.dev/ai-agents/content-spec\",\"section\":\"ai-agents\",\"slug\":\"content-spec\"}],[\"$\",\"div\",null,{\"className\":\"prose\",\"dangerouslySetInnerHTML\":{\"__html\":\"$29\"}}],\"$L2a\",false]}],\"$L2b\"]}]\n"])</script><script>self.__next_f.push([1,"24:[\"$\",\"style\",null,{\"children\":\"\\n @media (max-width: 1024px) {\\n .toc-sidebar { display: none !important; }\\n }\\n @media (min-width: 1025px) {\\n article {\\n /* override grid for 3-col with TOC */\\n }\\n }\\n .article-tag-link:hover {\\n border-color: var(--color-dark-green) !important;\\n color: var(--text-primary) !important;\\n background: rgba(0, 237, 100, 0.06) !important;\\n }\\n \"}]\n25:[\"$\",\"$L2c\",null,{\"dict\":\"$8:0:props:dict:newsletter\"}]\n"])</script><script>self.__next_f.push([1,"26:[\"$\",\"footer\",null,{\"style\":{\"background\":\"var(--color-forest-black)\",\"borderTop\":\"1px solid var(--color-teal-gray)\",\"padding\":\"64px 24px 32px\"},\"children\":[[\"$\",\"div\",null,{\"style\":{\"maxWidth\":1200,\"margin\":\"0 auto\"},\"children\":[[\"$\",\"div\",null,{\"style\":{\"display\":\"grid\",\"gridTemplateColumns\":\"repeat(auto-fit, minmax(180px, 1fr))\",\"gap\":48,\"marginBottom\":48},\"children\":[[\"$\",\"div\",null,{\"children\":[[\"$\",\"div\",null,{\"style\":{\"marginBottom\":16},\"children\":[\"$\",\"$L1b\",null,{\"src\":\"/geodocs-logo-dark.svg\",\"alt\":\"Geodocs.dev\",\"width\":140,\"height\":32,\"style\":{\"height\":24,\"width\":\"auto\"}}]}],[\"$\",\"p\",null,{\"style\":{\"fontSize\":13,\"color\":\"var(--color-cool-gray)\",\"lineHeight\":1.6,\"maxWidth\":220},\"children\":\"Structured knowledge for AI search visibility. The canonical reference for GEO, AEO, and AI search optimization.\"}]]}],[[\"$\",\"div\",\"Learn\",{\"children\":[[\"$\",\"h4\",null,{\"style\":{\"fontFamily\":\"var(--font-mono)\",\"fontSize\":11,\"fontWeight\":600,\"textTransform\":\"uppercase\",\"letterSpacing\":2,\"color\":\"var(--color-mongodb-green)\",\"marginBottom\":16},\"children\":\"Learn\"}],[\"$\",\"ul\",null,{\"style\":{\"listStyle\":\"none\",\"display\":\"flex\",\"flexDirection\":\"column\",\"gap\":10},\"children\":[[\"$\",\"li\",\"/geo/what-is-geo\",{\"children\":[\"$\",\"$L1a\",null,{\"href\":\"/geo/what-is-geo\",\"className\":\"footer-link\",\"children\":\"What Is GEO?\"}]}],[\"$\",\"li\",\"/aeo/what-is-aeo\",{\"children\":[\"$\",\"$L1a\",null,{\"href\":\"/aeo/what-is-aeo\",\"className\":\"footer-link\",\"children\":\"What Is AEO?\"}]}],[\"$\",\"li\",\"/geo/geo-vs-seo\",{\"children\":[\"$\",\"$L1a\",null,{\"href\":\"/geo/geo-vs-seo\",\"className\":\"footer-link\",\"children\":\"GEO vs SEO\"}]}],[\"$\",\"li\",\"/reference/geo-aeo-glossary\",{\"children\":[\"$\",\"$L1a\",null,{\"href\":\"/reference/geo-aeo-glossary\",\"className\":\"footer-link\",\"children\":\"GEO Glossary\"}]}]]}]]}],[\"$\",\"div\",\"Build\",{\"children\":[[\"$\",\"h4\",null,{\"style\":{\"fontFamily\":\"var(--font-mono)\",\"fontSize\":11,\"fontWeight\":600,\"textTransform\":\"uppercase\",\"letterSpacing\":2,\"color\":\"var(--color-mongodb-green)\",\"marginBottom\":16},\"children\":\"Build\"}],[\"$\",\"ul\",null,{\"style\":{\"listStyle\":\"none\",\"display\":\"flex\",\"flexDirection\":\"column\",\"gap\":10},\"children\":[[\"$\",\"li\",\"/technical/llms-txt\",{\"children\":[\"$\",\"$L1a\",null,{\"href\":\"/technical/llms-txt\",\"className\":\"footer-link\",\"children\":\"llms.txt Reference\"}]}],[\"$\",\"li\",\"/technical/how-to-create-llms-txt\",{\"children\":[\"$\",\"$L1a\",null,{\"href\":\"/technical/how-to-create-llms-txt\",\"className\":\"footer-link\",\"children\":\"Create llms.txt\"}]}],[\"$\",\"li\",\"/technical/structured-data-for-ai-search\",{\"children\":[\"$\",\"$L1a\",null,{\"href\":\"/technical/structured-data-for-ai-search\",\"className\":\"footer-link\",\"children\":\"Structured Data\"}]}],[\"$\",\"li\",\"/technical/ai-txt\",{\"children\":[\"$\",\"$L1a\",null,{\"href\":\"/technical/ai-txt\",\"className\":\"footer-link\",\"children\":\"ai.txt Reference\"}]}]]}]]}],[\"$\",\"div\",\"Strategy\",{\"children\":[[\"$\",\"h4\",null,{\"style\":{\"fontFamily\":\"var(--font-mono)\",\"fontSize\":11,\"fontWeight\":600,\"textTransform\":\"uppercase\",\"letterSpacing\":2,\"color\":\"var(--color-mongodb-green)\",\"marginBottom\":16},\"children\":\"Strategy\"}],[\"$\",\"ul\",null,{\"style\":{\"listStyle\":\"none\",\"display\":\"flex\",\"flexDirection\":\"column\",\"gap\":10},\"children\":[[\"$\",\"li\",\"/strategy/ai-visibility-measurement\",{\"children\":[\"$\",\"$L1a\",null,{\"href\":\"/strategy/ai-visibility-measurement\",\"className\":\"footer-link\",\"children\":\"AI Visibility\"}]}],[\"$\",\"li\",\"/strategy/geo-content-strategy\",{\"children\":[\"$\",\"$L1a\",null,{\"href\":\"/strategy/geo-content-strategy\",\"className\":\"footer-link\",\"children\":\"Content Strategy\"}]}],[\"$\",\"li\",\"/strategy/geo-roi-framework\",{\"children\":[\"$\",\"$L1a\",null,{\"href\":\"/strategy/geo-roi-framework\",\"className\":\"footer-link\",\"children\":\"GEO ROI\"}]}],[\"$\",\"li\",\"/aeo/aeo-content-checklist\",{\"children\":[\"$\",\"$L1a\",null,{\"href\":\"/aeo/aeo-content-checklist\",\"className\":\"footer-link\",\"children\":\"AEO Checklist\"}]}]]}]]}],[\"$\",\"div\",\"Resources\",{\"children\":[[\"$\",\"h4\",null,{\"style\":{\"fontFamily\":\"var(--font-mono)\",\"fontSize\":11,\"fontWeight\":600,\"textTransform\":\"uppercase\",\"letterSpacing\":2,\"color\":\"var(--color-mongodb-green)\",\"marginBottom\":16},\"children\":\"Resources\"}],[\"$\",\"ul\",null,{\"style\":{\"listStyle\":\"none\",\"display\":\"flex\",\"flexDirection\":\"column\",\"gap\":10},\"children\":[[\"$\",\"li\",\"https://github.com/Geodocs-dev\",{\"children\":[\"$\",\"$L1a\",null,{\"href\":\"https://github.com/Geodocs-dev\",\"className\":\"footer-link\",\"children\":\"GitHub\"}]}],[\"$\",\"li\",\"/contact\",{\"children\":[\"$\",\"$L1a\",null,{\"href\":\"/contact\",\"className\":\"footer-link\",\"children\":\"Contact\"}]}],[\"$\",\"li\",\"/tags\",{\"children\":[\"$\",\"$L1a\",null,{\"href\":\"/tags\",\"className\":\"footer-link\",\"children\":\"Tags\"}]}],[\"$\",\"li\",\"/sitemap.xml\",{\"children\":[\"$\",\"$L1a\",null,{\"href\":\"/sitemap.xml\",\"className\":\"footer-link\",\"children\":\"Sitemap\"}]}],\"$L2d\",\"$L2e\"]}]]}]]]}],\"$L2f\"]}],\"$L30\"]}]\n"])</script><script>self.__next_f.push([1,"2a:[\"$\",\"div\",null,{\"style\":{\"marginTop\":64},\"children\":[[\"$\",\"h2\",null,{\"style\":{\"fontSize\":18,\"fontWeight\":600,\"marginBottom\":16,\"paddingBottom\":8,\"borderBottom\":\"1px solid var(--border-default)\"},\"children\":\"Related Articles\"}],[\"$\",\"div\",null,{\"style\":{\"display\":\"grid\",\"gridTemplateColumns\":\"repeat(auto-fill, minmax(280px, 1fr))\",\"gap\":16},\"children\":[[\"$\",\"$L1a\",\"ai-agent-optimization\",{\"href\":\"/ai-agents/ai-agent-optimization\",\"style\":{\"textDecoration\":\"none\"},\"data-related-article\":\"ai-agent-optimization\",\"data-related-position\":1,\"children\":[\"$\",\"div\",null,{\"className\":\"card\",\"children\":[[\"$\",\"span\",null,{\"className\":\"badge badge-green\",\"style\":{\"marginBottom\":8},\"children\":\"guide\"}],[\"$\",\"h3\",null,{\"style\":{\"fontSize\":15,\"fontWeight\":600,\"color\":\"var(--text-heading)\",\"marginBottom\":4},\"children\":\"AI Agent Optimization: Technical Guide\"}],[\"$\",\"p\",null,{\"style\":{\"fontSize\":13,\"color\":\"var(--text-secondary)\",\"lineHeight\":1.5},\"children\":\"Technical implementation guide for optimizing websites for AI agent discovery, evaluation, and interaction. Covers discovery, understanding, and action layers.\"}]]}]}],[\"$\",\"$L1a\",\"ai-txt-template\",{\"href\":\"/technical/ai-txt-template\",\"style\":{\"textDecoration\":\"none\"},\"data-related-article\":\"ai-txt-template\",\"data-related-position\":2,\"children\":[\"$\",\"div\",null,{\"className\":\"card\",\"children\":[[\"$\",\"span\",null,{\"className\":\"badge badge-green\",\"style\":{\"marginBottom\":8},\"children\":\"reference\"}],[\"$\",\"h3\",null,{\"style\":{\"fontSize\":15,\"fontWeight\":600,\"color\":\"var(--text-heading)\",\"marginBottom\":4},\"children\":\"ai.txt Starter Template: Copy-Ready AI Access Policy File\"}],[\"$\",\"p\",null,{\"style\":{\"fontSize\":13,\"color\":\"var(--text-secondary)\",\"lineHeight\":1.5},\"children\":\"A copy-ready ai.txt starter template for declaring AI crawler access policies, attribution requirements, and content licensing terms.\"}]]}]}],[\"$\",\"$L1a\",\"how-to-create-llms-txt\",{\"href\":\"/technical/how-to-create-llms-txt\",\"style\":{\"textDecoration\":\"none\"},\"data-related-article\":\"how-to-create-llms-txt\",\"data-related-position\":3,\"children\":[\"$\",\"div\",null,{\"className\":\"card\",\"children\":[[\"$\",\"span\",null,{\"className\":\"badge badge-green\",\"style\":{\"marginBottom\":8},\"children\":\"guide\"}],[\"$\",\"h3\",null,{\"style\":{\"fontSize\":15,\"fontWeight\":600,\"color\":\"var(--text-heading)\",\"marginBottom\":4},\"children\":\"How to Create llms.txt: Step-by-Step Tutorial for AI Search\"}],[\"$\",\"p\",null,{\"style\":{\"fontSize\":13,\"color\":\"var(--text-secondary)\",\"lineHeight\":1.5},\"children\":\"Step-by-step tutorial for creating, deploying, and validating an llms.txt file so AI systems and LLMs can discover your site's most important content.\"}]]}]}]]}]]}]\n"])</script><script>self.__next_f.push([1,"2b:[\"$\",\"div\",null,{\"style\":{\"paddingLeft\":40},\"className\":\"toc-sidebar\",\"children\":[\"$\",\"nav\",null,{\"style\":{\"position\":\"sticky\",\"top\":88,\"fontSize\":13,\"lineHeight\":1.6,\"maxHeight\":\"calc(100vh - 100px)\",\"overflowY\":\"auto\"},\"children\":[[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"var(--font-mono)\",\"fontSize\":10,\"fontWeight\":600,\"textTransform\":\"uppercase\",\"letterSpacing\":2,\"color\":\"var(--color-cool-gray)\",\"marginBottom\":12},\"children\":\"On this page\"}],[[\"$\",\"a\",\"tl-dr\",{\"href\":\"#tl-dr\",\"style\":{\"display\":\"block\",\"padding\":\"4px 0\",\"paddingLeft\":0,\"color\":\"var(--text-secondary)\",\"textDecoration\":\"none\",\"transition\":\"color 0.15s ease\",\"borderLeft\":\"none\"},\"children\":\"TL;DR\"}],[\"$\",\"a\",\"specification-overview\",{\"href\":\"#specification-overview\",\"style\":{\"display\":\"block\",\"padding\":\"4px 0\",\"paddingLeft\":0,\"color\":\"var(--text-secondary)\",\"textDecoration\":\"none\",\"transition\":\"color 0.15s ease\",\"borderLeft\":\"none\"},\"children\":\"Specification overview\"}],[\"$\",\"a\",\"layer-1-discovery\",{\"href\":\"#layer-1-discovery\",\"style\":{\"display\":\"block\",\"padding\":\"4px 0\",\"paddingLeft\":0,\"color\":\"var(--text-secondary)\",\"textDecoration\":\"none\",\"transition\":\"color 0.15s ease\",\"borderLeft\":\"none\"},\"children\":\"Layer 1: Discovery\"}],[\"$\",\"a\",\"llms-txt\",{\"href\":\"#llms-txt\",\"style\":{\"display\":\"block\",\"padding\":\"4px 0\",\"paddingLeft\":16,\"color\":\"var(--text-secondary)\",\"textDecoration\":\"none\",\"transition\":\"color 0.15s ease\",\"borderLeft\":\"1px solid var(--border-default)\"},\"children\":\"llms.txt\"}],[\"$\",\"a\",\"core-concepts\",{\"href\":\"#core-concepts\",\"style\":{\"display\":\"block\",\"padding\":\"4px 0\",\"paddingLeft\":0,\"color\":\"var(--text-secondary)\",\"textDecoration\":\"none\",\"transition\":\"color 0.15s ease\",\"borderLeft\":\"none\"},\"children\":\"Core concepts\"}],[\"$\",\"a\",\"api\",{\"href\":\"#api\",\"style\":{\"display\":\"block\",\"padding\":\"4px 0\",\"paddingLeft\":0,\"color\":\"var(--text-secondary)\",\"textDecoration\":\"none\",\"transition\":\"color 0.15s ease\",\"borderLeft\":\"none\"},\"children\":\"API\"}],[\"$\",\"a\",\"agents-json-proposed\",{\"href\":\"#agents-json-proposed\",\"style\":{\"display\":\"block\",\"padding\":\"4px 0\",\"paddingLeft\":16,\"color\":\"var(--text-secondary)\",\"textDecoration\":\"none\",\"transition\":\"color 0.15s ease\",\"borderLeft\":\"1px solid var(--border-default)\"},\"children\":\"agents.json (proposed)\"}],[\"$\",\"a\",\"sitemap-for-ai\",{\"href\":\"#sitemap-for-ai\",\"style\":{\"display\":\"block\",\"padding\":\"4px 0\",\"paddingLeft\":16,\"color\":\"var(--text-secondary)\",\"textDecoration\":\"none\",\"transition\":\"color 0.15s ease\",\"borderLeft\":\"1px solid var(--border-default)\"},\"children\":\"Sitemap for AI\"}],[\"$\",\"a\",\"robots-txt-for-ai-crawlers\",{\"href\":\"#robots-txt-for-ai-crawlers\",\"style\":{\"display\":\"block\",\"padding\":\"4px 0\",\"paddingLeft\":16,\"color\":\"var(--text-secondary)\",\"textDecoration\":\"none\",\"transition\":\"color 0.15s ease\",\"borderLeft\":\"1px solid var(--border-default)\"},\"children\":\"robots.txt for AI crawlers\"}],[\"$\",\"a\",\"layer-2-parsing\",{\"href\":\"#layer-2-parsing\",\"style\":{\"display\":\"block\",\"padding\":\"4px 0\",\"paddingLeft\":0,\"color\":\"var(--text-secondary)\",\"textDecoration\":\"none\",\"transition\":\"color 0.15s ease\",\"borderLeft\":\"none\"},\"children\":\"Layer 2: Parsing\"}],[\"$\",\"a\",\"frontmatter-metadata-schema\",{\"href\":\"#frontmatter-metadata-schema\",\"style\":{\"display\":\"block\",\"padding\":\"4px 0\",\"paddingLeft\":16,\"color\":\"var(--text-secondary)\",\"textDecoration\":\"none\",\"transition\":\"color 0.15s ease\",\"borderLeft\":\"1px solid var(--border-default)\"},\"children\":\"Frontmatter metadata schema\"}],[\"$\",\"a\",\"agent-md-tool-use-surface\",{\"href\":\"#agent-md-tool-use-surface\",\"style\":{\"display\":\"block\",\"padding\":\"4px 0\",\"paddingLeft\":16,\"color\":\"var(--text-secondary)\",\"textDecoration\":\"none\",\"transition\":\"color 0.15s ease\",\"borderLeft\":\"1px solid var(--border-default)\"},\"children\":\"agent.md (tool-use surface)\"}],[\"$\",\"a\",\"signature\",{\"href\":\"#signature\",\"style\":{\"display\":\"block\",\"padding\":\"4px 0\",\"paddingLeft\":0,\"color\":\"var(--text-secondary)\",\"textDecoration\":\"none\",\"transition\":\"color 0.15s ease\",\"borderLeft\":\"none\"},\"children\":\"Signature\"}],[\"$\",\"a\",\"input\",{\"href\":\"#input\",\"style\":{\"display\":\"block\",\"padding\":\"4px 0\",\"paddingLeft\":0,\"color\":\"var(--text-secondary)\",\"textDecoration\":\"none\",\"transition\":\"color 0.15s ease\",\"borderLeft\":\"none\"},\"children\":\"Input\"}],[\"$\",\"a\",\"output\",{\"href\":\"#output\",\"style\":{\"display\":\"block\",\"padding\":\"4px 0\",\"paddingLeft\":0,\"color\":\"var(--text-secondary)\",\"textDecoration\":\"none\",\"transition\":\"color 0.15s ease\",\"borderLeft\":\"none\"},\"children\":\"Output\"}],\"$L31\",\"$L32\",\"$L33\",\"$L34\",\"$L35\",\"$L36\",\"$L37\",\"$L38\",\"$L39\",\"$L3a\",\"$L3b\",\"$L3c\",\"$L3d\",\"$L3e\",\"$L3f\",\"$L40\",\"$L41\",\"$L42\",\"$L43\",\"$L44\",\"$L45\",\"$L46\",\"$L47\",\"$L48\",\"$L49\",\"$L4a\",\"$L4b\",\"$L4c\",\"$L4d\",\"$L4e\",\"$L4f\"]]}]}]\n"])</script><script>self.__next_f.push([1,"2d:[\"$\",\"li\",\"/llms.txt\",{\"children\":[\"$\",\"$L1a\",null,{\"href\":\"/llms.txt\",\"className\":\"footer-link\",\"children\":\"llms.txt\"}]}]\n2e:[\"$\",\"li\",\"/ai.txt\",{\"children\":[\"$\",\"$L1a\",null,{\"href\":\"/ai.txt\",\"className\":\"footer-link\",\"children\":\"ai.txt\"}]}]\n2f:[\"$\",\"div\",null,{\"style\":{\"borderTop\":\"1px solid var(--color-teal-gray)\",\"paddingTop\":24,\"display\":\"flex\",\"justifyContent\":\"space-between\",\"alignItems\":\"center\",\"flexWrap\":\"wrap\",\"gap\":16},\"children\":[[\"$\",\"p\",null,{\"style\":{\"fontSize\":12,\"color\":\"var(--color-cool-gray)\"},\"children\":[\"© \",2026,\" Geodocs.dev. \",\"All rights reserved.\"]}],[\"$\",\"p\",null,{\"style\":{\"fontSize\":12,\"color\":\"var(--color-cool-gray)\"},\"children\":[[\"$\",\"a\",null,{\"href\":\"mailto:contact@geodocs.dev\",\"className\":\"footer-link\",\"children\":\"contact@geodocs.dev\"}],\" · \",\"Built for humans and AI agents.\"]}]]}]\n30:[\"$\",\"style\",null,{\"children\":\"\\n .footer-link {\\n font-size: 13px;\\n color: var(--color-silver-teal);\\n text-decoration: none;\\n transition: color 0.2s ease;\\n }\\n .footer-link:hover {\\n color: var(--color-white);\\n }\\n \"}]\n"])</script><script>self.__next_f.push([1,"31:[\"$\",\"a\",\"errors\",{\"href\":\"#errors\",\"style\":{\"display\":\"block\",\"padding\":\"4px 0\",\"paddingLeft\":0,\"color\":\"var(--text-secondary)\",\"textDecoration\":\"none\",\"transition\":\"color 0.15s ease\",\"borderLeft\":\"none\"},\"children\":\"Errors\"}]\n32:[\"$\",\"a\",\"idempotency\",{\"href\":\"#idempotency\",\"style\":{\"display\":\"block\",\"padding\":\"4px 0\",\"paddingLeft\":0,\"color\":\"var(--text-secondary)\",\"textDecoration\":\"none\",\"transition\":\"color 0.15s ease\",\"borderLeft\":\"none\"},\"children\":\"Idempotency\"}]\n33:[\"$\",\"a\",\"content-body-structure\",{\"href\":\"#content-body-structure\",\"style\":{\"display\":\"block\",\"padding\":\"4px 0\",\"paddingLeft\":16,\"color\":\"var(--text-secondary)\",\"textDecoration\":\"none\",\"transition\":\"color 0.15s ease\",\"borderLeft\":\"1px solid var(--border-default)\"},\"children\":\"Content body structure\"}]\n34:[\"$\",\"a\",\"tl-dr\",{\"href\":\"#tl-dr\",\"style\":{\"display\":\"block\",\"padding\":\"4px 0\",\"paddingLeft\":0,\"color\":\"var(--text-secondary)\",\"textDecoration\":\"none\",\"transition\":\"color 0.15s ease\",\"borderLeft\":\"none\"},\"children\":\"TL;DR\"}]\n35:[\"$\",\"a\",\"question-in-natural-language\",{\"href\":\"#question-in-natural-language\",\"style\":{\"display\":\"block\",\"padding\":\"4px 0\",\"paddingLeft\":16,\"color\":\"var(--text-secondary)\",\"textDecoration\":\"none\",\"transition\":\"color 0.15s ease\",\"borderLeft\":\"1px solid var(--border-default)\"},\"children\":\"Question in natural language?\"}]\n36:[\"$\",\"a\",\"json-ld-structured-data\",{\"href\":\"#json-ld-structured-data\",\"style\":{\"display\":\"block\",\"padding\":\"4px 0\",\"paddingLeft\":16,\"color\":\"var(--text-secondary)\",\"textDecoration\":\"none\",\"transition\":\"color 0.15s ease\",\"borderLeft\":\"1px solid var(--border-default)\"},\"children\":\"JSON-LD structured data\"}]\n37:[\"$\",\"a\",\"layer-3-attribution\",{\"href\":\"#layer-3-attribution\",\"style\":{\"display\":\"block\",\"padding\":\"4px 0\",\"paddingLeft\":0,\"color\":\"var(--text-secondary)\",\"textDecoration\":\"none\",\"transition\":\"color 0.15s ease\",\"borderLeft\":\"none\"},\"children\":\"Layer 3: Attribution\"}]\n38:[\"$\",\"a\",\"ai-txt\",{\"href\":\"#ai-txt\",\"style\":{\"display\":\"block\",\"padding\":\"4px 0\",\"paddingLeft\":16,\"color\":\"var(--text-secondary)\",\"textDecoration\":\"none\",\"transition\":\"color 0.15s ease\",\"borderLeft\":\"1px solid var(--border-default)\"},\"children\":\"ai.txt\"}]\n39:[\"$\",\"a\",\"canonical-urls\",{\"href\":\"#canonical-urls\",\"style\":{\"display\":\"block\",\"padding\":\"4px 0\",\"paddingLeft\":16,\"color\":\"var(--text-secondary)\",\"textDecoration\":\"none\",\"transition\":\"color 0.15s ease\",\"borderLeft\":\"1px solid var(--border-default)\"},\"children\":\"Canonical URLs\"}]\n3a:[\"$\",\"a\",\"source-metadata\",{\"href\":\"#source-metadata\",\"style\":{\"display\":\"block\",\"padding\":\"4px 0\",\"paddingLeft\":16,\"color\":\"var(--text-secondary)\",\"textDecoration\":\"none\",\"transition\":\"color 0.15s ease\",\"borderLeft\":\"1px solid var(--border-default)\"},\"children\":\"Source metadata\"}]\n3b:[\"$\",\"a\",\"implementation-patterns-by-platform\",{\"href\":\"#implementation-patterns-by-platform\",\"style\":{\"display\":\"block\",\"padding\":\"4px 0\",\"paddingLeft\":0,\"color\":\"var(--text-secondary)\",\"textDecoration\":\"none\",\"transition\":\"color 0.15s ease\",\"borderLeft\":\"none\"},\"children\":\"Implementation patterns by platform\"}]\n3c:[\"$\",\"a\",\"chatgpt-openai-search-and-atlas-browser\",{\"href\":\"#chatgpt-openai-search-and-atlas-browser\",\"style\":{\"display\":\"block\",\"padding\":\"4px 0\",\"paddingLeft\":16,\"color\":\"var(--text-secondary)\",\"textDecoration\":\"none\",\"transition\":\"color 0.15s ease\",\"borderLeft\":\"1px solid var(--border-default)\"},\"children\":\"ChatGPT (OpenAI) — Search and Atlas browser\"}]\n3d:[\"$\",\"a\",\"perplexity-answer-engine-and-comet-browser\",{\"href\":\"#perplexity-answer-engine-and-comet-browser\",\"style\":{\"display\":\"block\",\"padding\":\"4px 0\",\"paddingLeft\":16,\"color\":\"var(--text-secondary)\",\"textDecoration\":\"none\",\"transition\":\"color 0.15s ease\",\"borderLeft\":\"1px solid var(--border-default)\"},\"children\":\"Perplexity — Answer engine and Comet browser\"}]\n3e:[\"$\",\"a\",\"claude-anthropic-chat-computer-use-claude-code\",{\"href\":\"#claude-anthropic-chat-computer-use-claude-code\",\"style\":{\"display\":\"block\",\"padding\":\"4px 0\",\"paddingLeft\":16,\"color\":\"var(--text-secondary)\",\"textDecoration\":\"none\",\"transition\":\"color 0.15s ease\",\"borderLeft\":\"1px solid var"])</script><script>self.__next_f.push([1,"(--border-default)\"},\"children\":\"Claude (Anthropic) — Chat, Computer Use, Claude Code\"}]\n3f:[\"$\",\"a\",\"gemini-google-search-ai-overviews-gemini-live\",{\"href\":\"#gemini-google-search-ai-overviews-gemini-live\",\"style\":{\"display\":\"block\",\"padding\":\"4px 0\",\"paddingLeft\":16,\"color\":\"var(--text-secondary)\",\"textDecoration\":\"none\",\"transition\":\"color 0.15s ease\",\"borderLeft\":\"1px solid var(--border-default)\"},\"children\":\"Gemini (Google) — Search, AI Overviews, Gemini Live\"}]\n40:[\"$\",\"a\",\"cursor-and-other-coding-agents\",{\"href\":\"#cursor-and-other-coding-agents\",\"style\":{\"display\":\"block\",\"padding\":\"4px 0\",\"paddingLeft\":16,\"color\":\"var(--text-secondary)\",\"textDecoration\":\"none\",\"transition\":\"color 0.15s ease\",\"borderLeft\":\"1px solid var(--border-default)\"},\"children\":\"Cursor and other coding agents\"}]\n41:[\"$\",\"a\",\"validation\",{\"href\":\"#validation\",\"style\":{\"display\":\"block\",\"padding\":\"4px 0\",\"paddingLeft\":0,\"color\":\"var(--text-secondary)\",\"textDecoration\":\"none\",\"transition\":\"color 0.15s ease\",\"borderLeft\":\"none\"},\"children\":\"Validation\"}]\n42:[\"$\",\"a\",\"compliance-checklist\",{\"href\":\"#compliance-checklist\",\"style\":{\"display\":\"block\",\"padding\":\"4px 0\",\"paddingLeft\":0,\"color\":\"var(--text-secondary)\",\"textDecoration\":\"none\",\"transition\":\"color 0.15s ease\",\"borderLeft\":\"none\"},\"children\":\"Compliance checklist\"}]\n43:[\"$\",\"a\",\"discovery\",{\"href\":\"#discovery\",\"style\":{\"display\":\"block\",\"padding\":\"4px 0\",\"paddingLeft\":16,\"color\":\"var(--text-secondary)\",\"textDecoration\":\"none\",\"transition\":\"color 0.15s ease\",\"borderLeft\":\"1px solid var(--border-default)\"},\"children\":\"Discovery\"}]\n44:[\"$\",\"a\",\"parsing\",{\"href\":\"#parsing\",\"style\":{\"display\":\"block\",\"padding\":\"4px 0\",\"paddingLeft\":16,\"color\":\"var(--text-secondary)\",\"textDecoration\":\"none\",\"transition\":\"color 0.15s ease\",\"borderLeft\":\"1px solid var(--border-default)\"},\"children\":\"Parsing\"}]\n45:[\"$\",\"a\",\"attribution\",{\"href\":\"#attribution\",\"style\":{\"display\":\"block\",\"padding\":\"4px 0\",\"paddingLeft\":16,\"color\":\"var(--text-secondary)\",\"textDecoration\":\"none\",\"transition\":\"color 0.15s ease\",\"borderLeft\":\"1px solid var(--border-default)\"},\"children\":\"Attribution\"}]\n46:[\"$\",\"a\",\"common-mistakes\",{\"href\":\"#common-mistakes\",\"style\":{\"display\":\"block\",\"padding\":\"4px 0\",\"paddingLeft\":0,\"color\":\"var(--text-secondary)\",\"textDecoration\":\"none\",\"transition\":\"color 0.15s ease\",\"borderLeft\":\"none\"},\"children\":\"Common mistakes\"}]\n47:[\"$\",\"a\",\"faq\",{\"href\":\"#faq\",\"style\":{\"display\":\"block\",\"padding\":\"4px 0\",\"paddingLeft\":0,\"color\":\"var(--text-secondary)\",\"textDecoration\":\"none\",\"transition\":\"color 0.15s ease\",\"borderLeft\":\"none\"},\"children\":\"FAQ\"}]\n48:[\"$\",\"a\",\"is-this-specification-an-official-standard\",{\"href\":\"#is-this-specification-an-official-standard\",\"style\":{\"display\":\"block\",\"padding\":\"4px 0\",\"paddingLeft\":16,\"color\":\"var(--text-secondary)\",\"textDecoration\":\"none\",\"transition\":\"color 0.15s ease\",\"borderLeft\":\"1px solid var(--border-default)\"},\"children\":\"Is this specification an official standard?\"}]\n49:[\"$\",\"a\",\"do-all-ai-agents-follow-these-conventions\",{\"href\":\"#do-all-ai-agents-follow-these-conventions\",\"style\":{\"display\":\"block\",\"padding\":\"4px 0\",\"paddingLeft\":16,\"color\":\"var(--text-secondary)\",\"textDecoration\":\"none\",\"transition\":\"color 0.15s ease\",\"borderLeft\":\"1px solid var(--border-default)\"},\"children\":\"Do all AI agents follow these conventions?\"}]\n4a:[\"$\",\"a\",\"how-often-should-i-update-my-compliance\",{\"href\":\"#how-often-should-i-update-my-compliance\",\"style\":{\"display\":\"block\",\"padding\":\"4px 0\",\"paddingLeft\":16,\"color\":\"var(--text-secondary)\",\"textDecoration\":\"none\",\"transition\":\"color 0.15s ease\",\"borderLeft\":\"1px solid var(--border-default)\"},\"children\":\"How often should I update my compliance?\"}]\n4b:[\"$\",\"a\",\"is-the-frontmatter-schema-required-for-html-only-pages\",{\"href\":\"#is-the-frontmatter-schema-required-for-html-only-pages\",\"style\":{\"display\":\"block\",\"padding\":\"4px 0\",\"paddingLeft\":16,\"color\":\"var(--text-secondary)\",\"textDecoration\":\"none\",\"transition\":\"color 0.15s ease\",\"borderLeft\":\"1px solid var(--border-default)\"},\"children\":\"Is the frontmatter schema required for HTML-only page"])</script><script>self.__next_f.push([1,"s?\"}]\n4c:[\"$\",\"a\",\"what-is-the-bare-minimum-subset\",{\"href\":\"#what-is-the-bare-minimum-subset\",\"style\":{\"display\":\"block\",\"padding\":\"4px 0\",\"paddingLeft\":16,\"color\":\"var(--text-secondary)\",\"textDecoration\":\"none\",\"transition\":\"color 0.15s ease\",\"borderLeft\":\"1px solid var(--border-default)\"},\"children\":\"What is the bare-minimum subset?\"}]\n4d:[\"$\",\"a\",\"how-does-this-differ-from-traditional-seo\",{\"href\":\"#how-does-this-differ-from-traditional-seo\",\"style\":{\"display\":\"block\",\"padding\":\"4px 0\",\"paddingLeft\":16,\"color\":\"var(--text-secondary)\",\"textDecoration\":\"none\",\"transition\":\"color 0.15s ease\",\"borderLeft\":\"1px solid var(--border-default)\"},\"children\":\"How does this differ from traditional SEO?\"}]\n4e:[\"$\",\"a\",\"do-i-need-a-separate-agent-md-for-every-page\",{\"href\":\"#do-i-need-a-separate-agent-md-for-every-page\",\"style\":{\"display\":\"block\",\"padding\":\"4px 0\",\"paddingLeft\":16,\"color\":\"var(--text-secondary)\",\"textDecoration\":\"none\",\"transition\":\"color 0.15s ease\",\"borderLeft\":\"1px solid var(--border-default)\"},\"children\":\"Do I need a separate agent.md for every page?\"}]\n4f:[\"$\",\"a\",\"will-following-this-spec-guarantee-citations\",{\"href\":\"#will-following-this-spec-guarantee-citations\",\"style\":{\"display\":\"block\",\"padding\":\"4px 0\",\"paddingLeft\":16,\"color\":\"var(--text-secondary)\",\"textDecoration\":\"none\",\"transition\":\"color 0.15s ease\",\"borderLeft\":\"1px solid var(--border-default)\"},\"children\":\"Will following this spec guarantee citations?\"}]\n"])</script><script>self.__next_f.push([1,"12:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n"])</script><script>self.__next_f.push([1,"50:I[27201,[\"/_next/static/chunks/0ld4q8u-25eux.js\",\"/_next/static/chunks/0d3shmwh5_nmn.js\",\"/_next/static/chunks/0q_5ckv7l6e70.js\",\"/_next/static/chunks/148t.fhegq9f1.js\",\"/_next/static/chunks/05cra..ka3fzk.js\"],\"IconMark\"]\nf:null\n"])</script><script>self.__next_f.push([1,"14:[[\"$\",\"title\",\"0\",{\"children\":\"AI Agent Content Specification | Geodocs.dev\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Specification for structuring web content readable by AI agents — frontmatter, body patterns, llms.txt, ai.txt, agent.md, JSON-LD, per-platform tips.\"}],[\"$\",\"meta\",\"2\",{\"name\":\"keywords\",\"content\":\"AI agent content specification,machine-readable content,frontmatter schema,agent content format,agents.json,agent.md\"}],[\"$\",\"link\",\"3\",{\"rel\":\"canonical\",\"href\":\"https://geodocs.dev/ai-agents/content-spec\"}],[\"$\",\"link\",\"4\",{\"rel\":\"alternate\",\"hrefLang\":\"en\",\"href\":\"https://geodocs.dev/ai-agents/content-spec\"}],[\"$\",\"link\",\"5\",{\"rel\":\"alternate\",\"hrefLang\":\"vi\",\"href\":\"https://geodocs.dev/vi/ai-agents/content-spec\"}],[\"$\",\"link\",\"6\",{\"rel\":\"alternate\",\"hrefLang\":\"x-default\",\"href\":\"https://geodocs.dev/ai-agents/content-spec\"}],[\"$\",\"meta\",\"7\",{\"property\":\"og:title\",\"content\":\"AI Agent Content Specification\"}],[\"$\",\"meta\",\"8\",{\"property\":\"og:description\",\"content\":\"Specification for structuring web content readable by AI agents — frontmatter, body patterns, llms.txt, ai.txt, agent.md, JSON-LD, per-platform tips.\"}],[\"$\",\"meta\",\"9\",{\"property\":\"og:type\",\"content\":\"article\"}],[\"$\",\"meta\",\"10\",{\"property\":\"article:published_time\",\"content\":\"2025-04-01\"}],[\"$\",\"meta\",\"11\",{\"property\":\"article:modified_time\",\"content\":\"2026-05-01\"}],[\"$\",\"meta\",\"12\",{\"property\":\"article:author\",\"content\":\"Geodocs Research Team\"}],[\"$\",\"meta\",\"13\",{\"name\":\"twitter:card\",\"content\":\"summary_large_image\"}],[\"$\",\"meta\",\"14\",{\"name\":\"twitter:title\",\"content\":\"AI Agent Content Specification\"}],[\"$\",\"meta\",\"15\",{\"name\":\"twitter:description\",\"content\":\"Specification for structuring web content readable by AI agents — frontmatter, body patterns, llms.txt, ai.txt, agent.md, JSON-LD, per-platform tips.\"}],[\"$\",\"link\",\"16\",{\"rel\":\"shortcut icon\",\"href\":\"/favicon.ico\"}],[\"$\",\"link\",\"17\",{\"rel\":\"icon\",\"href\":\"/favicon.ico?favicon.0zl.ysuv3a32n.ico\",\"sizes\":\"48x48\",\"type\":\"image/x-icon\"}],[\"$\",\"link\",\"18\",{\"rel\":\"icon\",\"href\":\"/favicon.ico\"}],[\"$\",\"link\",\"19\",{\"rel\":\"apple-touch-icon\",\"href\":\"/favicon.ico\"}],[\"$\",\"$L50\",\"20\",{}]]\n"])</script></body></html>