Site Audit
AI visibility has a floor set by your own site. If GPTBot can’t fetch your homepage, if your content only exists after JavaScript runs, or if you have no pages that answer real questions, no prompt strategy will move the score. The Site Audit measures that floor.
It has two halves, run together and merged into one ranked fix list.
Structural checks
Grouped by the question they answer.
Can engines reach it
| Check | What passing looks like |
|---|---|
| robots.txt · AI crawler access | Present and not blocking GPTBot, ClaudeBot, PerplexityBot, Google-Extended |
| Meta robots · indexability | No noindex on the homepage |
| Sitemap | sitemap.xml found, via robots.txt or the default path |
| llms.txt | Optional — an emerging standard listing your AI-readable content |
| Readable without JavaScript | Substantial content present in the raw HTML |
The JavaScript check is the one that surprises people most. GPTBot, ClaudeBot and PerplexityBot don’t execute JavaScript. A client-rendered single-page app can look completely empty to them while looking perfect in a browser. Server-side rendering or prerendering is the fix.
Can engines understand it
| Check | What passing looks like |
|---|---|
| Page title | Present, roughly 30–60 characters, states brand and what you do |
| Meta description | Present, roughly 120–160 characters |
| Canonical URL | Self-referencing, unless pointing elsewhere is intentional |
| Open Graph & Twitter Card | og:title, og:description, og:image present — AI chat UIs use them for citation previews |
| Language & hreflang | lang declared; hreflang alternates for multi-language sites |
| H1 heading | Exactly one |
| Image alt text | 80%+ coverage |
| Favicon | Declared — some chat interfaces show it beside citations of your site |
| Homepage structured data | Organization and WebSite JSON-LD, so engines can identify you as an entity |
| Blog & article schema | A content section exists, and posts carry Article/BlogPosting JSON-LD with headline, author and publish date |
The content-section check deserves its own note. AI engines cite pages that answer questions. A site with no articles addressing what customers actually ask gives them almost nothing to cite you for — which shows up as a low mention rate no amount of technical tuning will fix.
Lighthouse
Run against your homepage through Google PageSpeed Insights, usually 15–30 seconds:
| Category | Measures | Affects |
|---|---|---|
| Performance | Load and interactivity — LCP, total blocking time, layout shift | Bounce rate, conversions, search ranking |
| Accessibility | Contrast, labels, keyboard navigation | Audience reach, WCAG/ADA compliance |
| Best Practices | HTTPS, console errors, safe dependencies, image sizing | Trust, security, maintainability |
| SEO | Crawlability, meta tags, mobile-friendliness | Organic traffic and discoverability |
Scores are banded as Good, Needs work or Poor on the panel, and each carries an AI-generated reading of what that specific score means for this site — not a generic definition of the metric.
Priority fixes
Structural failures and Lighthouse recommendations are merged into one list ranked by severity:
| Severity | Typical member |
|---|---|
| Critical | AI crawlers blocked, homepage noindex, content invisible without JavaScript |
| High | No sitemap, no structured data, no content section |
| Medium | Missing meta description, multiple H1s, weak alt coverage |
| Low | Missing favicon, absent llms.txt |
Structural checks can reach Critical; Lighthouse recommendations top out at High, since a slow page is a real problem but not a blocking one. Each item carries a What to do line, so the list works as a handover to whoever owns the site.
When the audit can’t run
If the homepage can’t be fetched, the affected checks are skipped and named rather than marked as failures:
| Situation | What you’ll see |
|---|---|
| Behind bot protection | ”requires a real browser” — the site returns a challenge to non-browser clients |
| Timed out | The request exceeded 20 seconds |
| HTTP error / DNS failure | The status code or connection error, verbatim |
Bot protection is worth investigating rather than ignoring: whatever blocks the audit is likely blocking AI crawlers too, which is itself the finding.
If Lighthouse produces no data, the SEO term is dropped from the Final Score entirely rather than counted as zero — a missing measurement is not a failing grade. See Final Score.
Cadence
Structural checks change only when you change the site, so re-run after a deploy that touches rendering, routing, robots or templates. Lighthouse fluctuates run to run; treat a single-run swing as noise and the trend as signal.
See these numbers for your own brand The free plan probes every engine we support — no card required.
Start free