Skip to content

notaprompt/agent-seo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

agent-seo

Agent-Discoverable

Make any website readable by agents in about an hour. Templates, validation, and a checklist.


Why this exists

In 2026, a lot of traffic comes from crawlers and agents, not browsers. Most sites aren't set up for them. This repo fixes that.

Publish a few machine-readable surfaces at known paths. An agent lands, parses, and acts in one shot — no scraping, no guessing.

Templates and a checklist. About an hour to set up.

What ships in the box

  • templates/agent.json — the identity card, with placeholder fields
  • templates/llms.txt — the narrative, in the structure agents expect
  • templates/robots.txt — explicit allowlist for the 12 named AI crawlers
  • templates/sitemap.xml — a sitemap stub
  • templates/jsonld/ — three JSON-LD blocks (ProfessionalService, SoftwareApplication, SoftwareSourceCode)
  • examples/ — Next.js 16 App Router route handlers, ready to paste
  • embed/ — a badge and an HTML snippet adopters can drop in
  • docs/ — pattern overview, product-vs-service guidance, voice rules, validation checklist

Quickstart

Drop four files into public/ and the site is ~80% there.

public/
├── .well-known/
│   └── agent.json      # from templates/agent.json
├── llms.txt            # from templates/llms.txt
├── robots.txt          # from templates/robots.txt
└── sitemap.xml         # from templates/sitemap.xml
  1. Copy the four files above into the site's public/ directory.
  2. Replace every {{PLACEHOLDER}} with a real value. Every one.
  3. Add the homepage JSON-LD block from templates/jsonld/professional-service.json (or software-application.json for a product) inside the page <head>.
  4. Deploy.
  5. Run the checklist in docs/validation-checklist.md against the live URL.

That's it. Optional endpoints (/api/agent/capabilities, /api/agent/simulate/*) are in examples/ if the site needs to be callable, not just readable.

Shipped on

Point your own deploy at @notaprompt on GitHub to get it added here.

How this differs from llms.txt

llms.txt is a file. This is a pattern that includes it.

llms.txt gives an LLM a readable summary of the site. Agent-seo layers three additions on top:

  1. /.well-known/agent.json — a structured identity card at a standard path, so an agent can discover capabilities and contact routes without parsing markdown.
  2. JSON-LD blocks — Schema.org entities in the page <head>, so classic search engines and rich-result crawlers see the same identity llms.txt describes.
  3. A named AI-bot allowlist — explicit robots.txt rules for the 12 crawlers worth naming, so the site is not accidentally excluded by a wildcard rule copied from a WordPress template.

Adopting this pattern does not mean abandoning llms.txt. It means wrapping it in the surrounding surfaces agents already look for.

The embed

Sites adopting the pattern can signal it two ways.

In a README:

[![Agent-Discoverable](https://img.shields.io/badge/agent--discoverable-%E2%9C%93-8b7355?style=flat-square)](https://github.com/notaprompt/agent-seo)

In a deployed site's <head>:

<link rel="alternate" type="application/agent+json" href="/.well-known/agent.json" title="Agent surface">
<link rel="alternate" type="text/plain" href="/llms.txt" title="LLM-readable site description">

Both live in embed/ with usage notes.

Voice rules

The pattern is machine-readable, but humans still read the copy inside it. Every template here follows the voice rules in docs/voice-rules.md:

  • No first-person plural.
  • No AI buzzwords.
  • Direct. Warm but lean. Every word earns its seat.

A one-line grep that catches most violations:

grep -niE 'AI-powered|intelligent|smart|leverage|synergy|seamless|cutting-edge' FILE

Validation

After deploying, from a fresh terminal:

curl -sS https://SITE/.well-known/agent.json | jq .
curl -sS https://SITE/llms.txt | head -40
curl -sS -A "GPTBot/1.0" -o /dev/null -w "%{http_code}\n" https://SITE/
curl -sS -A "ClaudeBot/1.0" -o /dev/null -w "%{http_code}\n" https://SITE/
curl -sS -A "PerplexityBot/1.0" -o /dev/null -w "%{http_code}\n" https://SITE/

The full matrix (12 user agents, per-file expectations) is in docs/validation-checklist.md.

Repo layout

agent-seo/
├── README.md
├── LICENSE
├── CONTRIBUTING.md
├── llms.txt                             # the repo dogfoods the pattern
├── public/.well-known/agent.json        # also dogfooded
├── templates/
│   ├── agent.json
│   ├── llms.txt
│   ├── robots.txt
│   ├── sitemap.xml
│   └── jsonld/
│       ├── professional-service.json
│       ├── software-application.json
│       └── software-source-code.json
├── examples/
│   ├── nextjs-route-handler/
│   │   └── api-agent-capabilities-route.ts
│   └── api-agent-simulate-stub.ts
├── docs/
│   ├── pattern-overview.md
│   ├── product-vs-service.md
│   ├── voice-rules.md
│   └── validation-checklist.md
└── embed/
    ├── badge.md
    ├── footer-snippet.html
    └── README.md

Built by

Alexander Campos. campos.works

License

MIT. See LICENSE.

About

Reusable pattern for making any website agent-discoverable. Templates, validation, and a 1-hour launch checklist.

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages