V3 · classify + auditopen source · no signup

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
What the audit returnsJSON · matrix · fixes
reference run
v3 · site + focus

›$ 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

llms.txt · RFC 9309 · schema.org20 checks · 8-page sample

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.

Run the pipeline
  1. 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
  2. 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
  3. 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.

Increase your site's support for these AI crawlers:GPTBotOpenAIClaudeBotAnthropicGoogle-ExtendedGooglePerplexityBotPerplexityBytespiderByteDance

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.

CLI reference
01 · install from sourceNode 20.9+ · pnpm 10+
terminal · install
git clone https://github.com/ABradwell/llm-seo-toolbox.gitcd llm-seo-toolboxpnpm installpnpm build:cli
02 · audit a URLtable · json · markdown · summary
terminal · run
pnpm 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.json
  • Same 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.

Action reference
.github/workflows/audit.ymlNode 20.9+ · pnpm 10+
workflow · pull request audit
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"
The action ships from actions/audit, so the job checks out the repository and builds the bundle before referencing it locally.
what lands on the PRexample · sticky comment
pull request commentgate passed

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.

GPL-3.0-only · no analytics · no cookiesraw HTML only · no JavaScript execution