| Output | What it means |
|---|---|
| Obvlo AI Visibility Score | A weighted 0-100 readiness score focused on commercial AI visibility. |
| Agentic Browsing parity | A separate pass-ratio style signal for applicable agent-readiness checks. |
Overview
The health check audits a submitted page and its domain across 3 categories and 23 individual check results. Some checks are informational and do not affect the 0-100 score.| Category | Checks | Raw max | Displayed weight |
|---|---|---|---|
| Infrastructure | SSL, Sitemap, Robots.txt, Indexability, AI Crawler Accessibility, PageSpeed Performance, Layout Stability, PageSpeed Accessibility, PageSpeed Best Practices, PageSpeed SEO | 45 | 25 |
| AI readiness | Structured Data, FAQ Markup, WebMCP Schema Validity, llms.txt*, Registered WebMCP Tools*, Forms Missing Declarative WebMCP* | 22 | 25 |
| Page analysis | Semantic HTML, Content Structure, Content Depth, Content Freshness, Citation Readiness, Internal Linking, Accessibility for Agents | 68 | 50 |
| Total | 23 check results | 135 | 100 |
How the score works
Each scored check produces a raw score. Raw scores are summed within their category, then normalized to that category’s displayed weight. This keeps the headline score on a stable 0-100 scale even as individual check weights change. The category weights are:| Category | Score weight |
|---|---|
| Infrastructure | 25 points |
| AI readiness | 25 points |
| Page analysis | 50 points |
round((36 / 45) * 25) = 20 of the 25 Infrastructure points. The three
normalized category scores are then added together and capped at 100.
Individual check statuses usually follow these thresholds:
| Status | Threshold |
|---|---|
| Pass | At least 90% of the check’s max score |
| Warn | At least 50%, but below pass |
| Fail | Below 50% |
| Info | Informational signal with no score impact |
How we fetch pages
Most checks need the submitted page’s HTML. Obvlo uses a two-layer fetch model:- Direct HTTPS fetch with realistic browser headers. This mirrors the kind of request many search and AI crawlers send.
- Residential proxy fallback when direct fetches are blocked by WAF or bot-protection systems such as Cloudflare or Sucuri.
Infrastructure
Infrastructure checks verify whether crawlers and agents can reach, trust, render, and revisit the page reliably.1. SSL certificate
Max score: 3 This check establishes a TLS connection to the domain on port 443 and reads the certificate expiry and issuer chain.| Outcome | Score | Status |
|---|---|---|
| Valid certificate, at least 14 days until expiry | 3 | Pass |
| Valid certificate, fewer than 14 days until expiry | 2 | Warn |
| Certificate expired | 0 | Fail |
| Incomplete certificate chain | 0 | Fail |
| No certificate or connection refused | 0 | Fail |
2. Sitemap
Max score: 4 This check probes common sitemap locations, then falls back to sitemap directives insiderobots.txt:
/sitemap.xml/sitemap_index.xml/wp-sitemap.xmlSitemap:entries inrobots.txt
| Outcome | Score | Status |
|---|---|---|
| Valid XML sitemap found | 4 | Pass |
| Blocked by WAF or bot protection | 0 | Warn |
| No sitemap found | 0 | Fail |
3. Robots.txt
Max score: 4 This check fetches/robots.txt and evaluates validity, sitemap references,
blanket blocking, and AI crawler directives.
| Signal | Score impact |
|---|---|
| Valid robots.txt with a sitemap reference | +2 |
| AI directives present and no search-mode bots blocked | +2 |
| AI directives present but some search-mode bots blocked | +1 |
| No AI-specific directives | +0 |
Blanket Disallow: / | Fails the check |
| Category | Examples | Blocking impact |
|---|---|---|
| Search-mode bots | OAI-SearchBot, PerplexityBot, Bingbot | Penalized because content may lose AI answer visibility. |
| Training-mode bots | GPTBot, ChatGPT-User, Google-Extended, ClaudeBot | Treated as a legitimate content-protection choice. |
4. Indexability and snippet eligibility
Max score: 4 This check scans the entry page for directives that prevent indexing or prevent the page from being shown with snippets. It checks:<meta name="robots"><meta name="googlebot">X-Robots-Tagresponse headersdata-nosnippetattributes in page content
| Outcome | Score | Status |
|---|---|---|
| Indexable, no snippet restrictions | 4 | Pass |
data-nosnippet present on some content | 3 | Warn |
Restrictive max-snippet from 1 to 49 characters | 2 | Warn |
nosnippet or max-snippet:0 | 0 | Fail |
noindex or none | 0 | Fail |
| WAF or SSL issue prevents verification | 0 | Warn |
5. AI crawler accessibility
Max score: 5 This check tests whether the submitted page is reachable by a simple HTTP client similar to those used by many AI crawlers.| Outcome | Score | Status |
|---|---|---|
| Direct fetch returns valid HTML content larger than 5 KB | 5 | Pass |
| Direct fetch returns HTTP 200 but a small likely challenge page | 3 | Warn |
| Direct fetch is blocked, but headless fallback recovers the page | 2 | Warn |
| Direct fetch is blocked and fallback cannot recover the page | 0 | Fail |
| Direct fetch returns a non-blocked error such as 404 or 500 | 0 | Fail |
6. PageSpeed and layout stability
Max score: 25 total, split across 5 sub-checks Obvlo runs the submitted page through the Google PageSpeed Insights API in mobile mode. Four Lighthouse categories are scored, and the Performance response also provides the Cumulative Layout Shift signal used for Layout Stability.| Sub-check | Source | Max score |
|---|---|---|
| PageSpeed Performance | Lighthouse Performance score | 5 |
| Layout Stability | Lighthouse Cumulative Layout Shift audit | 5 |
| PageSpeed Accessibility | Lighthouse Accessibility score | 5 |
| PageSpeed Best Practices | Lighthouse Best Practices score | 5 |
| PageSpeed SEO | Lighthouse SEO score | 5 |
| Lighthouse score | Mapped score | Status |
|---|---|---|
| 90-100 | 5 | Pass |
| 50-89 | 3-4 | Warn |
| 20-49 | 1-2 | Fail |
| 0-19 | 0 | Fail |
AI readiness
AI readiness checks evaluate whether the page provides structured signals that help AI systems understand content, extract answers, and identify agent-usable actions.7. Structured data
Max score: 12 This check extracts JSON-LD structured data from the homepage and the submitted entry page. Schema types are grouped into site-level and page-level signals.| Group | Schema types scored | Purpose |
|---|---|---|
| Site-level | Organization, LocalBusiness, Hotel, LodgingBusiness, WebSite, WebPage | Establishes entity identity. |
| Page-level | Article, BlogPosting, NewsArticle, HowTo, FAQPage, BreadcrumbList, TouristDestination, Event, Product, Review | Describes the page content type. |
| Condition | Score |
|---|---|
| 2 or more site-level types | 6 |
| 1 site-level type | 4 |
| 2 or more page-level types | 6 |
| 1 page-level type | 4 |
| No structured data | 0 |
8. FAQ markup
Max score: 6 This check looks for machine-readable FAQ schema and visible FAQ-style HTML.| Outcome | Score | Status |
|---|---|---|
FAQPage JSON-LD found | 6 | Pass |
| FAQ-style HTML found without schema | 3 | Warn |
| No FAQ content or schema | 0 | Fail |
9. llms.txt
Max score: 0 This check requests/llms.txt and, when present, also checks for
/llms-full.txt.
| Outcome | Score | Status |
|---|---|---|
llms.txt found | 0 | Info |
llms.txt and llms-full.txt found | 0 | Info |
llms.txt missing | 0 | Info, not applicable |
| Retrieval blocked or server error | 0 | Warn |
llms.txt does
not reduce the AI Visibility Score. Retrieval failures can still produce a
warning because they may indicate that machine-readable resources are not
consistently reachable.
10. Registered WebMCP tools
Max score: 0 This informational check looks for WebMCP-style tool registration signals:- Declarative elements with a
toolnameattribute - Imperative calls to
document.modelContext.registerTool(...)
11. Forms missing declarative WebMCP
Max score: 0 This informational check counts page forms and whether each form includes both:toolnametooldescription
12. WebMCP schema validity
Max score: 4 This scored check validates whether WebMCP-style form metadata is complete enough for agents to understand.| Outcome | Score | Status |
|---|---|---|
| Valid WebMCP tool forms found | 4 | Pass |
| No forms found | 4 | Pass |
| Plain forms found but no WebMCP tool metadata | 2 | Warn |
| Metadata is usable but has warnings | 2 | Warn |
| Blocking metadata issues found | 0 | Fail |
| Page cannot be fetched for validation | 0 | Warn |
toolname but no tooldescription, a
tool form with tooldescription but no toolname, or user-supplied fields in a
tool form without a name attribute. Warnings include named fields that lack a
label or toolparamdescription.
This check is scored because incomplete action metadata can make agent-operated
forms unreliable.
Page analysis
Page analysis checks evaluate the actual content and HTML structure that determine whether AI systems can select, summarize, cite, and operate the page. Where possible, these checks focus on the primary content area rather than site chrome such as headers, navigation, and footers.13. Semantic HTML and meta
Max score: 10 This check evaluates page structure and metadata signals.| Aspect | Max | What is checked |
|---|---|---|
| Semantic elements | 3 | Presence of elements such as <article>, <main>, <section>, <nav>, <aside>, <header>, and <footer>. |
| Title and meta description | 2 | Title exists and is no more than 70 characters; meta description is 50-160 characters. |
| Canonical URL | 1 | <link rel="canonical"> is present. |
| Open Graph and Twitter cards | 2 | At least three of og:title, og:description, og:image, and twitter:card. |
| Language declaration | 1 | lang attribute on the <html> element. |
| ARIA landmarks | 1 | Explicit landmark roles or implicit landmarks such as <main>. |
14. Content structure
Max score: 12 This check evaluates how well the content is organized for fragment extraction.| Aspect | Max | Criteria |
|---|---|---|
| Heading hierarchy | 3 | Single H1, no skipped heading levels, descriptive heading text. |
| Q&A format | 2 | Headings phrased as questions. |
| Snippable content | 3 | Lists, tables, <details> elements, and inline-list paragraphs. |
| Front-loaded answers | 2 | Section-opening paragraphs are concise and answer-bearing. |
| Self-contained sections | 2 | Sections make sense without relying on phrases such as “as mentioned above”. |
15. Content depth
Max score: 10 This check evaluates whether the page has enough substance to serve as a credible citation source.| Aspect | Max | Criteria |
|---|---|---|
| Word count | 3 | At least 800 words = 3, at least 500 = 2, at least 300 = 1. |
| Topic coverage | 3 | Unique H2/H3 sub-topics: at least 5 = 3, at least 3 = 2, at least 1 = 1. |
| Factual density | 2 | Statistics, percentages, dates, measurements, or currencies. |
| Content visibility | 2 | Penalizes substantive content hidden in accordions, tabs, or collapsed elements. |
__NEXT_DATA__, Nuxt markers, React
root markers, or Angular ng-version, Obvlo flags a high-impact recommendation
to add server-side rendering or pre-rendering.
16. Content freshness
Max score: 8 This check evaluates whether the page shows current and recently reviewed signals.| Aspect | Max | Criteria |
|---|---|---|
| JSON-LD date metadata | 3 | Recent dateModified earns the highest score; older or publish-only dates earn less. |
| Last-Modified HTTP header | 2 | Recent server-level modification headers earn more. |
| Visible dates | 1 | Publication or update dates visible to users. |
| Time-sensitive signals | 2 | Current year, “updated” language, or seasonal context. |
dateModified signal is especially useful because it indicates active
review rather than one-time publication.
17. Citation readiness
Max score: 10 This check evaluates whether an AI system can confidently cite the page with attribution.| Aspect | Max | Criteria |
|---|---|---|
| External references | 3 | Outbound links to authoritative external domains from primary content. |
| Statistics and data | 2 | Percentages, measurements, study references, or “according to” phrases. |
| Quotations | 2 | Blockquotes, <q> elements, or meaningful inline quotes. |
| Author and expertise signals | 2 | Author schema, byline elements, or rel="author" links. |
| Marketing fluff penalty | -1 | Penalizes excessive vague superlatives. |
18. Internal linking
Max score: 10 This check evaluates whether the page connects to other useful pages on the same site.| Aspect | Max | Criteria |
|---|---|---|
| Internal link count | 3 | Links from primary content to other pages on the same site. |
| Link text quality | 2 | Descriptive anchor text instead of generic labels such as “click here”. |
| Breadcrumb navigation | 2 | Breadcrumb schema and visible breadcrumbs. |
| Linked page quality | 3 | Up to five linked pages are fetched to verify they are reachable. |
19. Accessibility for agents
Max score: 8 This check evaluates a focused accessibility subset that matters for agents using the accessibility tree to identify controls and operate pages.| Aspect | Max | Criteria |
|---|---|---|
| Named interactive elements | 3 | Links, buttons, inputs, selects, textareas, and role-based controls have accessible names. |
| Labelled form fields | 2 | User-supplied form fields have labels or equivalent accessible names. |
| Visible interactive elements | 2 | Interactive elements are not hidden from the accessibility tree. |
| Valid role relationships | 1 | For example, menuitem roles appear inside menu or menubar containers. |
| Score | Status |
|---|---|
| 7-8 | Pass |
| 4-6 | Warn |
| 0-3 | Fail |
Agentic Browsing parity
Google’s Lighthouse Agentic Browsing category is experimental. Obvlo does not fold it directly into the 0-100 AI Visibility Score. Instead, Obvlo reports Agentic Browsing parity separately. The parity result counts applicable agent-readiness checks and reports:| Field | Meaning |
|---|---|
| Passed | Applicable checks with pass or info status. |
| Warnings | Applicable checks with warn status. |
| Failed | Applicable checks with fail status. |
| Applicable | Total checks included in the parity calculation. |
| Ratio | passed / applicable, rounded to two decimal places. |
| Status | pass, warn, fail, or not-applicable. |
| Check | Category | Score impact |
|---|---|---|
llms.txt | AI readiness | No 0-100 score impact. Missing files are not applicable; found files and retrieval warnings are applicable. |
| Registered WebMCP Tools | AI readiness | Informational. Currently surfaced as a discovery signal rather than a scored requirement. |
| Forms Missing Declarative WebMCP | AI readiness | Informational. Applicable when forms exist. |
| WebMCP Schema Validity | AI readiness | Scored, max 4. |
| Layout Stability | Infrastructure | Scored, max 5. |
| Accessibility for Agents | Page analysis | Scored, max 8. |
| Condition | Parity status |
|---|---|
| No applicable checks | Not applicable |
| Any applicable check failed | Fail |
| No failures, but at least one warning | Warn |
| All applicable checks passed or were informational | Pass |
Agentic Browsing parity is a methodology signal. It is not a promise that any
specific AI assistant will use a site in a specific way.
Score interpretation guide
The overall score is normalized to a 0-100 scale.| Overall score | Rating | Interpretation |
|---|---|---|
| 90-100 | Excellent | The site is highly ready for AI visibility. Content should be competitive in AI-generated answers. |
| 75-89 | Good | Strong foundation with specific areas to improve. |
| 50-74 | Needs work | Significant gaps remain. Competitors with stronger foundations may be cited more often. |
| 25-49 | Poor | Major crawlability, structure, or content issues are limiting AI visibility. |
| 0-24 | Critical | The site may be effectively invisible or unusable for many AI systems. |
What changed in the latest methodology update
The latest implementation update added Agentic Browsing parity while keeping the AI Visibility Score normalized to 100. Added- AI Crawler Accessibility as a scored Infrastructure check worth 5 raw points.
- Layout Stability as a scored Infrastructure sub-check worth 5 raw points, derived from Lighthouse Cumulative Layout Shift.
- Registered WebMCP Tools as an informational AI readiness signal.
- Forms Missing Declarative WebMCP as an informational AI readiness signal.
- WebMCP Schema Validity as a scored AI readiness check worth 4 raw points.
- Accessibility for Agents as a scored Page Analysis check worth 8 raw points.
- Agentic Browsing parity as a separate stored and streamed result with passed, applicable, warning, failed, ratio, and status fields.
- Infrastructure raw max increased to 45.
- AI Readiness raw max increased to 22.
- Page Analysis raw max increased to 68.
llms.txtremains non-scoring and optional, but blocked or server-error retrieval can now count as an applicable warning for parity.- The 0-100 score remains category-normalized at 25 / 25 / 50, so new raw checks do not make the overall score exceed 100.
Why scores may change over time
Scores can change when:- A site changes templates, content, redirects, firewall rules, or analytics setup.
- Search engines and AI assistants change how they fetch and interpret pages.
- Obvlo updates the methodology to reflect stronger evidence or new public guidance.
- Optional emerging checks move from informational to warning-capable or scored once the underlying standard becomes more stable.
How to improve your score
The most reliable improvements come from practical fundamentals:- Keep pages crawlable without blocking legitimate search and AI crawlers.
- Publish clean sitemaps and avoid accidental
noindexornosnippetrules. - Use HTTPS with a complete certificate chain.
- Improve mobile performance and reduce layout shift.
- Add structured data for key page types and business entities.
- Write useful, specific content with clear headings and citation-ready facts.
- Use semantic HTML, descriptive links, and accessible labels for controls and forms.
- Keep content fresh and internally linked.
- Treat WebMCP and
llms.txtas emerging enhancements, especially for important forms and workflows.