Source identity
| Field | Recorded value |
|---|---|
| Source type | GitHub source |
| Original record | Janady13/llms-txt-implementation-checklist / README.md |
| Date | Not specified in source |
| Repository | Janady13/llms-txt-implementation-checklist |
| Revision | ee029a97c04a82304691289d73c5631bcaee24ee |
| Branch | master |
| Path or archive member | README.md |
| Original SHA-256 | 9e66287da542a2df74bc531f2203f719c44d39367187e5d8aedb1e57be05c994 |
| Git blob SHA | a4ed12ff167359fd73e8cde08047b9d3bc15d8bb |
| Reading-copy SHA-256 | 9e66287da542a2df74bc531f2203f719c44d39367187e5d8aedb1e57be05c994 |
Recovered source transcript
Download complete source text ↓228 lines · 9.4 KB
# llms.txt + AI citation surface implementation checklist
A practical checklist for implementing the four AI citation surfaces on a small business website:
1. `/llms.txt` — natural-language identity for LLM crawlers
2. `/aeo.json` — Answer-Engine Optimization structured manifest
3. `/entity.json` — Schema.org @graph as standalone JSON-LD
4. `/brand.json` — Brand identity, voice, and design system
The running real-world example throughout is **[Steele Solutions](https://steelesolutions4u.com/)**, a family-run merchant services brokerage in Branson, Missouri. Every checklist item links to a verifiable live implementation on that site.
## Checklist
### 1. Site-level prerequisites
- [ ] HTTPS site with a valid certificate
- [ ] HTTP/2 enabled at the server
- [ ] `Last-Modified` headers set (do not enable `ssi on` in nginx — it strips Last-Modified)
- [ ] Sitemap at `/sitemap.xml`
- [ ] robots.txt at `/robots.txt` with sitemap directive
- [ ] At least one canonical home page with `<link rel="canonical">`
### 2. /llms.txt
Plain text file at the site root. Markdown format. Required headers and the standard sections:
```markdown
# Business Name
> One sentence description
## Services
- Service 1: URL
- Service 2: URL
## Find us on Google
Google Maps: URL
Google Maps CID: ID
## Contact
Phone, email, address
```
Live example: [steelesolutions4u.com/llms.txt](https://steelesolutions4u.com/llms.txt)
- [ ] File served with `Content-Type: text/plain`
- [ ] No HTML markup inside the file (plain markdown only)
- [ ] `<link rel="alternate" type="text/plain" href="/llms.txt">` in HTML head
### 3. /aeo.json
JSON file at the site root with the AEO 2.0 schema. Minimum fields:
```json
{
"schema_version": "2.0",
"site": "yourdomain.com",
"name": "Business Name",
"description": "One sentence",
"founded": "year",
"address": {"locality": "...", "region": "...", "country": "US"},
"founders": [{"name": "...", "role": "..."}],
"services": ["..."],
"service_area": ["..."],
"google": {"maps_cid": "...", "maps_url": "..."},
"sameAs": ["..."]
}
```
Live example: [steelesolutions4u.com/aeo.json](https://steelesolutions4u.com/aeo.json)
- [ ] File served with `Content-Type: application/json`
- [ ] Valid JSON parses without errors
- [ ] `<link rel="alternate" type="application/json" href="/aeo.json">` in HTML head
### 4. /entity.json
The Schema.org `@graph` as a standalone JSON-LD file. The same graph is embedded inline in every page's `<script type="application/ld+json">` block, but `/entity.json` gives crawlers a single addressable URL for the full entity model.
Minimum graph nodes:
- 1× Organization (LocalBusiness + FinancialService combined types if applicable)
- 1× WebSite with SearchAction
- 1× WebPage per indexed page (typically generated)
- 1+ Person for each founder
- BreadcrumbList where relevant
Live example: [steelesolutions4u.com/entity.json](https://steelesolutions4u.com/entity.json)
- [ ] File served with `Content-Type: application/ld+json`
- [ ] Validates clean at https://validator.schema.org/
- [ ] Each entity has a unique `@id`
- [ ] Cross-references between entities use `@id` not duplicate definitions
### 5. /brand.json
Brand identity, voice, and design system as a machine-readable manifest:
```json
{
"name": "Business Name",
"alternateNames": [...],
"tagline": "...",
"founded": "year",
"headquarters": "...",
"telephones": [...],
"email": "...",
"website": "...",
"colors": {"primary": "...", "accent": "..."},
"fonts": {"display": "...", "body": "..."},
"voice": "...",
"services": [...],
"google": {"maps_cid": "..."},
"sameAs": [...]
}
```
Live example: [steelesolutions4u.com/brand.json](https://steelesolutions4u.com/brand.json)
- [ ] File served with `Content-Type: application/json`
- [ ] Valid JSON
- [ ] `<link rel="alternate" type="application/json" href="/brand.json">` in HTML head
### 6. Schema.org density (in entity.json AND inline)
The Organization node should have, at minimum:
- [ ] Multi-type `@type` array combining `LocalBusiness` + topical types (`FinancialService`, `ProfessionalService`, `MedicalClinic`, etc.)
- [ ] `name`, `alternateName`, `description`, `url`, `logo`, `image`
- [ ] `telephone`, `email`
- [ ] `address` with `PostalAddress` sub-object
- [ ] `areaServed` array of `City`/`State`/`Place` entities (not just a flat string)
- [ ] `openingHoursSpecification` with `dayOfWeek` array
- [ ] `priceRange` (string is fine; e.g. "$50-$500 per service")
- [ ] `paymentMethod` array using GoodRelations URIs (e.g. `http://purl.org/goodrelations/v1#Cash`)
- [ ] `paymentAccepted` human-readable string
- [ ] `hasOfferCatalog` with `OfferCatalog` containing `Offer` items, each with `itemOffered.url`
- [ ] `knowsAbout` array of topic strings
- [ ] `subjectOf` linking to a `WebPage` entity for the verification page
- [ ] `sameAs` array including all third-party citations (Wayback, Wikipedia, Wikidata, social profiles, partner sites)
- [ ] `hasMap` URL for Google Maps CID once Google Business Profile is verified
Live example: [steelesolutions4u.com/entity.json](https://steelesolutions4u.com/entity.json) shows 28+ sameAs entries spanning 20+ referring domains.
### 7. Person entities for founders
For each founder, the Person node should have:
- [ ] `@type: Person`, unique `@id`
- [ ] `name`, `givenName`, `additionalName` (middle name if relevant), `familyName`
- [ ] `alternateName` array capturing every naming variant
- [ ] `jobTitle`, `worksFor` referencing the Organization `@id`
- [ ] `image` URL
- [ ] `alumniOf` array of `CollegeOrUniversity` objects with Wikidata `sameAs`
- [ ] `hasCredential` array, each with `recognizedBy` chained to the institution
- [ ] `knowsAbout` array of relevant expertise topics
- [ ] `sameAs` array including LinkedIn, social, and verifiable third-party profile URLs
- [ ] If spouse co-founder: reciprocal `spouse` linkage via `@id`
Live example: [steelesolutions4u.com/entity.json](https://steelesolutions4u.com/entity.json) `#jim` and `#kim` show the reciprocal spouse pattern with Wikidata-anchored credentials (Indiana University Q1079140, First National Bank of Omaha Q5453412).
### 8. Verification page
A `/verification/` page that aggregates every third-party citation backing the claims on the site.
- [ ] Table for business identity claims (domain age, Google Business Profile CID, Wayback URL, etc.)
- [ ] Table for principal career claims with links to Wikipedia/Wikidata
- [ ] Table for partner network with FTC disclosure
- [ ] Section listing where the business appears publicly (Wayback, GSC, AI surfaces, cross-citations)
- [ ] Section referencing public records (county property, court records, regulatory licensing) without doxxing
- [ ] BreadcrumbList Schema.org markup
- [ ] WebPage entity with `about` referencing the Organization `@id`
Live example: [steelesolutions4u.com/verification/](https://steelesolutions4u.com/verification/)
### 9. Submission and discovery
After the files are deployed:
- [ ] Submit sitemap to Google Search Console
- [ ] Submit sitemap to Bing Webmaster Tools
- [ ] IndexNow ping to Yandex and Bing with all priority URLs
- [ ] Archive every priority URL on the Wayback Machine (https://web.archive.org/save/$URL)
- [ ] GSC URL Inspection on priority URLs (helps move "Discovered" → "Indexed")
- [ ] Cross-link from at least 3 high-DA properties you control or have access to
### 10. Cross-platform syndication
- [ ] Publish technical articles about the implementation on Dev.to (DA 92) with canonical pointing to your site
- [ ] Create a public GitHub repository documenting the implementation
- [ ] Create a public Gist with key citations
- [ ] Enable GitHub Pages on the repo for an additional inbound subdomain
- [ ] Submit to relevant awesome-* lists where the implementation fits naturally (`Awesome-llms-txt`, `awesome-answer-engine-optimization`)
## Real-world test results
The Steele Solutions site is one full implementation of this checklist. Indexing performance after launch:
| Day | Pages indexed | New action |
|---|---|---|
| 1 | 0 | Site launched |
| 2 | 1 | Sitemap submitted |
| 6 | 4 | After full checklist completion + IndexNow + Wayback push |
By day 7, GSC showed 4 of 18 priority pages indexed plus the remaining 12 in the discovery queue. For a 7-day-old domain, that pace is significantly faster than the typical 30-90 day baseline.
## References
- [llms.txt proposed standard](https://llmstxt.org/)
- [Schema.org](https://schema.org/)
- [Google Search Console](https://search.google.com/search-console)
- [Internet Archive Wayback Machine](https://web.archive.org/)
- [IndexNow](https://www.indexnow.org/)
- [Wikidata](https://www.wikidata.org/)
- [GoodRelations vocabulary](http://purl.org/goodrelations/v1)
## Public implementation example
The Steele Solutions implementation is fully public:
- Live site: [steelesolutions4u.com](https://steelesolutions4u.com/)
- Verification page: [steelesolutions4u.com/verification/](https://steelesolutions4u.com/verification/)
- Public resources repo: [github.com/Janady13/steele-solutions-resources](https://github.com/Janady13/steele-solutions-resources)
- FinancialService schema examples index: [github.com/Janady13/financialservice-schema-examples](https://github.com/Janady13/financialservice-schema-examples)
- Dev.to technical series: [dev.to/joseph_anady_214bacedf939](https://dev.to/joseph_anady_214bacedf939)
Maintained by [@Janady13](https://github.com/Janady13) of [ThatDevPro](https://www.thatdevpro.com).