Skip to content

Add agent-readiness surfaces (robots.txt, sitemap, llms.txt, markdown)#180

Open
sbddesign wants to merge 1 commit into
masterfrom
agent-readiness
Open

Add agent-readiness surfaces (robots.txt, sitemap, llms.txt, markdown)#180
sbddesign wants to merge 1 commit into
masterfrom
agent-readiness

Conversation

@sbddesign

Copy link
Copy Markdown
Member

Implements the relevant items from the agent-readiness audit for a static content site. Each surface is generated from content, so it stays current as events/posts are added.

What's added

  • /robots.txt (public/robots.txt) — crawl rules, explicit AI-crawler groups (GPTBot, OAI-SearchBot, ClaudeBot, anthropic-ai, Google-Extended, PerplexityBot, CCBot, Applebot-Extended), a Content-Signal line, and a Sitemap: reference. Plain text, returns 200.
  • /sitemap.xml (app/sitemap.ts) — canonical URLs for home, listings, events, posts, and pages; referenced from robots.txt.
  • /llms.txt (app/llms.txt/route.ts) — an llmstxt.org index linking every event/post/page to its .md mirror.
  • Per-page markdown (app/md/[...slug] + middleware.ts) — every content page is available as plain markdown. Two ways in:
    • explicit URL, e.g. …/events/2026-05-20-bitcoin-socratic-seminar-50.md
    • content negotiation: same URL with Accept: text/markdown
    • HTML stays the default for browsers (Accept: text/html).
  • Discovery headers/metadatanext.config.js headers() adds RFC 8288 Link headers (homepage → llms.txt + sitemap; content pages → their .md alternate), and content pages emit <link rel="alternate" type="text/markdown">.
  • Footer — a subtle /llms.txt link in a new site footer.

Content-Signal policy

Set to search=yes, ai-input=yes, ai-train=yes — permissive, matching the community's free-and-open education mission. Easy to dial back in public/robots.txt if desired.

Scope / skipped

Audit items that don't apply to a static content site (no APIs/auth/MCP) were intentionally skipped: OAuth/OIDC discovery, OAuth protected-resource, auth.md, API catalog, MCP Server Card, WebMCP, and DNS-AID.

Verification

yarn build passes; ran next start and confirmed status + Content-Type for /robots.txt (text/plain), /sitemap.xml (application/xml), /llms.txt (text/plain), .md URLs and Accept: text/markdown (text/markdown), HTML default still served, and the Link headers.

Note: .md URLs and Accept-negotiation rely on middleware.ts, so they work on the Netlify Next runtime (verified locally via next start), not a pure static export.

Make the site discoverable and consumable by AI agents and crawlers:

- public/robots.txt: crawl rules, explicit AI crawler groups (GPTBot,
  ClaudeBot, Google-Extended, etc.), a Content-Signal line, and a
  Sitemap: reference.
- app/sitemap.ts: /sitemap.xml generated from content.
- app/llms.txt/route.ts: /llms.txt index linking every event/post/page
  to its plain-markdown mirror.
- app/md/[...slug] + middleware.ts: serve a plain-markdown version of
  any content page, reached via /<section>/<slug>.md URLs or an
  Accept: text/markdown request. HTML stays the default for browsers.
- next.config.js headers(): RFC 8288 Link headers pointing agents at
  llms.txt/sitemap and each page's .md alternate; metadata adds a
  <link rel="alternate" type="text/markdown">.
- Footer with a subtle /llms.txt link.

Scoped to a static content site: OAuth/MCP/WebMCP/DNS-AID/api-catalog
items from the audit don't apply and were skipped.
@netlify

netlify Bot commented Jun 17, 2026

Copy link
Copy Markdown

Deploy Preview for atlantabitdevs ready!

Name Link
🔨 Latest commit c4fb5fb
🔍 Latest deploy log https://app.netlify.com/projects/atlantabitdevs/deploys/6a32e4f128afdf000814f595
😎 Deploy Preview https://deploy-preview-180--atlantabitdevs.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant