Our audit rubric, in full.
No black box. Every check below is reproducible by hand against the same fetched bytes. We score 100 points across 10 categories; the implementation lives at src/Services/AuditEngine.php in our private repo.
What we fetch
For every audit we issue four GET requests with our SSRF-safe fetcher (`UrlFetcher`), each capped at 12s and 2MB:
- The submitted URL (your homepage or whichever URL you provided).
/robots.txtat the same origin./sitemap.xmlat the same origin./llms.txtat the same origin.
Our user agent is LLMSubmitterBot/1.0 (+https://llmsubmitter.com/bot). We don't execute JavaScript - same as how every AI-search crawler operates.
The 10 categories
| Category | Pts | Check |
|---|---|---|
| A · llms.txt | 15 | Presence (10) + valid H1 (+2) + summary blockquote (+2) + one or more markdown link items (+1). |
| B · Crawler access | 15 | For each of GPTBot, OAI-SearchBot, ChatGPT-User, ClaudeBot, Claude-User, Claude-SearchBot, PerplexityBot, Perplexity-User, Google-Extended, CCBot we deduct 1.5pts if the bot is explicitly blocked (Disallow: /). A specific User-agent block beats a wildcard. |
| C · Schema (JSON-LD) | 15 | Any application/ld+json found (+5) · Organization OR WebSite OR LocalBusiness type (+3) · Article OR BlogPosting OR NewsArticle OR FAQPage OR Product OR HowTo type (+4) · @graph cross-reference present (+3). |
| D · Semantic HTML | 10 | Exactly one h1 (+3) · clean heading hierarchy with no level skipped by more than 1 (+3) · header / main / article / nav / section / footer presence (4 max, scaled). |
| E · Meta tags | 10 | <title> length 50-70 chars (+3) · meta description length 120-180 chars (+3) · og:title + og:description + og:image all present (+4 if all three). |
| F · Content depth | 15 | FAQ section detected via heading text or section id="faq" (+5) · 3 or more h2/h3 (+4) · 2 or more ul/ol (+3) · 300+ words in body (+3). |
| G · Sitemap | 5 | sitemap.xml exists (+3) · listed via Sitemap: directive in robots.txt (+2). |
| H · HTTPS | 5 | Final URL after redirects begins with https:// (5/0). |
| I · Mobile | 5 | <meta name="viewport" content="width=…"> present (5/0). |
| J · Performance | 5 | Image alt-text coverage ≥80% (+3) · page weight under 500KB (+2). |
Grade bands
- 90-100 Excellent - site is positioned strongly for AI citations.
- 70-89 Good - most signals present; small gaps remain.
- 50-69 Needs work - meaningful gaps that the Fix tools will close.
- 0-49 Poor - the site is largely invisible to AI search; the Fix pillar is the highest-leverage starting point.
What we don't claim
A 100/100 score does not guarantee citations. Citation choice happens inside each AI model in real time and depends on the prompt, the user's context, the model's training cut-off, and many factors outside any audit's reach. What a high score does is remove every technical reason not to cite you.
Versioning
When we change weights or add a category, we bump the rubric version and announce it in the blog. Old audits are scored under the rubric version they ran against. Current rubric: v1.0.