{"url":"https://tarotai.chat/","scannedAt":"2026-11-09T00:23:21.347Z","durationMs":2421,"platform":{"platform":"shopify","confidence":30,"evidence":["/cdn/shop/ assets"],"isEcommerce":true,"isApp":false,"seoPlugin":null},"commerce":{"type":"catalogue","confidence":99,"evidence":["JSON-LD offer data: {\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"WebApplication\",\"@id\":\"https://tarotai.chat/#app\",\"name\":\"Free AI Tarot Reading & 78 Tarot Cards | TAROTAI.","commerce routes returning 200: /pricing","price pattern near a purchase CTA: \"$5\"","e-commerce platform fingerprint (shopify)"],"signals":{"structuredOffers":true,"productSchema":false,"paymentProviders":[],"commerceRoutes":["/pricing"],"ogProductTags":false,"pricePatterns":true}},"checks":[{"id":"D1","name":"robots.txt present & sane","dimension":"discoverability","status":"pass","weight":6,"earned":6,"evidence":"200 OK, 3141 bytes, declares Sitemap","remediation":"Serve a non-blocking /robots.txt that references your Sitemap.","tier":"essential","specs":[{"name":"RFC 9309 — Robots Exclusion Protocol","url":"https://www.rfc-editor.org/rfc/rfc9309.html"}]},{"id":"D2","name":"XML sitemap","dimension":"discoverability","status":"pass","weight":4,"earned":4,"evidence":"https://tarotai.chat/sitemap.xml (200 OK)","remediation":"Publish /sitemap.xml and reference it in robots.txt.","tier":"essential","specs":[{"name":"Sitemaps XML protocol 0.9","url":"https://www.sitemaps.org/protocol.html"},{"name":"RFC 9309 §2.2.3 (Sitemap directive)","url":"https://www.rfc-editor.org/rfc/rfc9309.html#name-other-records"}]},{"id":"D3","name":"Link header for discovery","dimension":"discoverability","status":"pass","weight":3,"earned":3,"evidence":"Link: <https://tarotai.chat/>; rel=\"alternate\"; hreflang=\"en\", <https://tarotai.chat/zh>; rel=\"alternate\"; hreflang=\"zh\", <https://tarotai.chat/zh-TW>; rel=\"alternate\"; hreflang=\"zh-TW\", <https://tarotai.ch","remediation":"Add a Link response header or HTML <link rel=\"api-catalog\"|\"describedby\"> tag.","tier":"recommended","specs":[{"name":"RFC 8288 — Web Linking","url":"https://www.rfc-editor.org/rfc/rfc8288.html"},{"name":"RFC 9727 — API catalog link relation","url":"https://www.rfc-editor.org/rfc/rfc9727.html"}]},{"id":"C1","name":"Markdown content negotiation","dimension":"content","status":"partial","weight":8,"earned":4,"evidence":"Accept: text/markdown → 200 (text/markdown; charset=utf-8)","remediation":"Serve text/markdown when the client sends Accept: text/markdown, or publish /index.md.","tier":"recommended","specs":[{"name":"RFC 9110 §12 — Proactive content negotiation","url":"https://www.rfc-editor.org/rfc/rfc9110.html#name-proactive-negotiation"},{"name":"llmstxt.org — markdown representations","url":"https://llmstxt.org/"}]},{"id":"C2","name":"/llms.txt","dimension":"content","status":"pass","weight":6,"earned":6,"evidence":"200 OK, 3507 bytes, has H1, has sections, has links","remediation":"Publish /llms.txt per llmstxt.org with an H1, summary, and ## sections of markdown links.","tier":"recommended","specs":[{"name":"llms.txt proposal","url":"https://llmstxt.org/"}]},{"id":"C3","name":"Structured HTML (title, meta, JSON-LD, single H1)","dimension":"content","status":"pass","weight":4,"earned":4,"evidence":"h1: 1, title: true, meta description: true, JSON-LD: true","remediation":"Ensure a single <h1>, <title>, meta description, and schema.org JSON-LD.","tier":"essential","specs":[{"name":"schema.org vocabulary","url":"https://schema.org/"},{"name":"JSON-LD 1.1","url":"https://www.w3.org/TR/json-ld11/"},{"name":"HTML Living Standard — the `title` element","url":"https://html.spec.whatwg.org/multipage/semantics.html#the-title-element"}]},{"id":"B1","name":"Content Signals in robots.txt","dimension":"bot_access","status":"pass","weight":5,"earned":5,"evidence":"Content-Signal directive present","remediation":"Optional: add `Content-Signal: search=yes, ai-train=no, ai-input=yes` to robots.txt.","optional":true,"tier":"bonus","specs":[{"name":"Cloudflare Content Signals Policy","url":"https://contentsignals.org/"}]},{"id":"B2","name":"Explicit AI bot rules","dimension":"bot_access","status":"pass","weight":5,"earned":5,"evidence":"11 known AI agent(s) addressed in robots.txt","remediation":"Add explicit allow/deny rules for GPTBot, ClaudeBot, PerplexityBot, Google-Extended, etc.","tier":"essential","specs":[{"name":"RFC 9309 — Robots Exclusion Protocol","url":"https://www.rfc-editor.org/rfc/rfc9309.html"},{"name":"Google-Extended documentation","url":"https://developers.google.com/search/docs/crawling-indexing/overview-google-crawlers#google-extended"}]},{"id":"B3","name":"Web Bot Auth key directory","dimension":"bot_access","status":"info","weight":3,"earned":0,"evidence":"not published (optional / experimental)","remediation":"Optional: serve a JWKS-style key directory at /.well-known/http-message-signatures-directory.","optional":true,"tier":"bonus","specs":[{"name":"Web Bot Auth (IETF draft)","url":"https://datatracker.ietf.org/doc/draft-meunier-web-bot-auth-architecture/"},{"name":"RFC 9421 — HTTP Message Signatures","url":"https://www.rfc-editor.org/rfc/rfc9421.html"}]},{"id":"P1","name":"API Catalog (RFC 9727)","dimension":"capabilities","status":"fail","weight":4,"earned":0,"evidence":"404 at /.well-known/api-catalog","remediation":"Publish /.well-known/api-catalog linking to your OpenAPI descriptions.","optional":false,"tier":"recommended","specs":[{"name":"RFC 9727 — API Catalog","url":"https://www.rfc-editor.org/rfc/rfc9727.html"},{"name":"RFC 9264 — Linkset","url":"https://www.rfc-editor.org/rfc/rfc9264.html"}]},{"id":"P2","name":"MCP Server Card","dimension":"capabilities","status":"info","weight":5,"earned":0,"evidence":"HTTP 404","remediation":"Optional: publish /.well-known/mcp/server-card.json if you expose an MCP server.","optional":true,"tier":"bonus","specs":[{"name":"Model Context Protocol specification","url":"https://modelcontextprotocol.io/specification/2025-06-18"}]},{"id":"P3","name":"Agent Skills index","dimension":"capabilities","status":"info","weight":3,"earned":0,"evidence":"HTTP 404","remediation":"Optional: publish /.well-known/agent-skills/index.json if you offer programmatic skills.","optional":true,"tier":"bonus","specs":[{"name":"Anthropic Agent Skills","url":"https://code.claude.com/docs/en/skills"}]},{"id":"P4","name":"OAuth discovery metadata","dimension":"capabilities","status":"fail","weight":4,"earned":0,"evidence":"auth-server: 404, protected-resource: 404","remediation":"Publish RFC 8414 / RFC 9728 metadata at the /.well-known/oauth-* endpoints.","optional":false,"tier":"recommended","specs":[{"name":"RFC 9728 — OAuth 2.0 Protected Resource Metadata","url":"https://www.rfc-editor.org/rfc/rfc9728.html"},{"name":"RFC 8414 — OAuth 2.0 Authorization Server Metadata","url":"https://www.rfc-editor.org/rfc/rfc8414.html"}]},{"id":"M4","name":"Machine-readable pricing","dimension":"commerce","status":"partial","weight":6,"earned":3,"evidence":"JSON-LD offer on homepage (price, priceCurrency, price 0 only — paid plans not described): {\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"WebApplication\",\"@id\":\"https://tarotai.chat/#app\",\"name\":\"Free AI Tarot Reading & 78 Tarot Cards | TAROTAI.CHAT\",\"alternateName","remediation":"Publish schema.org Offer / AggregateOffer JSON-LD on your pricing page with price, priceCurrency and the billing period, so an agent can answer \"what does this cost?\" without scraping prose.","tier":"recommended","specs":[{"name":"schema.org/Offer","url":"https://schema.org/Offer"},{"name":"schema.org/AggregateOffer","url":"https://schema.org/AggregateOffer"},{"name":"JSON-LD 1.1","url":"https://www.w3.org/TR/json-ld11/"}]},{"id":"M1","name":"Universal Commerce Protocol (UCP)","dimension":"commerce","status":"info","weight":5,"earned":0,"evidence":"HTTP 404","remediation":"Publish /.well-known/ucp so agents can browse and buy from your catalogue.","optional":true,"tier":"bonus","specs":[{"name":"Universal Commerce Protocol","url":"https://universalcommerce.org/"}]},{"id":"M3","name":"x402 Payment Required signal","dimension":"commerce","status":"info","weight":3,"earned":0,"evidence":"no paywalled resource declared (optional)","remediation":"Optional: HTTP 402 with an x402 payload on monetized resources.","optional":true,"tier":"bonus","specs":[{"name":"x402 payments protocol","url":"https://www.x402.org/"}]},{"id":"E1","name":"Correct 404 handling","dimension":"discoverability","status":"pass","weight":4,"earned":4,"evidence":"GET /aiscan-404-probe-glm6z3 → HTTP 404, 102454 bytes, text/html","remediation":"Return a real HTTP 404 (not 200) for missing pages, with a body that names the site and links to your homepage, sitemap, and search so an agent can recover.","tier":"essential","specs":[{"name":"RFC 9110 §15.5.5 — 404 Not Found","url":"https://www.rfc-editor.org/rfc/rfc9110.html#name-404-not-found"},{"name":"Google Search Central — soft 404s","url":"https://developers.google.com/search/docs/crawling-indexing/http-network-errors#soft-404-errors"}]},{"id":"E2","name":"Machine-readable API description","dimension":"capabilities","status":"fail","weight":3,"earned":0,"evidence":"no /openapi.json, /api/openapi.json or swagger document found","remediation":"Publish an OpenAPI 3.1 document at /openapi.json and reference it from /.well-known/api-catalog as a service-desc link.","optional":false,"tier":"recommended","specs":[{"name":"OpenAPI Specification 3.1","url":"https://spec.openapis.org/oas/v3.1.0.html"},{"name":"RFC 9727 — `service-desc` link relation","url":"https://www.rfc-editor.org/rfc/rfc9727.html"}]},{"id":"E3","name":"Heading hierarchy & server-rendered text","dimension":"content","status":"partial","weight":4,"earned":1,"evidence":"132 words of server-rendered text, 0 <h2>, 0 <h3>","remediation":"Server-render your main copy and break it into a real heading outline (one h1, then descriptive h2/h3 sections). Agents that don't execute JavaScript only see the HTML you ship.","tier":"essential","specs":[{"name":"HTML Living Standard — headings and outlines","url":"https://html.spec.whatwg.org/multipage/sections.html#headings-and-outlines"},{"name":"WCAG 2.2 SC 1.3.1 — Info and Relationships","url":"https://www.w3.org/WAI/WCAG22/Understanding/info-and-relationships.html"}]},{"id":"E4","name":"HTTPS & canonical host","dimension":"discoverability","status":"pass","weight":4,"earned":4,"evidence":"final origin https://tarotai.chat · http:// upgrades to https · www.tarotai.chat redirects to the canonical host · no HSTS header","remediation":"Serve the site over HTTPS, 301-redirect http:// to https://, and redirect the www/apex variant to a single canonical host so agents don't index two copies of every URL.","tier":"essential","specs":[{"name":"RFC 9110 §15.4 — Redirection 3xx","url":"https://www.rfc-editor.org/rfc/rfc9110.html#name-redirection-3xx"},{"name":"RFC 6797 — HTTP Strict Transport Security","url":"https://www.rfc-editor.org/rfc/rfc6797.html"}]},{"id":"E5","name":"Content feed (RSS / Atom / JSON Feed)","dimension":"content","status":"na","weight":0,"earned":0,"evidence":"no periodical content section detected","naReason":"This site doesn't publish dated, periodical content, so a feed isn't expected.","tier":"recommended","specs":[{"name":"RFC 4287 — Atom Syndication Format","url":"https://www.rfc-editor.org/rfc/rfc4287.html"},{"name":"JSON Feed 1.1","url":"https://www.jsonfeed.org/version/1.1/"}]}],"dimensions":{"discoverability":{"earned":21,"weight":21,"score":100,"applicable":true},"content":{"earned":9,"weight":13.2,"score":68,"applicable":true},"bot_access":{"earned":10,"weight":10,"score":100,"applicable":true},"capabilities":{"earned":0,"weight":8.8,"score":0,"applicable":true},"commerce":{"earned":3.5999999999999996,"weight":7.199999999999999,"score":50,"applicable":true}},"overallScore":72,"level":4,"levelName":"Interactive","mode":"auto","scope":"site","rubricVersion":"2026.08.2","shareId":"tgxtzak2","shareUrl":"https://aiscan.site/r/tgxtzak2"}