Platform playbook

AI-agent readiness for Astro

Astro sites arrive with an advantage no other stack gets for free: the default output is static HTML with the JavaScript stripped out, so the content checks tend to pass on day one. The gap is elsewhere. Content collections know exactly what pages exist and in what order, and almost nobody uses that knowledge to emit llms.txt, a feed, or an index an agent can read. The data is already structured — it is just never published in the shape a crawler wants.

What our own scans say about Astro

Not an estimate. These numbers come from public AIScan reports and change as we scan more.

Astro sites scanned
30

Distinct public domains, counted once each at their most recent scan.

Average score
64/100

Mean of the latest public scan for every Astro domain we have graded.

What Astro sites fail most often

Computed from public AIScan reports, refreshed as we scan. Private reports are never included.

How Astro sites fail, and what fixes it

Content collections that never become llms.txt

You already have a typed list of every page with a title and description. An endpoint at src/pages/llms.txt.ts can map over it in a dozen lines, which means the file is correct forever instead of correct on the day it was written.

C2 · /llms.txt

No feed on a site whose whole point is publishing

Astro's content APIs make RSS trivial, and a feed is how assistants notice you published something without re-crawling the site. Missing feeds are the most common Astro deduction we record.

E5 · Content feed (RSS / Atom / JSON Feed)

Markdown that exists but is not served

Your posts are Markdown on disk and HTML on the wire. Serving the source at a .md twin, or honouring an Accept: text/markdown request, hands an agent the clean version and costs it far fewer tokens.

C1 · Markdown content negotiation

Default robots.txt, no AI position

Static output means robots.txt is a file you have to remember to write. Most projects either omit it entirely or copy a generic allow-all with no AI bot rules and no Content Signals.

D1 · robots.txt present & saneB2 · Explicit AI bot rulesB1 · Content Signals in robots.txt

Step-by-step fixes: /docs/platforms · /docs/checks/content · /docs/checks/discoverability · /llms-txt-generator

Businesses running on Astro

Questions Astro owners ask

Astro already outputs clean HTML. What is left to fix?
Usually three files and no page changes: llms.txt, a feed, and a robots.txt that states an AI position. Rendering is the part you already won.
Should I generate llms.txt from content collections?
Yes. A hand-written llms.txt is accurate until the next post. Generating it from the same collection the site renders from is the only version that stays true, and it is what we do on this site.
What is the Markdown twin check actually asking for?
Check C1 looks for the same page available as Markdown — either at a .md URL or via content negotiation. It is a bonus-shaped win for documentation and blogs specifically.
Does an island of client-side JavaScript hurt me?
Only if it holds the answer. Islands that add interactivity to text already in the HTML are invisible to the grader, which is the whole point of the architecture.
Do these same fixes apply to Hugo, Eleventy or Jekyll?
Almost exactly. The generator differs, the three missing files do not, so this playbook is the right one to follow for any static site.

Scan your Astro site and see where you actually stand

Free, no account, about twenty seconds. The report names every failing check by ID, shows the evidence we found, and gives the fix for your platform — plus a hand-off prompt you can paste straight into Claude Code or Cursor.

Run a free scan npx aiscan-cli yoursite.com

Prefer to read first? Browse every check we run or the guide library.