Content Checks
C1 Markdown content negotiation, C2 llms.txt, C3 structured HTML.
Agents don't render HTML the way a browser does. They strip it down, look for headings and meta, and try to extract clean prose. Help them by exposing content in formats they don't have to fight. None of this matters if crawlers can't find or aren't allowed to reach your pages — pair these with the Discoverability checks and Bot Access checks.
C1 — Markdown content negotiation (weight 8)
AIScan re-requests your homepage with Accept: text/markdown. If the server replies with atext/markdown content-type and the body looks like markdown (headings, lists, links), the check passes.
How to fix
Two approaches:
- Content negotiation — at the edge or in your framework, when
Acceptincludestext/markdown, render the same page as Markdown instead of HTML. - Sidecar URLs — also serve
/path/index.mdalongside/path. Easier for static sites.
C2 — /llms.txt (weight 6)
Per llmstxt.org, /llms.txt is a markdown file that gives agents a curated index of your site. AIScan checks that the file exists, returns 200, and contains an H1, at least one ## section, and markdown links.
How to fix
Drop a file at the root of your site that looks like the example below — or generate one with the llms.txt generator:
# Acme Inc.
> A short summary of what Acme does — one or two sentences.
## Docs
- [Getting started](https://acme.com/docs/getting-started.md)
- [API reference](https://acme.com/docs/api.md)
## Examples
- [Example app](https://acme.com/examples/app.md)C3 — Structured HTML (weight 4)
Four basic signals on your homepage: a single <h1>, a non-empty <title>, a <meta name="description">, and at least one application/ld+jsonblock. One point each.
How to fix
For JSON-LD, start with an Organization or WebSite schema sitewide, then add page-type-specific schemas (Article, Product, FAQPage) on the pages that match. Validators: schema.org validator.
E3 — Heading hierarchy & server-rendered text (weight 4, essential)
AIScan strips scripts and styles from the HTML your server actually returns, then counts the remaining words and the <h2>/<h3> outline. This is what a non-JavaScript crawler receives — most LLM crawlers do not execute your bundle.
- 150+ words of server-rendered text: 2 points (50+: 1 point).
- Two or more
<h2>sections: 2 points (one: 1 point).
How to fix
Server-render or pre-render your marketing and docs copy, and structure it with one <h1> then descriptive <h2>/<h3> sections. Check what a crawler sees:
curl -s https://yoursite.com/ | sed 's/<[^>]*>/ /g' | tr -s ' ' | head -c 800E5 — Content feed (RSS / Atom / JSON Feed) (weight 3, recommended)
A feed is a dated changelog of your site — a freshness signal a sitemap doesn't carry. AIScan looks for a feed at the conventional paths and checks whether it's declared in <head> with <link rel="alternate">. Declared feed: full credit. Found by convention only: partial.
This check is graded only where periodical content is expected (a blog, news, or articles section, or a platform like WordPress or Ghost). Otherwise it reports N/A with the reason, and costs nothing.
How to fix
<link rel="alternate" type="application/rss+xml" title="Blog" href="/feed.xml" />Further reading
- How to ship one h1, title, meta description and JSON-LD on Webflow
Webflow's SEO panel now writes three of the four signals that AIScan's C3 check grades, and the fourth one is not in any panel. On a paid Site plan you can set a page's title tag, its meta…
- Docs Sites and AI Agents: Four Markdown Routes, 52 Sites Tested
Ask an AI assistant how to configure a webhook, add a database index, or set a cache header, and it does not go looking for a blog post. It goes to the vendor's documentation. Docs are the…
- How to ship one h1, title, meta description and JSON-LD on Next.js
Next.js hands you a Metadata API that writes your <title and your meta description into the head automatically. It does not write your JSONLD, and it does not write your <h1. Those two are ordinary…
- Gate AI readiness in CI so a regression fails the build
A green pipeline is supposed to mean the site is fine. On an AI readiness check it often means something narrower: that the gate could not tell a file from a phantom. This step, which appears in a…
- How to ship one h1, title, meta description and JSON-LD on WordPress
WordPress sites fail AIScan's C3 check more often than their owners expect, and almost never for the reason they expect. Across the 129 WordPress sites in our scan corpus, verified on 8 September…
- The complete AI readiness setup for Wix in 2026
Every other platform in this series asks you to create something. Wix has already created it. Before you open a single panel, a Wix site is serving a robots.txt, a sitemap index, serverrendered HTML…
- The complete AI readiness setup for Docusaurus in 2026
Docusaurus is the framework most likely to be sitting between an AI agent and the answer it is looking for. It runs a very large share of the developer documentation on the web, and developer…
- The complete AI readiness setup for Hugo in 2026
Hugo hands you every byte your site emits. No plan tier decides which files exist, no editor panel hides a toggle, no vendor writes a robots.txt on your behalf. That ownership is the whole appeal,…