{"scope":"site","url":"https://example.com/","finalUrl":"https://example.com/","focusUrl":"https://example.com/","domain":"example.com","score":37,"grade":"F","gradeLabel":"Invisible to LLMs","pillars":[{"id":"discovery","name":"Discovery & Manifests","shortName":"Discovery","description":"Can an agent find a curated, standards-compliant index of the content?","score":8,"checks":[{"weight":3,"scope":"site","id":"llms-txt","label":"llms.txt manifest","status":"fail","summary":"Missing","detail":"No /llms.txt file was found at the site root, so agents have no curated entry point.","protocol":"llmstxt.org · H1 + markdown index","evidence":{"file":"/llms.txt","line":null,"snippet":null},"recommendation":"Publish /llms.txt with one H1, a blockquote summary and H2 sections linking to the pages an LLM should read first.","fix":{"language":"markdown","code":"# Your site name\n\n> One sentence explaining what this site covers and who it is for.\n\n## Documentation\n- [Getting started](https://example.com/docs/start)\n- [API reference](https://example.com/docs/api)\n- [Authentication](https://example.com/docs/auth)"}},{"weight":1,"scope":"site","id":"llms-full-txt","label":"llms-full.txt bundle","status":"warn","summary":"Not published","detail":"The optional expanded manifest is not published.","protocol":"llmstxt.org · llms-full.txt","evidence":{"file":"/llms-full.txt","line":null,"snippet":null},"recommendation":"Publish /llms-full.txt as one unpaginated markdown file containing the long-form content agents should ingest without crawling.","fix":{"language":"markdown","code":"# Your site name\n\n> The complete documentation bundle.\n\n## Getting started\n\nFull page content in markdown, with no `?page=` links and no truncated sections."}},{"weight":2,"scope":"site","id":"sitemap","label":"sitemap + robots directive","status":"fail","summary":"Missing","detail":"No usable XML sitemap was found at /sitemap.xml or the locations referenced in robots.txt.","protocol":"sitemaps.org · RFC 9309 Sitemap directive","evidence":{"file":"/sitemap.xml","line":null,"snippet":null},"recommendation":"Publish an XML sitemap at /sitemap.xml, keep it fresh, and reference it from robots.txt with a Sitemap: directive.","fix":{"language":"robots","code":"# robots.txt\nSitemap: https://example.com/sitemap.xml\n\n# /sitemap.xml\n<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<urlset xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\">\n  <url><loc>https://example.com/docs/start</loc></url>\n</urlset>"}}]},{"id":"access","name":"Crawler Access Rules","shortName":"Access","description":"Are the user agents that power AI answers explicitly allowed in?","score":93,"checks":[{"weight":1,"scope":"site","id":"robots-reachable","label":"robots.txt reachable","status":"warn","summary":"Missing","detail":"No robots.txt exists, so crawler access is implicit rather than explicit.","protocol":"RFC 9309 §2.2","evidence":{"file":"/robots.txt","line":null,"snippet":null},"recommendation":"Publish a robots.txt that states your crawler policy explicitly, including the AI user agents you want to allow or block.","fix":{"language":"robots","code":"User-agent: *\nAllow: /\n\nUser-agent: GPTBot\nAllow: /\n\nUser-agent: ClaudeBot\nAllow: /\n\nUser-agent: Google-Extended\nAllow: /\n\nSitemap: https://example.com/sitemap.xml"}},{"weight":1,"scope":"site","id":"ai-policy","label":"Explicit AI user-agent policy","status":"warn","summary":"No robots.txt","detail":"There is no robots.txt to hold an explicit AI crawler policy.","protocol":"RFC 9309 §2.2.1","evidence":{"file":"/robots.txt","line":null,"snippet":null},"recommendation":"Add named Google-Extended, ClaudeBot and GPTBot groups with the access you intend to grant.","fix":{"language":"robots","code":"User-agent: Google-Extended\nAllow: /\n\nUser-agent: ClaudeBot\nAllow: /\n\nUser-agent: GPTBot\nAllow: /"}},{"weight":2,"scope":"site","id":"bot-gptbot","label":"GPTBot access","status":"pass","summary":"Allowed by default","detail":"OpenAI: No robots.txt was found, so crawlers are not restricted.","protocol":"RFC 9309 §2.2.1","evidence":{"file":"/robots.txt","line":null,"snippet":null},"recommendation":"Add an explicit GPTBot group so the allow decision is auditable rather than inherited from a wildcard.","fix":{"language":"robots","code":"User-agent: GPTBot\nAllow: /"}},{"weight":2,"scope":"site","id":"bot-claudebot","label":"ClaudeBot access","status":"pass","summary":"Allowed by default","detail":"Anthropic: No robots.txt was found, so crawlers are not restricted.","protocol":"RFC 9309 §2.2.1","evidence":{"file":"/robots.txt","line":null,"snippet":null},"recommendation":"Add an explicit ClaudeBot group so the allow decision is auditable rather than inherited from a wildcard.","fix":{"language":"robots","code":"User-agent: ClaudeBot\nAllow: /"}},{"weight":2,"scope":"site","id":"bot-google-extended","label":"Google-Extended access","status":"pass","summary":"Allowed by default","detail":"Google: No robots.txt was found, so crawlers are not restricted.","protocol":"RFC 9309 §2.2.1","evidence":{"file":"/robots.txt","line":null,"snippet":null},"recommendation":"Add an explicit Google-Extended group so the allow decision is auditable rather than inherited from a wildcard.","fix":{"language":"robots","code":"User-agent: Google-Extended\nAllow: /"}},{"weight":2,"scope":"site","id":"bot-perplexitybot","label":"PerplexityBot access","status":"pass","summary":"Allowed by default","detail":"Perplexity: No robots.txt was found, so crawlers are not restricted.","protocol":"RFC 9309 §2.2.1","evidence":{"file":"/robots.txt","line":null,"snippet":null},"recommendation":"Add an explicit PerplexityBot group so the allow decision is auditable rather than inherited from a wildcard.","fix":{"language":"robots","code":"User-agent: PerplexityBot\nAllow: /"}},{"weight":2,"scope":"site","id":"bot-bytespider","label":"Bytespider access","status":"pass","summary":"Allowed by default","detail":"ByteDance: No robots.txt was found, so crawlers are not restricted.","protocol":"RFC 9309 §2.2.1","evidence":{"file":"/robots.txt","line":null,"snippet":null},"recommendation":"Add an explicit Bytespider group so the allow decision is auditable rather than inherited from a wildcard.","fix":{"language":"robots","code":"User-agent: Bytespider\nAllow: /"}},{"weight":1,"scope":"page","id":"meta-robots","label":"robots meta directives","status":"pass","summary":"1 / 1 pages pass","detail":"1 of 1 sampled pages pass.","protocol":"HTML robots meta directives","evidence":{"file":"/","line":null,"snippet":null},"score":100,"sample":{"total":1,"passed":1,"warned":0,"failed":0,"affected":[]}},{"weight":2,"scope":"page","id":"x-robots-tag","label":"X-Robots-Tag header","status":"pass","summary":"1 / 1 pages pass","detail":"1 of 1 sampled pages pass.","protocol":"X-Robots-Tag · RFC 9309","evidence":{"file":"HTTP response headers","line":null,"snippet":null},"score":100,"sample":{"total":1,"passed":1,"warned":0,"failed":0,"affected":[]}}]},{"id":"parseability","name":"Static Parseability","shortName":"Parse","description":"Does the first HTML response read like a document, not a script bundle?","score":31,"checks":[{"weight":1.5,"scope":"page","id":"h1","label":"Single H1","status":"fail","summary":"0 / 1 pages pass","detail":"0 of 1 sampled pages pass · 1 fail. Failing pages: https://example.com/.","protocol":"HTML heading outline","evidence":{"file":"/","line":null,"snippet":null},"recommendation":"Give the page exactly one descriptive H1 that names the topic.","fix":{"language":"html","code":"<h1>Page topic in one clear sentence</h1>"},"score":0,"sample":{"total":1,"passed":0,"warned":0,"failed":1,"affected":["https://example.com/"]}},{"weight":2,"scope":"page","id":"heading-order","label":"Heading sequence","status":"fail","summary":"0 / 1 pages pass","detail":"0 of 1 sampled pages pass · 1 fail. Failing pages: https://example.com/.","protocol":"Semantic HTML heading hierarchy","evidence":{"file":"/","line":null,"snippet":null},"recommendation":"Keep heading levels sequential (H1 → H2 → H3) so the document outline is unambiguous.","fix":{"language":"html","code":"<h1>Page topic</h1>\n  <h2>First section</h2>\n    <h3>Supporting detail</h3>\n  <h2>Second section</h2>"},"score":0,"sample":{"total":1,"passed":0,"warned":0,"failed":1,"affected":["https://example.com/"]}},{"weight":2.5,"scope":"page","id":"snr","label":"Static HTML signal-to-noise","status":"pass","summary":"1 / 1 pages pass","detail":"1 of 1 sampled pages pass.","protocol":"Static HTML SNR ≥ 65%","evidence":{"file":"/","line":1,"snippet":"<!doctype html><html lang=en><head><meta charset=utf-8><link rel=icon href=data:,><meta name=viewport content=\"width=device-width,initial-scale=1\"><title>Example Domain</title><style>html{color-scheme:light dark;background:light-dark(#eee,#"},"score":100,"sample":{"total":1,"passed":1,"warned":0,"failed":0,"affected":[]}},{"weight":2,"scope":"page","id":"ssr-content","label":"SSR payload readability","status":"fail","summary":"0 / 1 pages pass","detail":"0 of 1 sampled pages pass · 1 fail. Failing pages: https://example.com/.","protocol":"No-JS initial response","evidence":{"file":"/","line":1,"snippet":"<!doctype html><html lang=en><head><meta charset=utf-8><link rel=icon href=data:,><meta name=viewport content=\"width=device-width,initial-scale=1\"><title>Example Domain</title><style>html{color-scheme:light dark;background:light-dark(#eee,#"},"recommendation":"Render primary content on the server (SSR/SSG) so it exists in the first HTML response.","fix":{"language":"html","code":"<!-- Server-render the primary content, not a client-only shell -->\n<main>\n  <h1>Page topic</h1>\n  <p>At least 600 characters of readable content in the initial response.</p>\n</main>"},"score":0,"sample":{"total":1,"passed":0,"warned":0,"failed":1,"affected":["https://example.com/"]}}]},{"id":"structured","name":"Structured Machine Interfaces","shortName":"Schema","description":"Can agents classify the page and execute against a schema without guessing?","score":17,"checks":[{"weight":2.5,"scope":"page","id":"json-ld","label":"JSON-LD presence & syntax","status":"fail","summary":"0 / 1 pages pass","detail":"0 of 1 sampled pages pass · 1 fail. Failing pages: https://example.com/.","protocol":"schema.org JSON-LD","evidence":{"file":"/","line":null,"snippet":null},"recommendation":"Add a JSON-LD block with @context and @type so the page can be classified without guessing.","fix":{"language":"json","code":"{\n  \"@context\": \"https://schema.org\",\n  \"@type\": \"SoftwareApplication\",\n  \"headline\": \"Page topic\",\n  \"description\": \"One-sentence summary of the page.\"\n}"},"score":0,"sample":{"total":1,"passed":0,"warned":0,"failed":1,"affected":["https://example.com/"]}},{"weight":1.5,"scope":"page","id":"schema-types","label":"Profile schema types","status":"fail","summary":"0 / 1 pages pass","detail":"0 of 1 sampled pages pass · 1 fail. Failing pages: https://example.com/.","protocol":"schema.org · SoftwareApplication / WebApplication / FAQPage","evidence":{"file":"/","line":null,"snippet":null},"recommendation":"Add a SoftwareApplication object (or an equivalent saas / product type) to the page's JSON-LD.","fix":{"language":"json","code":"{\n  \"@context\": \"https://schema.org\",\n  \"@type\": \"SoftwareApplication\",\n  \"name\": \"Your site or page\",\n  \"description\": \"One-sentence summary matched to this profile.\"\n}"},"score":0,"sample":{"total":1,"passed":0,"warned":0,"failed":1,"affected":["https://example.com/"]}},{"weight":1.5,"scope":"site","id":"openapi","label":"OpenAPI description","status":"warn","summary":"Not found","detail":"No OpenAPI description was found at /openapi.json or the usual .well-known paths.","protocol":"OpenAPI 3 · /openapi.json","evidence":{"file":"/openapi.json","line":null,"snippet":null},"recommendation":"If the site exposes an API, publish an OpenAPI description at /openapi.json so agents can call it correctly.","fix":{"language":"json","code":"{\n  \"openapi\": \"3.1.0\",\n  \"info\": {\n    \"title\": \"Your API\",\n    \"version\": \"1.0.0\"\n  },\n  \"paths\": {}\n}"}},{"weight":0.5,"scope":"site","id":"well-known","label":".well-known discovery","status":"warn","summary":"Nothing found","detail":"No .well-known discovery documents were found.","protocol":"RFC 8615 · .well-known","evidence":{"file":"/.well-known/","line":null,"snippet":null},"recommendation":"Add /.well-known/security.txt (and ai-plugin.json if you expose tools) so agents can discover machine-readable policies.","fix":{"language":"text","code":"Contact: mailto:security@example.com\nExpires: 2030-01-01T00:00:00.000Z\nPreferred-Languages: en\nCanonical: https://example.com/.well-known/security.txt"}}]}],"classification":{"type":"saas","label":"SaaS / product","confidence":15,"method":"heuristic","detected":{"type":"saas","label":"SaaS / product","confidence":15},"alternatives":[{"type":"saas","label":"SaaS / product","confidence":15},{"type":"portfolio","label":"Portfolio","confidence":15},{"type":"docs","label":"Documentation","confidence":15},{"type":"ecommerce","label":"E-commerce","confidence":15},{"type":"local-business","label":"Local business","confidence":15},{"type":"blog-media","label":"Blog / media","confidence":15}],"signals":[{"type":"saas","label":"Fallback profile","detail":"No strong profile signals were found, so the audit defaulted to SaaS. Override it in the workspace if this site is a portfolio, store, local business or publication.","weight":0,"source":"fallback"}],"compatibility":{"openApiScored":true,"recommendedSchema":["SoftwareApplication","WebApplication","FAQPage"],"note":"OpenAPI is scored. Schema expectations focus on SoftwareApplication, WebApplication and FAQPage."}},"profile":{"url":"https://example.com/","finalUrl":"https://example.com/","domain":"example.com","title":"Example Domain","description":"","siteName":"Example Domain","language":"en"},"pages":[{"url":"https://example.com/","label":"Home","section":"Home","source":"home"}],"pageResults":[{"url":"https://example.com/","finalUrl":"https://example.com/","label":"Home","section":"Home","source":"home","outcome":"analyzed","status":"fail","score":37,"grade":"F","checks":[{"weight":1,"scope":"page","id":"meta-robots","label":"robots meta directives","status":"pass","summary":"Not set","detail":"No The robots meta tag directives were returned, so nothing blocks indexing or AI ingestion.","protocol":"HTML robots meta directives","evidence":{"file":"/","line":null,"snippet":null}},{"weight":2,"scope":"page","id":"x-robots-tag","label":"X-Robots-Tag header","status":"pass","summary":"Not set","detail":"No X-Robots-Tag directives were returned, so nothing blocks indexing or AI ingestion.","protocol":"X-Robots-Tag · RFC 9309","evidence":{"file":"HTTP response headers","line":null,"snippet":null}},{"weight":1.5,"scope":"page","id":"h1","label":"Single H1","status":"fail","summary":"Missing","detail":"No H1 heading was found in the content region.","protocol":"HTML heading outline","evidence":{"file":"/","line":null,"snippet":null},"recommendation":"Give the page exactly one descriptive H1 that names the topic.","fix":{"language":"html","code":"<h1>Page topic in one clear sentence</h1>"}},{"weight":2,"scope":"page","id":"heading-order","label":"Heading sequence","status":"fail","summary":"No headings","detail":"The page contains no heading elements for a parser to build an outline from.","protocol":"Semantic HTML heading hierarchy","evidence":{"file":"/","line":null,"snippet":null},"recommendation":"Keep heading levels sequential (H1 → H2 → H3) so the document outline is unambiguous.","fix":{"language":"html","code":"<h1>Page topic</h1>\n  <h2>First section</h2>\n    <h3>Supporting detail</h3>\n  <h2>Second section</h2>"}},{"weight":2.5,"scope":"page","id":"snr","label":"Static HTML signal-to-noise","status":"pass","summary":"100.0% signal","detail":"156 characters of content text against 0 characters of navigation, footer, banner and widget text. V2 requires at least 65% signal.","protocol":"Static HTML SNR ≥ 65%","evidence":{"file":"/","line":1,"snippet":"<!doctype html><html lang=en><head><meta charset=utf-8><link rel=icon href=data:,><meta name=viewport content=\"width=device-width,initial-scale=1\"><title>Example Domain</title><style>html{color-scheme:light dark;background:light-dark(#eee,#"}},{"weight":2,"scope":"page","id":"ssr-content","label":"SSR payload readability","status":"fail","summary":"156 chars in HTML","detail":"The initial HTML response contains little readable content, which suggests client-side rendering or a JavaScript gate.","protocol":"No-JS initial response","evidence":{"file":"/","line":1,"snippet":"<!doctype html><html lang=en><head><meta charset=utf-8><link rel=icon href=data:,><meta name=viewport content=\"width=device-width,initial-scale=1\"><title>Example Domain</title><style>html{color-scheme:light dark;background:light-dark(#eee,#"},"recommendation":"Render primary content on the server (SSR/SSG) so it exists in the first HTML response.","fix":{"language":"html","code":"<!-- Server-render the primary content, not a client-only shell -->\n<main>\n  <h1>Page topic</h1>\n  <p>At least 600 characters of readable content in the initial response.</p>\n</main>"}},{"weight":2.5,"scope":"page","id":"json-ld","label":"JSON-LD presence & syntax","status":"fail","summary":"Missing","detail":"No JSON-LD structured data was found in the page head.","protocol":"schema.org JSON-LD","evidence":{"file":"/","line":null,"snippet":null},"recommendation":"Add a JSON-LD block with @context and @type so the page can be classified without guessing.","fix":{"language":"json","code":"{\n  \"@context\": \"https://schema.org\",\n  \"@type\": \"SoftwareApplication\",\n  \"headline\": \"Page topic\",\n  \"description\": \"One-sentence summary of the page.\"\n}"}},{"weight":1.5,"scope":"page","id":"schema-types","label":"Profile schema types","status":"fail","summary":"0 / 3 found","detail":"The SaaS / product profile expects SoftwareApplication, WebApplication or FAQPage. Found: none.","protocol":"schema.org · SoftwareApplication / WebApplication / FAQPage","evidence":{"file":"/","line":null,"snippet":null},"recommendation":"Add a SoftwareApplication object (or an equivalent saas / product type) to the page's JSON-LD.","fix":{"language":"json","code":"{\n  \"@context\": \"https://schema.org\",\n  \"@type\": \"SoftwareApplication\",\n  \"name\": \"Your site or page\",\n  \"description\": \"One-sentence summary matched to this profile.\"\n}"}}],"title":"Example Domain","textChars":156,"snr":1,"h1Count":0,"headingCount":0,"jsonLdTypes":[],"metaRobots":"","xRobotsTag":null,"fetchMs":0}],"focusPage":{"url":"https://example.com/","finalUrl":"https://example.com/","label":"Home","section":"Home","source":"home","outcome":"analyzed","status":"fail","score":37,"grade":"F","checks":[{"weight":1,"scope":"page","id":"meta-robots","label":"robots meta directives","status":"pass","summary":"Not set","detail":"No The robots meta tag directives were returned, so nothing blocks indexing or AI ingestion.","protocol":"HTML robots meta directives","evidence":{"file":"/","line":null,"snippet":null}},{"weight":2,"scope":"page","id":"x-robots-tag","label":"X-Robots-Tag header","status":"pass","summary":"Not set","detail":"No X-Robots-Tag directives were returned, so nothing blocks indexing or AI ingestion.","protocol":"X-Robots-Tag · RFC 9309","evidence":{"file":"HTTP response headers","line":null,"snippet":null}},{"weight":1.5,"scope":"page","id":"h1","label":"Single H1","status":"fail","summary":"Missing","detail":"No H1 heading was found in the content region.","protocol":"HTML heading outline","evidence":{"file":"/","line":null,"snippet":null},"recommendation":"Give the page exactly one descriptive H1 that names the topic.","fix":{"language":"html","code":"<h1>Page topic in one clear sentence</h1>"}},{"weight":2,"scope":"page","id":"heading-order","label":"Heading sequence","status":"fail","summary":"No headings","detail":"The page contains no heading elements for a parser to build an outline from.","protocol":"Semantic HTML heading hierarchy","evidence":{"file":"/","line":null,"snippet":null},"recommendation":"Keep heading levels sequential (H1 → H2 → H3) so the document outline is unambiguous.","fix":{"language":"html","code":"<h1>Page topic</h1>\n  <h2>First section</h2>\n    <h3>Supporting detail</h3>\n  <h2>Second section</h2>"}},{"weight":2.5,"scope":"page","id":"snr","label":"Static HTML signal-to-noise","status":"pass","summary":"100.0% signal","detail":"156 characters of content text against 0 characters of navigation, footer, banner and widget text. V2 requires at least 65% signal.","protocol":"Static HTML SNR ≥ 65%","evidence":{"file":"/","line":1,"snippet":"<!doctype html><html lang=en><head><meta charset=utf-8><link rel=icon href=data:,><meta name=viewport content=\"width=device-width,initial-scale=1\"><title>Example Domain</title><style>html{color-scheme:light dark;background:light-dark(#eee,#"}},{"weight":2,"scope":"page","id":"ssr-content","label":"SSR payload readability","status":"fail","summary":"156 chars in HTML","detail":"The initial HTML response contains little readable content, which suggests client-side rendering or a JavaScript gate.","protocol":"No-JS initial response","evidence":{"file":"/","line":1,"snippet":"<!doctype html><html lang=en><head><meta charset=utf-8><link rel=icon href=data:,><meta name=viewport content=\"width=device-width,initial-scale=1\"><title>Example Domain</title><style>html{color-scheme:light dark;background:light-dark(#eee,#"},"recommendation":"Render primary content on the server (SSR/SSG) so it exists in the first HTML response.","fix":{"language":"html","code":"<!-- Server-render the primary content, not a client-only shell -->\n<main>\n  <h1>Page topic</h1>\n  <p>At least 600 characters of readable content in the initial response.</p>\n</main>"}},{"weight":2.5,"scope":"page","id":"json-ld","label":"JSON-LD presence & syntax","status":"fail","summary":"Missing","detail":"No JSON-LD structured data was found in the page head.","protocol":"schema.org JSON-LD","evidence":{"file":"/","line":null,"snippet":null},"recommendation":"Add a JSON-LD block with @context and @type so the page can be classified without guessing.","fix":{"language":"json","code":"{\n  \"@context\": \"https://schema.org\",\n  \"@type\": \"SoftwareApplication\",\n  \"headline\": \"Page topic\",\n  \"description\": \"One-sentence summary of the page.\"\n}"}},{"weight":1.5,"scope":"page","id":"schema-types","label":"Profile schema types","status":"fail","summary":"0 / 3 found","detail":"The SaaS / product profile expects SoftwareApplication, WebApplication or FAQPage. Found: none.","protocol":"schema.org · SoftwareApplication / WebApplication / FAQPage","evidence":{"file":"/","line":null,"snippet":null},"recommendation":"Add a SoftwareApplication object (or an equivalent saas / product type) to the page's JSON-LD.","fix":{"language":"json","code":"{\n  \"@context\": \"https://schema.org\",\n  \"@type\": \"SoftwareApplication\",\n  \"name\": \"Your site or page\",\n  \"description\": \"One-sentence summary matched to this profile.\"\n}"}}],"title":"Example Domain","textChars":156,"snr":1,"h1Count":0,"headingCount":0,"jsonLdTypes":[],"metaRobots":"","xRobotsTag":null,"fetchMs":0},"coverage":{"method":"homepage","inventorySize":1,"listedPages":1,"sampleSize":1,"analyzedPages":1,"failedPages":0,"skippedPages":0,"sitemapFound":false,"homepageFallback":false,"truncated":false,"deadlineHit":false,"note":"Analyzed 1 of 1 pages from the homepage."},"files":[{"id":"llms-txt","label":"llms.txt","path":"/llms.txt","url":"https://example.com/llms.txt","found":false,"statusCode":404,"bytes":577,"note":"Not published"},{"id":"llms-full-txt","label":"llms-full.txt","path":"/llms-full.txt","url":"https://example.com/llms-full.txt","found":false,"statusCode":404,"bytes":577,"note":"Optional, not published"},{"id":"sitemap","label":"sitemap.xml","path":"/sitemap.xml","url":"https://example.com/sitemap.xml","found":false,"statusCode":404,"bytes":577,"note":"Not published"},{"id":"robots-txt","label":"robots.txt","path":"/robots.txt","url":"https://example.com/robots.txt","found":false,"statusCode":404,"bytes":577,"note":"Not published"},{"id":"openapi","label":"OpenAPI","path":"/openapi.json","url":"https://example.com/openapi.json","found":false,"statusCode":null,"bytes":0,"note":"Not found"},{"id":"well-known","label":".well-known","path":"/.well-known/","url":"https://example.com/.well-known/","found":false,"statusCode":null,"bytes":0,"note":"Nothing found"}],"vision":{"rawHtml":"<!DOCTYPE html><html lang=\"en\"><head><meta charset=\"utf-8\"><link rel=\"icon\" href=\"data:,\"><meta name=\"viewport\" content=\"width=device-width,initial-scale=1\"><title>Example Domain</title><!-- style removed: 168 chars --></head><body><p>This domain is for use in documentation examples without needing permission. This is not a service; avoid relying on it for testing and monitoring purposes.</p><!-- script removed: 0 chars -->\n</body></html>","markdown":"# Example Domain\n\nThis domain is for use in documentation examples without needing permission. This is not a service; avoid relying on it for testing and monitoring purposes.","htmlBytes":577,"markdownBytes":174,"textBytes":156,"reductionPct":70,"tokenEstimate":{"html":145,"markdown":44},"removed":{"scripts":1,"styles":1,"landmarks":0,"svg":0,"frames":0},"rawTruncated":false,"markdownTruncated":false},"fixes":[{"checkId":"llms-txt","pillarId":"discovery","pillarName":"Discovery","label":"llms.txt manifest","status":"fail","summary":"Missing","recommendation":"Publish /llms.txt with one H1, a blockquote summary and H2 sections linking to the pages an LLM should read first.","evidence":{"file":"/llms.txt","line":null,"snippet":null},"fix":{"language":"markdown","code":"# Your site name\n\n> One sentence explaining what this site covers and who it is for.\n\n## Documentation\n- [Getting started](https://example.com/docs/start)\n- [API reference](https://example.com/docs/api)\n- [Authentication](https://example.com/docs/auth)"},"weight":3,"scope":"site"},{"checkId":"json-ld","pillarId":"structured","pillarName":"Schema","label":"JSON-LD presence & syntax","status":"fail","summary":"0 / 1 pages pass","recommendation":"Add a JSON-LD block with @context and @type so the page can be classified without guessing.","evidence":{"file":"/","line":null,"snippet":null},"fix":{"language":"json","code":"{\n  \"@context\": \"https://schema.org\",\n  \"@type\": \"SoftwareApplication\",\n  \"headline\": \"Page topic\",\n  \"description\": \"One-sentence summary of the page.\"\n}"},"weight":2.5,"scope":"page","sample":{"total":1,"passed":0,"warned":0,"failed":1,"affected":["https://example.com/"]}},{"checkId":"sitemap","pillarId":"discovery","pillarName":"Discovery","label":"sitemap + robots directive","status":"fail","summary":"Missing","recommendation":"Publish an XML sitemap at /sitemap.xml, keep it fresh, and reference it from robots.txt with a Sitemap: directive.","evidence":{"file":"/sitemap.xml","line":null,"snippet":null},"fix":{"language":"robots","code":"# robots.txt\nSitemap: https://example.com/sitemap.xml\n\n# /sitemap.xml\n<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<urlset xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\">\n  <url><loc>https://example.com/docs/start</loc></url>\n</urlset>"},"weight":2,"scope":"site"},{"checkId":"heading-order","pillarId":"parseability","pillarName":"Parse","label":"Heading sequence","status":"fail","summary":"0 / 1 pages pass","recommendation":"Keep heading levels sequential (H1 → H2 → H3) so the document outline is unambiguous.","evidence":{"file":"/","line":null,"snippet":null},"fix":{"language":"html","code":"<h1>Page topic</h1>\n  <h2>First section</h2>\n    <h3>Supporting detail</h3>\n  <h2>Second section</h2>"},"weight":2,"scope":"page","sample":{"total":1,"passed":0,"warned":0,"failed":1,"affected":["https://example.com/"]}},{"checkId":"ssr-content","pillarId":"parseability","pillarName":"Parse","label":"SSR payload readability","status":"fail","summary":"0 / 1 pages pass","recommendation":"Render primary content on the server (SSR/SSG) so it exists in the first HTML response.","evidence":{"file":"/","line":1,"snippet":"<!doctype html><html lang=en><head><meta charset=utf-8><link rel=icon href=data:,><meta name=viewport content=\"width=device-width,initial-scale=1\"><title>Example Domain</title><style>html{color-scheme:light dark;background:light-dark(#eee,#"},"fix":{"language":"html","code":"<!-- Server-render the primary content, not a client-only shell -->\n<main>\n  <h1>Page topic</h1>\n  <p>At least 600 characters of readable content in the initial response.</p>\n</main>"},"weight":2,"scope":"page","sample":{"total":1,"passed":0,"warned":0,"failed":1,"affected":["https://example.com/"]}},{"checkId":"h1","pillarId":"parseability","pillarName":"Parse","label":"Single H1","status":"fail","summary":"0 / 1 pages pass","recommendation":"Give the page exactly one descriptive H1 that names the topic.","evidence":{"file":"/","line":null,"snippet":null},"fix":{"language":"html","code":"<h1>Page topic in one clear sentence</h1>"},"weight":1.5,"scope":"page","sample":{"total":1,"passed":0,"warned":0,"failed":1,"affected":["https://example.com/"]}},{"checkId":"schema-types","pillarId":"structured","pillarName":"Schema","label":"Profile schema types","status":"fail","summary":"0 / 1 pages pass","recommendation":"Add a SoftwareApplication object (or an equivalent saas / product type) to the page's JSON-LD.","evidence":{"file":"/","line":null,"snippet":null},"fix":{"language":"json","code":"{\n  \"@context\": \"https://schema.org\",\n  \"@type\": \"SoftwareApplication\",\n  \"name\": \"Your site or page\",\n  \"description\": \"One-sentence summary matched to this profile.\"\n}"},"weight":1.5,"scope":"page","sample":{"total":1,"passed":0,"warned":0,"failed":1,"affected":["https://example.com/"]}},{"checkId":"openapi","pillarId":"structured","pillarName":"Schema","label":"OpenAPI description","status":"warn","summary":"Not found","recommendation":"If the site exposes an API, publish an OpenAPI description at /openapi.json so agents can call it correctly.","evidence":{"file":"/openapi.json","line":null,"snippet":null},"fix":{"language":"json","code":"{\n  \"openapi\": \"3.1.0\",\n  \"info\": {\n    \"title\": \"Your API\",\n    \"version\": \"1.0.0\"\n  },\n  \"paths\": {}\n}"},"weight":1.5,"scope":"site"}],"meta":{"fetchMs":281,"pageCount":1,"discoveredPageCount":1,"sampledPageCount":1,"crawledAt":"2026-10-23T01:21:09.250Z","cached":false,"siteCached":false,"focusCached":false,"scoringVersion":"site-1"}}