Ship the specs AI crawlers actually read.
LLMReady classifies the site, then audits /llms.txt, RFC 9309 access rules, static HTML signal-to-noise and the schema.org types that profile expects — with the exact line and code that fixes each miss.
- protocol families
- 4
- granular checks
- 20
- signup / cookies
- 0
›$ pnpm cli https://nextjs.org/docs/app
✓GET /llms.txt 200 H1 + 142 markdown links
✓GET /robots.txt 200 GPTBot allow · ClaudeBot allow
✓GET /sitemap.xml 200 1,204 URLs · robots directive L12
✓GET / (site seed) 48 KB SNR 71% · 12,840 chars
→sample 8 pages · 1,142 discovered · sitemap
→classify docs · 86% · TechArticle + 9 /docs paths
!schema.org TechArticle found · FAQPage missing
→result site 94 / A · focus /docs/app 88 / B
02 / the pipeline
One scan. Three decisions.
The audit reads the raw site once, classifies what kind of site it is, then scores the AI compatibility checks that matter for that profile. If the classifier guesses wrong, you can pin a different profile in the workspace.
- step 01
Raw site
Fetch the homepage HTML, manifests and structured data. No browser, no rendering, no guesswork about what a crawler sees.
- HTML
- /llms.txt
- /robots.txt
- sitemap
- JSON-LD
- step 02
Site classification
URL shape, schema types, metadata, markup and manifest signals vote for one of six profiles.
Docs86% · auto- 6 profiles
- signal evidence
- manual override
- step 03
Site AI compatibility
The profile decides which checks count: expected schema, OpenAPI relevance and the warnings worth fixing.
compatibility94 / A- 4 pillars
- profile schema
- score + fixes
Profiles: SaaS · Portfolio · Docs · Store · Local · Media — switch profile in the workspace or with ?type= on the audit API.
03 / command line
Audit from the terminal.
The CLI wraps the same audit engine as the workspace. Clone the repository, build the bundle, then run the checks against any URL and gate a script on the score.
git clone https://github.com/ABradwell/llm-seo-toolbox.gitcd llm-seo-toolboxpnpm installpnpm build:clipnpm cli example.com --min-score 75 --min-grade B # Machine-readable report for a script or CI jobpnpm cli example.com --format json --output audit.jsonSame engine
The 20 checks, site profiles and line-level fixes from the workspace, run locally against any public URL.
Four formats
Table for a person, summary for CI logs, JSON for scripts and Markdown for a PR comment.
CI exit codes
Exit 0 when the thresholds pass, 1 when the site scores below and 2 when the audit cannot run.
04 / github action
Gate the deploy, not the crawler.
Run the same audit against a preview or production URL. The action writes the report to the job summary, keeps one pull request comment current and fails the job when the site misses your threshold.
name: LLMReady auditon: pull_request permissions: contents: read pull-requests: write jobs: audit: runs-on: ubuntu-latest steps: - uses: actions/checkout@v7 - uses: pnpm/action-setup@v6 - uses: actions/setup-node@v7 with: node-version: 22 cache: pnpm - run: pnpm install --frozen-lockfile - run: pnpm build:action - uses: ./actions/audit with: url: https://preview.example.com min-score: "80" min-grade: "B"score
88 / 100
grade
B ≥ B
- Discovery100/100
- Access80/100
- Parseability90/100
- Structured85/100
One comment per pull request, updated on every push.
Job summary
The full markdown report is written to the workflow run summary.
One sticky comment
Created on the first run and updated in place on every following push.
Threshold gate
Fails the job when the score or grade misses min-score or min-grade.
Outputs: score · grade · passed · report-json
support
Free software, funded by people it helped.
LLMReady is GPL-3.0, with no paid tier, accounts or tracking. If the audit saved you an afternoon, buy the next release a coffee.