Building an AI Discovery Page — LLM-LD

What is an AI Discovery Page?

The AI Discovery Page (ADP) is a single page on your main site — typically at /ai-discovery — that serves as the hub connecting your human-facing website to your AI-readable data.

The ADP is the front door for AI crawlers and agents. One page, all your AI resources, connected to the network.

When an AI system or agent lands on your ADP, it finds:

  • Links to all your AI-readable resources (llm-index.json, entities, sitemap, etc.)
  • Structured data describing your AI layer
  • Links to the LLM Disco Network and the LLM-LD spec
  • A human-readable explanation for anyone who stumbles onto it
📍

Important: The ADP lives on your main site, not your AI subdomain. It's the bridge between the two — and it needs to be crawlable by everyone (allowed in robots.txt) so AI crawlers blocked from the rest of your site can still find it.

Minimum requirements

To join the LLM Disco Network, your ADP needs:

Required elements

  • Page at /ai-discovery on your main site
  • <link rel="llm-index"> pointing to your llm-index.json (if using Layer 3)
  • JSON-LD structured data with @type: "llmld:DiscoveryPage"
  • Links to the LLM-LD spec and LLM Disco Network
  • List of your AI resources with URLs
  • Human-readable description of what the page is
  • Footer link on your main site: 🤖 AI-Optimized Website/ai-discovery

If you only have Layer 1 (Schema.org markup), you can still create an ADP — just link to your AI subdomain or note that your structured data is embedded on your main pages.


Complete template

Copy this template and customize it for your site. Replace the placeholder values with your actual URLs and business name.

/ai-discovery.html
<!doctype html> <html lang="en"> <head> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1" /> <title>YOUR_BUSINESS — AI Discovery</title> <meta name="description" content="Machine-readable AI layer discovery for YOUR_BUSINESS. Built on the LLM-LD open standard." /> <meta name="robots" content="index, follow" /> <link rel="canonical" href="https://YOUR_DOMAIN/ai-discovery" /> <!-- AI Resource Links --> <link rel="llm-index" type="application/json" href="https://ai.YOUR_DOMAIN/.well-known/llm-index.json" title="LLM-LD Index" /> <link rel="sitemap" type="application/xml" href="https://ai.YOUR_DOMAIN/sitemap.xml" title="AI Sitemap" /> <link rel="ai-resource" type="application/json" href="https://ai.YOUR_DOMAIN/entities.json" title="Entity Index" data-resource-type="entities" /> <!-- Structured Data --> <script type="application/ld+json"> { "@context": ["https://schema.org", "https://llmld.org/v1"], "@type": "llmld:DiscoveryPage", "@id": "https://YOUR_DOMAIN/ai-discovery", "name": "YOUR_BUSINESS — AI Discovery", "description": "AI layer discovery hub for YOUR_BUSINESS.", "dateModified": "2026-01-01T00:00:00Z", "isPartOf": { "@type": "WebSite", "name": "YOUR_BUSINESS", "url": "https://YOUR_DOMAIN" }, "llmld:aiLayer": { "url": "https://ai.YOUR_DOMAIN", "name": "YOUR_BUSINESS AI Layer", "description": "Machine-readable version of public content." }, "llmld:resources": [ { "@type": "llmld:AIResource", "identifier": "llm-index", "name": "LLM-LD Index", "url": "https://ai.YOUR_DOMAIN/.well-known/llm-index.json", "encodingFormat": "application/json", "description": "Complete site-wide machine-readable index.", "category": "index", "priority": 1 }, { "@type": "llmld:AIResource", "identifier": "ai-sitemap", "name": "AI Sitemap", "url": "https://ai.YOUR_DOMAIN/sitemap.xml", "encodingFormat": "application/xml", "description": "Full URL listing for AI-layer pages.", "category": "sitemap", "priority": 2 }, { "@type": "llmld:AIResource", "identifier": "entities", "name": "Entity Index", "url": "https://ai.YOUR_DOMAIN/entities.json", "encodingFormat": "application/json", "description": "Structured entity data.", "category": "entities", "priority": 3 } ] } </script> <!-- Minimal styling --> <style> *,*::before,*::after{margin:0;padding:0;box-sizing:border-box} :root{ --fg:#1a1a1a;--fg-m:#5c5c5c;--bg:#fdfdfd;--bg-a:#f4f4f2; --accent:#2563eb;--border:#d4d4d0;--radius:6px; --mono:"SFMono-Regular","Consolas",monospace; } body{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif; color:var(--fg);background:var(--bg);line-height:1.65} main{max-width:640px;margin:0 auto;padding:3rem 1.5rem 4rem} h1{font-size:1.35rem;font-weight:600;margin-bottom:1.25rem} h2{font-size:0.75rem;font-weight:600;text-transform:uppercase;letter-spacing:0.08em; color:var(--fg-m);margin-top:2.5rem;margin-bottom:0.75rem;padding-bottom:0.4rem; border-bottom:1px solid var(--border)} p{margin-bottom:0.9rem} p.muted{color:var(--fg-m);font-size:0.9rem} a{color:var(--accent);text-decoration:none} a:hover{text-decoration:underline} ol.resources{list-style:none;counter-reset:res;padding:0} ol.resources li{counter-increment:res;display:flex;align-items:baseline;gap:0.75rem; padding:0.65rem 0;border-bottom:1px solid var(--bg-a)} ol.resources li:last-child{border-bottom:none} ol.resources li::before{content:counter(res);width:1.5rem;height:1.5rem; display:flex;align-items:center;justify-content:center;font-size:0.7rem; font-weight:600;color:var(--fg-m);background:var(--bg-a);border-radius:50%} ol.resources .res-info{flex:1} ol.resources .res-name{font-weight:500} ol.resources .res-desc{font-size:0.85rem;color:var(--fg-m);margin-top:0.1rem} ol.resources .res-url{font-family:var(--mono);font-size:0.72rem;color:var(--fg-m); word-break:break-all;margin-top:0.15rem;opacity:0.7} .info-box{background:var(--bg-a);border:1px solid var(--border);border-radius:var(--radius); padding:1.25rem;margin-top:0.25rem} .info-box p{font-size:0.88rem;margin-bottom:0.7rem} .info-box p:last-of-type{margin-bottom:0} .info-box .label{font-size:0.7rem;font-weight:600;text-transform:uppercase; letter-spacing:0.06em;color:var(--fg-m);margin-bottom:0.15rem} .info-box .links{display:flex;flex-wrap:wrap;gap:0.5rem 1.25rem;margin-top:0.85rem; padding-top:0.85rem;border-top:1px solid var(--border)} .info-box .links a{font-size:0.82rem;font-weight:500} .timestamp{font-family:var(--mono);font-size:0.72rem;color:var(--fg-m); margin-top:2.5rem} footer{max-width:640px;margin:0 auto;padding:1.5rem;font-size:0.78rem; color:var(--fg-m);border-top:1px solid var(--border)} </style> </head> <body> <main> <h1>YOUR_BUSINESS — AI Discovery</h1> <p> This page provides discovery links to YOUR_BUSINESS's machine-readable AI layer. It is intended for AI crawlers, agents, and developers. </p> <p class="muted"> If you followed a link to get here — this is an index for AI systems. It helps AI understand our public content. No private data is exposed. </p> <h2>Resources</h2> <ol class="resources"> <li> <div class="res-info"> <div class="res-name"> <a href="https://ai.YOUR_DOMAIN/.well-known/llm-index.json">LLM-LD Index</a> </div> <div class="res-desc">Complete site-wide machine-readable index</div> <div class="res-url">application/json</div> </div> </li> <li> <div class="res-info"> <div class="res-name"> <a href="https://ai.YOUR_DOMAIN/sitemap.xml">AI Sitemap</a> </div> <div class="res-desc">Full URL listing for AI-layer pages</div> <div class="res-url">application/xml</div> </div> </li> <li> <div class="res-info"> <div class="res-name"> <a href="https://ai.YOUR_DOMAIN/entities.json">Entity Index</a> </div> <div class="res-desc">Structured entity data</div> <div class="res-url">application/json</div> </div> </li> </ol> <h2>About This Standard</h2> <div class="info-box"> <p class="label">LLM-LD 1.0 — Open Standard</p> <p> This AI layer is built on <strong>LLM-LD</strong> (Large Language Model Linked Data) — an open standard for making websites machine-readable to AI systems and agents. </p> <div class="links"> <a href="https://llmld.org">LLM-LD Specification ↗</a> <a href="https://llmdisco.com">LLM Disco Network ↗</a> </div> </div> <h2>Primary Site</h2> <p> <a href="https://YOUR_DOMAIN">YOUR_DOMAIN</a> </p> <p class="timestamp"> Last updated: YYYY-MM-DD </p> </main> <footer> <a href="https://YOUR_DOMAIN">YOUR_BUSINESS</a> · Standard: <a href="https://llmld.org">LLM-LD 1.0</a> · Network: <a href="https://llmdisco.com">LLM Disco</a> </footer> </body> </html>
✏️

Customize: Replace all instances of YOUR_BUSINESS, YOUR_DOMAIN, and YYYY-MM-DD with your actual values. Add or remove resources from the list based on what you've implemented.


Key components explained

Link elements in <head>

The <link> tags tell crawlers where your AI resources live. Each has a specific rel attribute:

  • rel="llm-index" — Points to your llm-index.json (Layer 3)
  • rel="sitemap" — Your AI subdomain's sitemap
  • rel="ai-resource" — Other AI files (entities, knowledge graph, feeds)

JSON-LD structured data

The structured data describes your AI layer in a machine-readable format. Key fields:

  • @type: "llmld:DiscoveryPage" — Identifies this as an ADP
  • llmld:aiLayer — URL and description of your AI subdomain
  • llmld:resources — Array of all your AI-readable files with metadata

Human-readable content

The visible HTML serves two purposes:

  1. Explains to humans who land here what the page is
  2. Provides clickable links that crawlers can follow

Links to the standard and network

Always include links to:

  • llmld.org — The specification (so crawlers understand the format)
  • llmdisco.com — The network hub (so crawlers can discover other sites)

Adding more resources

If you have additional AI resources beyond the basics, add them to both the <link> tags and the llmld:resources array. Common additions:

  • Knowledge Graphknowledge-graph.json
  • LLMs Manifestllms.txt (plain-text summary)
  • Services Feed — Real-time service listings
  • Articles Feed — Blog posts and articles
  • Products Feed — E-commerce product data

Match the resource list in the HTML body to what's declared in the structured data and link tags.


The footer link

Add a link to your AI Discovery Page in the footer of your main site. Because the footer appears on every page, search engines are more likely to discover and index your ADP.

Why does this matter? Many AI systems currently find content through search engines, not direct crawling. When someone asks an AI assistant about a topic, those systems often query Bing or Google to find relevant pages. A footer link on every page maximizes the chance your ADP gets indexed — and found.

The link text must be exactly:

🤖 AI-Optimized Website → links to /ai-discovery

Example HTML:

Add to your site footer
<a href="/ai-discovery">🤖 AI-Optimized Website</a>
⚠️

Exact match required. The network checks for this link automatically during verification. The emoji and text must match exactly: 🤖 AI-Optimized Website. Variations won't pass verification.

After you publish

  1. Verify it's accessible: Visit yoursite.com/ai-discovery in a browser
  2. Check robots.txt: Make sure /ai-discovery is allowed for all crawlers
  3. Verify footer link: Confirm 🤖 AI-Optimized Website appears in your site footer and links to /ai-discovery
  4. Validate the structured data: Use the Schema Validator
  5. Submit to the network: Go to llmdisco.com and enter your URL
🤝

Need help? If you'd rather have experts set this up, check out our certified partners who offer LLM-LD implementation services.

Ready to join the network?

Once your ADP is live, submit your site to the LLM Disco Network.