{"version":"1.0.0","url":"https://instagram.com/","finalUrl":"https://www.instagram.com/","host":"instagram.com","scannedAt":"2026-08-26T23:03:20.270Z","durationMs":1558,"score":42,"grade":"E","potential":87,"gates":[],"pillars":[{"pillar":"reachability","label":"Reachability","blurb":"Can an agent fetch your content at all, without a browser and without being blocked?","score":66,"earned":58.7,"available":89,"weight":25,"checks":[{"id":"http-ok","pillar":"reachability","title":"Page responds to a plain HTTP request","status":"pass","weight":10,"earned":10,"detail":"HTTP 200 in 866 ms.","why":"The baseline: an agent with no browser, no cookies and no JavaScript received your page.","impact":0},{"id":"not-blocked","pillar":"reachability","title":"No bot wall in front of the content","status":"pass","weight":12,"earned":12,"detail":"The response body was the real page, not a challenge or block screen.","why":"Bot protection that cannot tell a shopping assistant from a scraper silently removes you from AI answers, with no error anyone on your team will ever see.","impact":0},{"id":"server-rendered","pillar":"reachability","title":"Content exists without running JavaScript","status":"warn","weight":14,"earned":7,"detail":"Only 68 words arrived in the raw HTML. Some of the page is probably assembled in the browser.","why":"Partial server rendering means agents see a fragment of your argument and may summarise you from the fragment.","fix":{"summary":"Server-render the primary content of the page, not just the shell and navigation."},"impact":2},{"id":"robots-exists","pillar":"reachability","title":"robots.txt is present and parseable","status":"pass","weight":4,"earned":4,"detail":"robots.txt served with 36 user-agent groups.","why":"A valid robots.txt is how you talk to crawlers before they read a single page.","impact":0},{"id":"robots-answer-engines","pillar":"reachability","title":"Answer engines are allowed to crawl","status":"fail","weight":12,"earned":0,"detail":"5 of 5 blocked by robots.txt: OAI-SearchBot, Claude-SearchBot, PerplexityBot, Amazonbot, DuckAssistBot.","why":"These crawlers are the ones that put your link inside an AI answer. Blocking them removes the referral traffic, not just the training use.","fix":{"summary":"Allow these crawlers explicitly in robots.txt. Indexes you so an assistant can cite and link you. Blocking it removes you from AI answers.","lang":"text","snippet":"User-agent: OAI-SearchBot\nAllow: /\n\nUser-agent: Claude-SearchBot\nAllow: /\n\nUser-agent: PerplexityBot\nAllow: /\n\nUser-agent: Amazonbot\nAllow: /\n\nUser-agent: DuckAssistBot\nAllow: /","where":"/robots.txt"},"evidence":["OAI-SearchBot (OpenAI) - You will not appear as a source in ChatGPT search results.","Claude-SearchBot (Anthropic) - You will not be cited in Claude web search answers.","PerplexityBot (Perplexity) - You lose Perplexity citations, one of the highest-converting AI referral sources.","Amazonbot (Amazon) - Excluded from Alexa and Rufus style shopping answers.","DuckAssistBot (DuckDuckGo) - Excluded from DuckDuckGo AI assist answers."],"quickWin":true,"impact":3.4},{"id":"robots-user-triggered","pillar":"reachability","title":"User-triggered fetchers are allowed","status":"fail","weight":8,"earned":0,"detail":"3 of 3 blocked by robots.txt: ChatGPT-User, Claude-User, Perplexity-User.","why":"These fetches happen because a human just pasted your link into an assistant. A block here fails in front of a real person who wanted to read you.","fix":{"summary":"Allow these crawlers explicitly in robots.txt. Fetches your page because a human asked an assistant to open it right now. Blocking it breaks a live request.","lang":"text","snippet":"User-agent: ChatGPT-User\nAllow: /\n\nUser-agent: Claude-User\nAllow: /\n\nUser-agent: Perplexity-User\nAllow: /","where":"/robots.txt"},"evidence":["ChatGPT-User (OpenAI) - When a user asks ChatGPT to open your link, it fails in front of them.","Claude-User (Anthropic) - Claude cannot open your page when a user pastes the link.","Perplexity-User (Perplexity) - Live user-requested fetches from Perplexity fail."],"quickWin":true,"impact":2.2},{"id":"robots-search","pillar":"reachability","title":"Classic search crawlers are allowed","status":"pass","weight":6,"earned":6,"detail":"All 2 crawlers in this group may fetch /.","why":"AI Overviews and Copilot answers are grounded on the classic search index. Blocking Googlebot or Bingbot now also removes you from AI surfaces.","impact":0},{"id":"agent-live-probe","pillar":"reachability","title":"Real agent user-agents are served normally","status":"na","weight":8,"earned":8,"detail":"Live user-agent probing was not run for this scan.","why":"Some sites answer 200 to a generic client and 403 to a named AI crawler. Only a live probe finds that.","impact":0},{"id":"meta-robots","pillar":"reachability","title":"No directive suppressing AI use of this page","status":"pass","weight":6,"earned":6,"detail":"Robots directives present and permissive: noarchive, noimageindex","why":"noindex and nosnippet remove you from the surfaces that would otherwise quote and link you.","impact":0},{"id":"redirect-chain","pillar":"reachability","title":"Short redirect chain","status":"pass","weight":4,"earned":3.2,"detail":"1 redirect before the final page.","why":"Every hop costs latency and some agents cap redirects at two or three.","evidence":["301 https://instagram.com/ -> https://www.instagram.com/"],"impact":0.2},{"id":"response-speed","pillar":"reachability","title":"Responds fast enough for an agent budget","status":"pass","weight":5,"earned":5,"detail":"Full response in 866 ms.","why":"Agents fetch many pages per answer and drop the slow ones. Speed is a ranking input you control.","impact":0},{"id":"payload-weight","pillar":"reachability","title":"HTML payload stays inside an agent context budget","status":"warn","weight":5,"earned":2.5,"detail":"462 KB of HTML, 54% of it inline script.","why":"Agents truncate long documents. Anything past the cut simply is not read.","fix":{"summary":"Move inline scripts and serialized state into external files so the HTML an agent reads stays small."},"impact":0.7},{"id":"content-type","pillar":"reachability","title":"Declares a correct content type","status":"pass","weight":3,"earned":3,"detail":"Content-Type: text/html; charset=\"utf-8\"","why":"A declared charset avoids mojibake when an agent quotes your text back to a user.","impact":0}]},{"pillar":"comprehension","label":"Comprehension","blurb":"Once fetched, can the agent work out what this page is and what it says?","score":26,"earned":20.2,"available":78,"weight":25,"checks":[{"id":"title","pillar":"comprehension","title":"Has a descriptive <title>","status":"warn","weight":10,"earned":4,"detail":"The title is only 9 characters: \"Instagram\".","why":"Very short titles force the assistant to guess at context and it will guess from the URL.","fix":{"summary":"Expand the title to name both the page subject and the brand."},"quickWin":true,"impact":1.9},{"id":"meta-description","pillar":"comprehension","title":"Has a meta description","status":"pass","weight":8,"earned":8,"detail":"94 characters: \"Create an account or log in to Instagram - Share what you're into with the people who get you.\"","why":"This is the summary assistants reuse verbatim more often than any other field.","impact":0},{"id":"h1","pillar":"comprehension","title":"Exactly one <h1> naming the page","status":"fail","weight":8,"earned":0,"detail":"The page has no headings at all.","why":"Without an h1 the agent has no anchor for the document topic and falls back to the title tag or the URL slug.","fix":{"summary":"Add a single <h1> at the top of the main content that states the page subject."},"quickWin":true,"impact":2.6},{"id":"heading-hierarchy","pillar":"comprehension","title":"Headings form a sane outline","status":"fail","weight":6,"earned":0,"detail":"Only 0 headings on the page.","why":"Agents chunk long pages by heading. A page with no outline is chunked arbitrarily and quoted out of context.","fix":{"summary":"Break the content into sections with <h2> headings that read as answers to real questions."},"quickWin":true,"impact":1.9},{"id":"content-volume","pillar":"comprehension","title":"Enough substance to be worth citing","status":"fail","weight":10,"earned":0,"detail":"Only 68 words of readable text reached the agent.","why":"There is not enough here for an assistant to build an answer from, so it will use someone else as the source.","fix":{"summary":"Make sure the real content is in the HTML, then make sure there is enough of it."},"impact":3.2},{"id":"text-ratio","pillar":"comprehension","title":"Signal-to-markup ratio","status":"fail","weight":8,"earned":0,"detail":"0.2% of the payload is readable text.","why":"The document is almost entirely machinery. An agent truncating this page will likely truncate before reaching any of your content.","fix":{"summary":"Reduce inline script and serialized state; aim for at least 12% readable text."},"impact":2.6},{"id":"lang","pillar":"comprehension","title":"Declares a document language","status":"pass","weight":5,"earned":5,"detail":"<html lang=\"en\">","why":"Language is how an assistant decides whether to answer a user in your words or translate them.","impact":0},{"id":"image-alt","pillar":"comprehension","title":"Images carry alt text","status":"fail","weight":8,"earned":0,"detail":"0 of 1 images have no alt attribute at all, 1 more are empty.","why":"To an agent an undescribed image is a hole in the page. On product, chart and diagram pages that hole is usually the point of the page.","fix":{"summary":"Describe what each image shows. Use alt=\"\" only for purely decorative images.","lang":"html","snippet":"<img src=\"/chart.png\" alt=\"AX scores of the top 100 SaaS sites, median 41 out of 100\">"},"quickWin":true,"impact":2.6},{"id":"landmarks","pillar":"comprehension","title":"Main content is marked as such","status":"fail","weight":6,"earned":0,"detail":"No <main> element. Landmarks present: footer.","why":"Without a main landmark an extractor has to guess your content boundary heuristically, and on marketing pages it usually guesses the header.","fix":{"summary":"Wrap the primary content in <main>, and each self-contained item in <article>.","lang":"html","snippet":"<main>\n  <article>\n    <h1>…</h1>\n    …\n  </article>\n</main>"},"quickWin":true,"impact":1.9},{"id":"semantic-density","pillar":"comprehension","title":"Uses semantic elements, not div soup","status":"fail","weight":6,"earned":0.2,"detail":"1% semantic (1 semantic vs 121 div).","why":"A page built entirely from divs communicates its structure only through CSS, which agents never load. The visual hierarchy you designed does not reach them.","fix":{"summary":"Replace layout divs with section, article, nav, aside, figure and real list elements where they apply."},"quickWin":true,"impact":1.9},{"id":"noscript-fallback","pillar":"comprehension","title":"Provides a no-JavaScript fallback","status":"na","weight":4,"earned":4,"detail":"Not needed: the page already server-renders its content.","why":"","impact":0},{"id":"readable-url","pillar":"comprehension","title":"URL describes the content","status":"pass","weight":3,"earned":3,"detail":"Site root.","why":"Assistants show the URL next to the citation, and readable URLs get clicked more than opaque ids.","impact":0}]},{"pillar":"structure","label":"Structure","blurb":"Is the important data machine-readable instead of implied by visual layout?","score":23,"earned":8.1,"available":35,"weight":18,"checks":[{"id":"jsonld-present","pillar":"structure","title":"Ships structured data","status":"fail","weight":12,"earned":0,"detail":"No JSON-LD and no microdata anywhere on the page.","why":"Structured data is the only part of your page an agent can consume without interpretation. Everything else it has to infer, and inference is where it invents facts about you.","fix":{"summary":"Add a JSON-LD block describing what this page actually is.","lang":"html","where":"Inside <head>, one block per page.","snippet":"<script type=\"application/ld+json\">\n{\n  \"@context\": \"https://schema.org\",\n  \"@type\": \"Organization\",\n  \"name\": \"Your company\",\n  \"url\": \"https://example.com\",\n  \"description\": \"One sentence an assistant can quote.\",\n  \"sameAs\": [\"https://x.com/you\", \"https://github.com/you\"]\n}\n</script>"},"quickWin":true,"impact":6.2},{"id":"jsonld-valid","pillar":"structure","title":"Structured data parses cleanly","status":"na","weight":8,"earned":8,"detail":"No JSON-LD to validate.","why":"","impact":0},{"id":"jsonld-types","pillar":"structure","title":"Structured data describes the right thing","status":"na","weight":8,"earned":8,"detail":"No JSON-LD to evaluate.","why":"","impact":0},{"id":"open-graph","pillar":"structure","title":"Open Graph card is complete","status":"warn","weight":6,"earned":3.6,"detail":"Missing: og:description, og:type.","why":"When a page is JavaScript-heavy or truncated, Open Graph tags are frequently the only clean summary an agent gets.","fix":{"summary":"Add the four core Open Graph tags plus an image.","lang":"html","snippet":"<meta property=\"og:title\" content=\"Page title\">\n<meta property=\"og:description\" content=\"One sentence.\">\n<meta property=\"og:type\" content=\"website\">\n<meta property=\"og:url\" content=\"https://example.com/page\">\n<meta property=\"og:image\" content=\"https://example.com/og.png\">"},"quickWin":true,"impact":1.2},{"id":"canonical","pillar":"structure","title":"Declares a canonical URL","status":"warn","weight":6,"earned":3,"detail":"Canonical points to another origin: https://www.instagram.com/","why":"Agents dedupe sources by canonical URL, and cross-origin canonicals hand your citation to somebody else.","impact":1.5},{"id":"sitemap","pillar":"structure","title":"Publishes a sitemap","status":"fail","weight":8,"earned":0,"detail":"No sitemap found at https://www.instagram.com/sitemap/ig_seo_profile_sitemap_non_media_eligible.xml.gz or in robots.txt.","why":"Without a sitemap, discovery depends entirely on crawlable links. Any page not reachable by a plain <a href> is invisible.","fix":{"summary":"Generate a sitemap.xml and reference it from robots.txt.","lang":"text","snippet":"Sitemap: https://example.com/sitemap.xml","where":"Append to /robots.txt"},"quickWin":true,"impact":4.1},{"id":"price-structured","pillar":"structure","title":"Prices are machine-readable","status":"na","weight":6,"earned":6,"detail":"No prices detected in the page text.","why":"","impact":0},{"id":"breadcrumbs","pillar":"structure","title":"Declares its place in the site","status":"na","weight":4,"earned":4,"detail":"Top-level page; breadcrumbs are not expected.","why":"","impact":0},{"id":"twitter-card","pillar":"structure","title":"Declares a link preview card","status":"warn","weight":3,"earned":1.5,"detail":"No twitter:* card tags.","why":"Several agents fall back to card metadata when they cannot extract the body reliably.","fix":{"summary":"Add a summary_large_image card.","lang":"html","snippet":"<meta name=\"twitter:card\" content=\"summary_large_image\">\n<meta name=\"twitter:title\" content=\"Page title\">\n<meta name=\"twitter:description\" content=\"One sentence.\">"},"quickWin":true,"impact":0.8},{"id":"microdata","pillar":"structure","title":"Inline microdata annotations","status":"na","weight":2,"earned":2,"detail":"No microdata; JSON-LD is the preferred format anyway.","why":"","impact":0}]},{"pillar":"actionability","label":"Actionability","blurb":"Can the agent take the next step - navigate, search, submit, buy - without guessing?","score":75,"earned":48.5,"available":65,"weight":17,"checks":[{"id":"links-crawlable","pillar":"actionability","title":"Navigation uses real links","status":"pass","weight":12,"earned":12,"detail":"All 18 links resolve to a real URL.","why":"Real hrefs are the only navigation primitive an agent has.","impact":0},{"id":"anchor-text","pillar":"actionability","title":"Link text describes the destination","status":"pass","weight":8,"earned":8,"detail":"100% of links have descriptive text.","why":"Link text is how an agent decides which link to follow when it is looking for something specific.","impact":0},{"id":"internal-nav","pillar":"actionability","title":"Links onward into the site","status":"pass","weight":6,"earned":6,"detail":"8 internal links give an agent somewhere to go next.","why":"Agents explore a site breadth-first from whatever page they landed on. Dense internal linking is how the rest of your content gets found.","impact":0},{"id":"form-labels","pillar":"actionability","title":"Form fields are labelled","status":"pass","weight":8,"earned":8,"detail":"All 3 fields have an associated label or aria-label.","why":"An agent filling a form on a user's behalf reads labels to decide what goes in each box.","impact":0},{"id":"form-names","pillar":"actionability","title":"Form fields have stable names","status":"warn","weight":6,"earned":4,"detail":"1 field without a name attribute.","why":"Agents build form submissions from name attributes. Missing or randomised names make your form unusable to automation and fragile for everyone.","fix":{"summary":"Give each field a stable, human-readable name that survives your build."},"evidence":["<input type=\"checkbox\" name=\"\">"],"quickWin":true,"impact":0.5},{"id":"form-autocomplete","pillar":"actionability","title":"Fields declare autocomplete tokens","status":"warn","weight":4,"earned":2,"detail":"Only 1 of 2 text fields declare an autocomplete token.","why":"These tokens are the closest thing the web has to a machine-readable form schema, and they cost one attribute each.","fix":{"summary":"Add autocomplete tokens: email, name, organization, tel, street-address, country.","lang":"html","snippet":"<input name=\"email\" type=\"email\" autocomplete=\"email\">"},"quickWin":true,"impact":0.5},{"id":"button-semantics","pillar":"actionability","title":"Controls are real buttons","status":"fail","weight":6,"earned":2,"detail":"2 div/span elements styled as buttons against 1 native controls.","why":"Agents identify what they can click from element semantics. Styled divs are invisible as controls, so any flow gated behind one cannot be completed.","fix":{"summary":"Use <button> for actions and <a href> for navigation. Style them, do not replace them."},"impact":1},{"id":"contact-affordance","pillar":"actionability","title":"Reachable by a human, discoverably","status":"warn","weight":5,"earned":2.5,"detail":"Only one weak contact signal found.","why":"\"How do I get in touch with them\" is one of the most common agent-mediated questions about a company. Make the answer machine-readable.","fix":{"summary":"Add a contactPoint to your Organization schema and link a real contact page.","lang":"json","snippet":"{\"@type\":\"Organization\",\"contactPoint\":[{\"@type\":\"ContactPoint\",\"contactType\":\"customer support\",\"email\":\"support@example.com\",\"url\":\"https://example.com/contact\"}]}"},"quickWin":true,"impact":0.7},{"id":"search-affordance","pillar":"actionability","title":"Site search is machine-usable","status":"warn","weight":4,"earned":1,"detail":"No crawlable GET search form and no SearchAction.","why":"Without a GET-addressable search, an agent looking for one specific page on your site has to fetch dozens of pages to find it, and usually gives up first.","fix":{"summary":"Expose search at a GET URL like /search?q=… and declare it as a SearchAction."},"quickWin":true,"impact":0.8},{"id":"api-discovery","pillar":"actionability","title":"Programmatic surface is discoverable","status":"warn","weight":6,"earned":3,"detail":"docs link: https://developers.facebook.com/docs/instagram","why":"A docs link is a start, but nothing tells an agent where the machine-readable entry point is.","fix":{"summary":"Publish a /.well-known/mcp.json or link your OpenAPI document from the page head."},"quickWin":true,"impact":0.8}]},{"pillar":"contract","label":"Agent Contract","blurb":"Have you told agents the rules: what they may use, where the docs are, who to contact?","score":17,"earned":7.8,"available":45,"weight":15,"checks":[{"id":"llms-txt","pillar":"contract","title":"Publishes an llms.txt","status":"fail","weight":14,"earned":0,"detail":"No /llms.txt or /llms-full.txt at https://instagram.com.","why":"Without it, an assistant deciding what your site is about crawls whatever it happens to find. llms.txt is the cheapest way to control that first impression, and today most of your competitors do not have one either.","fix":{"summary":"Publish an llms.txt: a title, one paragraph, then curated links grouped by intent.","where":"/llms.txt","lang":"markdown","snippet":"# Example Inc\n\n> One paragraph an assistant can quote verbatim about what you do and who it is for.\n\n## Docs\n- [Quickstart](https://example.com/docs/quickstart): Get running in five minutes.\n- [API reference](https://example.com/docs/api): Every endpoint with examples.\n\n## Product\n- [Pricing](https://example.com/pricing): Plans, limits and exact prices.\n- [Changelog](https://example.com/changelog): What shipped, newest first.\n\n## Policies\n- [Terms](https://example.com/terms)\n- [Contact](https://example.com/contact): support@example.com"},"quickWin":true,"impact":4.7},{"id":"llms-txt-quality","pillar":"contract","title":"llms.txt is actually useful","status":"na","weight":6,"earned":6,"detail":"No llms.txt to evaluate.","why":"","impact":0},{"id":"ai-policy","pillar":"contract","title":"States an explicit AI policy","status":"pass","weight":6,"earned":6,"detail":"robots.txt names specific AI crawlers rather than relying on the wildcard group.","why":"Naming crawlers explicitly is how you separate \"do not train on me\" from \"do not send me traffic\". The wildcard group cannot express that distinction.","impact":0},{"id":"mcp-manifest","pillar":"contract","title":"Exposes an agent-callable manifest","status":"fail","weight":6,"earned":0,"detail":"No /.well-known/mcp.json and no ai-plugin.json.","why":"This is the highest-leverage unclaimed slot on the web right now. The sites that publish a callable surface get used directly instead of guessed at.","fix":{"summary":"Publish a manifest naming what an agent can do with you and where to call it.","where":"/.well-known/mcp.json","lang":"json","snippet":"{\n  \"schema_version\": \"2025-06-18\",\n  \"name\": \"example\",\n  \"description\": \"Search the catalogue and check availability.\",\n  \"documentation\": \"https://example.com/docs\",\n  \"servers\": [\n    { \"type\": \"http\", \"url\": \"https://mcp.example.com\" }\n  ],\n  \"contact\": \"support@example.com\"\n}"},"impact":2},{"id":"identity","pillar":"contract","title":"Identity is machine-verifiable","status":"fail","weight":5,"earned":0,"detail":"No Organization structured data on the page.","why":"Entity resolution is how assistants decide two mentions are the same company. Unresolved entities get merged with, or mistaken for, someone else.","fix":{"summary":"Publish Organization data with sameAs links to your verified profiles.","lang":"json","snippet":"{\"@context\":\"https://schema.org\",\"@type\":\"Organization\",\"name\":\"Example Inc\",\"url\":\"https://example.com\",\"logo\":\"https://example.com/logo.png\",\"sameAs\":[\"https://x.com/example\",\"https://github.com/example\",\"https://www.linkedin.com/company/example\"]}"},"quickWin":true,"impact":1.7},{"id":"freshness","pillar":"contract","title":"Says when the content changed","status":"warn","weight":5,"earned":0,"detail":"No Last-Modified, ETag, dateModified or <time> element anywhere.","why":"Agents deprioritise content they cannot date, and re-fetch undated pages more often, which costs you bandwidth for nothing.","fix":{"summary":"Send Last-Modified and ETag, and publish dateModified in your structured data.","lang":"json","snippet":"{\"@type\":\"Article\",\"datePublished\":\"2026-01-15\",\"dateModified\":\"2026-08-01\"}"},"quickWin":true,"impact":1.7},{"id":"licence-signal","pillar":"contract","title":"Declares content licensing","status":"warn","weight":5,"earned":1,"detail":"No rel=\"license\" link and no license or copyright fields in structured data.","why":"If you care how your content is reused, say so where machines can read it. A footer copyright line is not machine-readable.","fix":{"summary":"Declare the licence on the page and in your structured data.","lang":"html","snippet":"<link rel=\"license\" href=\"https://example.com/terms\">"},"quickWin":true,"impact":1.3},{"id":"security-txt","pillar":"contract","title":"Publishes security.txt","status":"warn","weight":4,"earned":0.8,"detail":"No /.well-known/security.txt.","why":"It is the standard machine-readable place to say who to contact. Agents and researchers both look there first.","fix":{"summary":"Add a security.txt with a contact address and an expiry date.","where":"/.well-known/security.txt","lang":"text","snippet":"Contact: mailto:security@example.com\nExpires: 2027-01-01T00:00:00.000Z\nPreferred-Languages: en"},"quickWin":true,"impact":1.1}]}],"checks":[{"id":"http-ok","pillar":"reachability","title":"Page responds to a plain HTTP request","status":"pass","weight":10,"earned":10,"detail":"HTTP 200 in 866 ms.","why":"The baseline: an agent with no browser, no cookies and no JavaScript received your page.","impact":0},{"id":"not-blocked","pillar":"reachability","title":"No bot wall in front of the content","status":"pass","weight":12,"earned":12,"detail":"The response body was the real page, not a challenge or block screen.","why":"Bot protection that cannot tell a shopping assistant from a scraper silently removes you from AI answers, with no error anyone on your team will ever see.","impact":0},{"id":"server-rendered","pillar":"reachability","title":"Content exists without running JavaScript","status":"warn","weight":14,"earned":7,"detail":"Only 68 words arrived in the raw HTML. Some of the page is probably assembled in the browser.","why":"Partial server rendering means agents see a fragment of your argument and may summarise you from the fragment.","fix":{"summary":"Server-render the primary content of the page, not just the shell and navigation."},"impact":2},{"id":"robots-exists","pillar":"reachability","title":"robots.txt is present and parseable","status":"pass","weight":4,"earned":4,"detail":"robots.txt served with 36 user-agent groups.","why":"A valid robots.txt is how you talk to crawlers before they read a single page.","impact":0},{"id":"robots-answer-engines","pillar":"reachability","title":"Answer engines are allowed to crawl","status":"fail","weight":12,"earned":0,"detail":"5 of 5 blocked by robots.txt: OAI-SearchBot, Claude-SearchBot, PerplexityBot, Amazonbot, DuckAssistBot.","why":"These crawlers are the ones that put your link inside an AI answer. Blocking them removes the referral traffic, not just the training use.","fix":{"summary":"Allow these crawlers explicitly in robots.txt. Indexes you so an assistant can cite and link you. Blocking it removes you from AI answers.","lang":"text","snippet":"User-agent: OAI-SearchBot\nAllow: /\n\nUser-agent: Claude-SearchBot\nAllow: /\n\nUser-agent: PerplexityBot\nAllow: /\n\nUser-agent: Amazonbot\nAllow: /\n\nUser-agent: DuckAssistBot\nAllow: /","where":"/robots.txt"},"evidence":["OAI-SearchBot (OpenAI) - You will not appear as a source in ChatGPT search results.","Claude-SearchBot (Anthropic) - You will not be cited in Claude web search answers.","PerplexityBot (Perplexity) - You lose Perplexity citations, one of the highest-converting AI referral sources.","Amazonbot (Amazon) - Excluded from Alexa and Rufus style shopping answers.","DuckAssistBot (DuckDuckGo) - Excluded from DuckDuckGo AI assist answers."],"quickWin":true,"impact":3.4},{"id":"robots-user-triggered","pillar":"reachability","title":"User-triggered fetchers are allowed","status":"fail","weight":8,"earned":0,"detail":"3 of 3 blocked by robots.txt: ChatGPT-User, Claude-User, Perplexity-User.","why":"These fetches happen because a human just pasted your link into an assistant. A block here fails in front of a real person who wanted to read you.","fix":{"summary":"Allow these crawlers explicitly in robots.txt. Fetches your page because a human asked an assistant to open it right now. Blocking it breaks a live request.","lang":"text","snippet":"User-agent: ChatGPT-User\nAllow: /\n\nUser-agent: Claude-User\nAllow: /\n\nUser-agent: Perplexity-User\nAllow: /","where":"/robots.txt"},"evidence":["ChatGPT-User (OpenAI) - When a user asks ChatGPT to open your link, it fails in front of them.","Claude-User (Anthropic) - Claude cannot open your page when a user pastes the link.","Perplexity-User (Perplexity) - Live user-requested fetches from Perplexity fail."],"quickWin":true,"impact":2.2},{"id":"robots-search","pillar":"reachability","title":"Classic search crawlers are allowed","status":"pass","weight":6,"earned":6,"detail":"All 2 crawlers in this group may fetch /.","why":"AI Overviews and Copilot answers are grounded on the classic search index. Blocking Googlebot or Bingbot now also removes you from AI surfaces.","impact":0},{"id":"agent-live-probe","pillar":"reachability","title":"Real agent user-agents are served normally","status":"na","weight":8,"earned":8,"detail":"Live user-agent probing was not run for this scan.","why":"Some sites answer 200 to a generic client and 403 to a named AI crawler. Only a live probe finds that.","impact":0},{"id":"meta-robots","pillar":"reachability","title":"No directive suppressing AI use of this page","status":"pass","weight":6,"earned":6,"detail":"Robots directives present and permissive: noarchive, noimageindex","why":"noindex and nosnippet remove you from the surfaces that would otherwise quote and link you.","impact":0},{"id":"redirect-chain","pillar":"reachability","title":"Short redirect chain","status":"pass","weight":4,"earned":3.2,"detail":"1 redirect before the final page.","why":"Every hop costs latency and some agents cap redirects at two or three.","evidence":["301 https://instagram.com/ -> https://www.instagram.com/"],"impact":0.2},{"id":"response-speed","pillar":"reachability","title":"Responds fast enough for an agent budget","status":"pass","weight":5,"earned":5,"detail":"Full response in 866 ms.","why":"Agents fetch many pages per answer and drop the slow ones. Speed is a ranking input you control.","impact":0},{"id":"payload-weight","pillar":"reachability","title":"HTML payload stays inside an agent context budget","status":"warn","weight":5,"earned":2.5,"detail":"462 KB of HTML, 54% of it inline script.","why":"Agents truncate long documents. Anything past the cut simply is not read.","fix":{"summary":"Move inline scripts and serialized state into external files so the HTML an agent reads stays small."},"impact":0.7},{"id":"content-type","pillar":"reachability","title":"Declares a correct content type","status":"pass","weight":3,"earned":3,"detail":"Content-Type: text/html; charset=\"utf-8\"","why":"A declared charset avoids mojibake when an agent quotes your text back to a user.","impact":0},{"id":"title","pillar":"comprehension","title":"Has a descriptive <title>","status":"warn","weight":10,"earned":4,"detail":"The title is only 9 characters: \"Instagram\".","why":"Very short titles force the assistant to guess at context and it will guess from the URL.","fix":{"summary":"Expand the title to name both the page subject and the brand."},"quickWin":true,"impact":1.9},{"id":"meta-description","pillar":"comprehension","title":"Has a meta description","status":"pass","weight":8,"earned":8,"detail":"94 characters: \"Create an account or log in to Instagram - Share what you're into with the people who get you.\"","why":"This is the summary assistants reuse verbatim more often than any other field.","impact":0},{"id":"h1","pillar":"comprehension","title":"Exactly one <h1> naming the page","status":"fail","weight":8,"earned":0,"detail":"The page has no headings at all.","why":"Without an h1 the agent has no anchor for the document topic and falls back to the title tag or the URL slug.","fix":{"summary":"Add a single <h1> at the top of the main content that states the page subject."},"quickWin":true,"impact":2.6},{"id":"heading-hierarchy","pillar":"comprehension","title":"Headings form a sane outline","status":"fail","weight":6,"earned":0,"detail":"Only 0 headings on the page.","why":"Agents chunk long pages by heading. A page with no outline is chunked arbitrarily and quoted out of context.","fix":{"summary":"Break the content into sections with <h2> headings that read as answers to real questions."},"quickWin":true,"impact":1.9},{"id":"content-volume","pillar":"comprehension","title":"Enough substance to be worth citing","status":"fail","weight":10,"earned":0,"detail":"Only 68 words of readable text reached the agent.","why":"There is not enough here for an assistant to build an answer from, so it will use someone else as the source.","fix":{"summary":"Make sure the real content is in the HTML, then make sure there is enough of it."},"impact":3.2},{"id":"text-ratio","pillar":"comprehension","title":"Signal-to-markup ratio","status":"fail","weight":8,"earned":0,"detail":"0.2% of the payload is readable text.","why":"The document is almost entirely machinery. An agent truncating this page will likely truncate before reaching any of your content.","fix":{"summary":"Reduce inline script and serialized state; aim for at least 12% readable text."},"impact":2.6},{"id":"lang","pillar":"comprehension","title":"Declares a document language","status":"pass","weight":5,"earned":5,"detail":"<html lang=\"en\">","why":"Language is how an assistant decides whether to answer a user in your words or translate them.","impact":0},{"id":"image-alt","pillar":"comprehension","title":"Images carry alt text","status":"fail","weight":8,"earned":0,"detail":"0 of 1 images have no alt attribute at all, 1 more are empty.","why":"To an agent an undescribed image is a hole in the page. On product, chart and diagram pages that hole is usually the point of the page.","fix":{"summary":"Describe what each image shows. Use alt=\"\" only for purely decorative images.","lang":"html","snippet":"<img src=\"/chart.png\" alt=\"AX scores of the top 100 SaaS sites, median 41 out of 100\">"},"quickWin":true,"impact":2.6},{"id":"landmarks","pillar":"comprehension","title":"Main content is marked as such","status":"fail","weight":6,"earned":0,"detail":"No <main> element. Landmarks present: footer.","why":"Without a main landmark an extractor has to guess your content boundary heuristically, and on marketing pages it usually guesses the header.","fix":{"summary":"Wrap the primary content in <main>, and each self-contained item in <article>.","lang":"html","snippet":"<main>\n  <article>\n    <h1>…</h1>\n    …\n  </article>\n</main>"},"quickWin":true,"impact":1.9},{"id":"semantic-density","pillar":"comprehension","title":"Uses semantic elements, not div soup","status":"fail","weight":6,"earned":0.2,"detail":"1% semantic (1 semantic vs 121 div).","why":"A page built entirely from divs communicates its structure only through CSS, which agents never load. The visual hierarchy you designed does not reach them.","fix":{"summary":"Replace layout divs with section, article, nav, aside, figure and real list elements where they apply."},"quickWin":true,"impact":1.9},{"id":"noscript-fallback","pillar":"comprehension","title":"Provides a no-JavaScript fallback","status":"na","weight":4,"earned":4,"detail":"Not needed: the page already server-renders its content.","why":"","impact":0},{"id":"readable-url","pillar":"comprehension","title":"URL describes the content","status":"pass","weight":3,"earned":3,"detail":"Site root.","why":"Assistants show the URL next to the citation, and readable URLs get clicked more than opaque ids.","impact":0},{"id":"jsonld-present","pillar":"structure","title":"Ships structured data","status":"fail","weight":12,"earned":0,"detail":"No JSON-LD and no microdata anywhere on the page.","why":"Structured data is the only part of your page an agent can consume without interpretation. Everything else it has to infer, and inference is where it invents facts about you.","fix":{"summary":"Add a JSON-LD block describing what this page actually is.","lang":"html","where":"Inside <head>, one block per page.","snippet":"<script type=\"application/ld+json\">\n{\n  \"@context\": \"https://schema.org\",\n  \"@type\": \"Organization\",\n  \"name\": \"Your company\",\n  \"url\": \"https://example.com\",\n  \"description\": \"One sentence an assistant can quote.\",\n  \"sameAs\": [\"https://x.com/you\", \"https://github.com/you\"]\n}\n</script>"},"quickWin":true,"impact":6.2},{"id":"jsonld-valid","pillar":"structure","title":"Structured data parses cleanly","status":"na","weight":8,"earned":8,"detail":"No JSON-LD to validate.","why":"","impact":0},{"id":"jsonld-types","pillar":"structure","title":"Structured data describes the right thing","status":"na","weight":8,"earned":8,"detail":"No JSON-LD to evaluate.","why":"","impact":0},{"id":"open-graph","pillar":"structure","title":"Open Graph card is complete","status":"warn","weight":6,"earned":3.6,"detail":"Missing: og:description, og:type.","why":"When a page is JavaScript-heavy or truncated, Open Graph tags are frequently the only clean summary an agent gets.","fix":{"summary":"Add the four core Open Graph tags plus an image.","lang":"html","snippet":"<meta property=\"og:title\" content=\"Page title\">\n<meta property=\"og:description\" content=\"One sentence.\">\n<meta property=\"og:type\" content=\"website\">\n<meta property=\"og:url\" content=\"https://example.com/page\">\n<meta property=\"og:image\" content=\"https://example.com/og.png\">"},"quickWin":true,"impact":1.2},{"id":"canonical","pillar":"structure","title":"Declares a canonical URL","status":"warn","weight":6,"earned":3,"detail":"Canonical points to another origin: https://www.instagram.com/","why":"Agents dedupe sources by canonical URL, and cross-origin canonicals hand your citation to somebody else.","impact":1.5},{"id":"sitemap","pillar":"structure","title":"Publishes a sitemap","status":"fail","weight":8,"earned":0,"detail":"No sitemap found at https://www.instagram.com/sitemap/ig_seo_profile_sitemap_non_media_eligible.xml.gz or in robots.txt.","why":"Without a sitemap, discovery depends entirely on crawlable links. Any page not reachable by a plain <a href> is invisible.","fix":{"summary":"Generate a sitemap.xml and reference it from robots.txt.","lang":"text","snippet":"Sitemap: https://example.com/sitemap.xml","where":"Append to /robots.txt"},"quickWin":true,"impact":4.1},{"id":"price-structured","pillar":"structure","title":"Prices are machine-readable","status":"na","weight":6,"earned":6,"detail":"No prices detected in the page text.","why":"","impact":0},{"id":"breadcrumbs","pillar":"structure","title":"Declares its place in the site","status":"na","weight":4,"earned":4,"detail":"Top-level page; breadcrumbs are not expected.","why":"","impact":0},{"id":"twitter-card","pillar":"structure","title":"Declares a link preview card","status":"warn","weight":3,"earned":1.5,"detail":"No twitter:* card tags.","why":"Several agents fall back to card metadata when they cannot extract the body reliably.","fix":{"summary":"Add a summary_large_image card.","lang":"html","snippet":"<meta name=\"twitter:card\" content=\"summary_large_image\">\n<meta name=\"twitter:title\" content=\"Page title\">\n<meta name=\"twitter:description\" content=\"One sentence.\">"},"quickWin":true,"impact":0.8},{"id":"microdata","pillar":"structure","title":"Inline microdata annotations","status":"na","weight":2,"earned":2,"detail":"No microdata; JSON-LD is the preferred format anyway.","why":"","impact":0},{"id":"links-crawlable","pillar":"actionability","title":"Navigation uses real links","status":"pass","weight":12,"earned":12,"detail":"All 18 links resolve to a real URL.","why":"Real hrefs are the only navigation primitive an agent has.","impact":0},{"id":"anchor-text","pillar":"actionability","title":"Link text describes the destination","status":"pass","weight":8,"earned":8,"detail":"100% of links have descriptive text.","why":"Link text is how an agent decides which link to follow when it is looking for something specific.","impact":0},{"id":"internal-nav","pillar":"actionability","title":"Links onward into the site","status":"pass","weight":6,"earned":6,"detail":"8 internal links give an agent somewhere to go next.","why":"Agents explore a site breadth-first from whatever page they landed on. Dense internal linking is how the rest of your content gets found.","impact":0},{"id":"form-labels","pillar":"actionability","title":"Form fields are labelled","status":"pass","weight":8,"earned":8,"detail":"All 3 fields have an associated label or aria-label.","why":"An agent filling a form on a user's behalf reads labels to decide what goes in each box.","impact":0},{"id":"form-names","pillar":"actionability","title":"Form fields have stable names","status":"warn","weight":6,"earned":4,"detail":"1 field without a name attribute.","why":"Agents build form submissions from name attributes. Missing or randomised names make your form unusable to automation and fragile for everyone.","fix":{"summary":"Give each field a stable, human-readable name that survives your build."},"evidence":["<input type=\"checkbox\" name=\"\">"],"quickWin":true,"impact":0.5},{"id":"form-autocomplete","pillar":"actionability","title":"Fields declare autocomplete tokens","status":"warn","weight":4,"earned":2,"detail":"Only 1 of 2 text fields declare an autocomplete token.","why":"These tokens are the closest thing the web has to a machine-readable form schema, and they cost one attribute each.","fix":{"summary":"Add autocomplete tokens: email, name, organization, tel, street-address, country.","lang":"html","snippet":"<input name=\"email\" type=\"email\" autocomplete=\"email\">"},"quickWin":true,"impact":0.5},{"id":"button-semantics","pillar":"actionability","title":"Controls are real buttons","status":"fail","weight":6,"earned":2,"detail":"2 div/span elements styled as buttons against 1 native controls.","why":"Agents identify what they can click from element semantics. Styled divs are invisible as controls, so any flow gated behind one cannot be completed.","fix":{"summary":"Use <button> for actions and <a href> for navigation. Style them, do not replace them."},"impact":1},{"id":"contact-affordance","pillar":"actionability","title":"Reachable by a human, discoverably","status":"warn","weight":5,"earned":2.5,"detail":"Only one weak contact signal found.","why":"\"How do I get in touch with them\" is one of the most common agent-mediated questions about a company. Make the answer machine-readable.","fix":{"summary":"Add a contactPoint to your Organization schema and link a real contact page.","lang":"json","snippet":"{\"@type\":\"Organization\",\"contactPoint\":[{\"@type\":\"ContactPoint\",\"contactType\":\"customer support\",\"email\":\"support@example.com\",\"url\":\"https://example.com/contact\"}]}"},"quickWin":true,"impact":0.7},{"id":"search-affordance","pillar":"actionability","title":"Site search is machine-usable","status":"warn","weight":4,"earned":1,"detail":"No crawlable GET search form and no SearchAction.","why":"Without a GET-addressable search, an agent looking for one specific page on your site has to fetch dozens of pages to find it, and usually gives up first.","fix":{"summary":"Expose search at a GET URL like /search?q=… and declare it as a SearchAction."},"quickWin":true,"impact":0.8},{"id":"api-discovery","pillar":"actionability","title":"Programmatic surface is discoverable","status":"warn","weight":6,"earned":3,"detail":"docs link: https://developers.facebook.com/docs/instagram","why":"A docs link is a start, but nothing tells an agent where the machine-readable entry point is.","fix":{"summary":"Publish a /.well-known/mcp.json or link your OpenAPI document from the page head."},"quickWin":true,"impact":0.8},{"id":"llms-txt","pillar":"contract","title":"Publishes an llms.txt","status":"fail","weight":14,"earned":0,"detail":"No /llms.txt or /llms-full.txt at https://instagram.com.","why":"Without it, an assistant deciding what your site is about crawls whatever it happens to find. llms.txt is the cheapest way to control that first impression, and today most of your competitors do not have one either.","fix":{"summary":"Publish an llms.txt: a title, one paragraph, then curated links grouped by intent.","where":"/llms.txt","lang":"markdown","snippet":"# Example Inc\n\n> One paragraph an assistant can quote verbatim about what you do and who it is for.\n\n## Docs\n- [Quickstart](https://example.com/docs/quickstart): Get running in five minutes.\n- [API reference](https://example.com/docs/api): Every endpoint with examples.\n\n## Product\n- [Pricing](https://example.com/pricing): Plans, limits and exact prices.\n- [Changelog](https://example.com/changelog): What shipped, newest first.\n\n## Policies\n- [Terms](https://example.com/terms)\n- [Contact](https://example.com/contact): support@example.com"},"quickWin":true,"impact":4.7},{"id":"llms-txt-quality","pillar":"contract","title":"llms.txt is actually useful","status":"na","weight":6,"earned":6,"detail":"No llms.txt to evaluate.","why":"","impact":0},{"id":"ai-policy","pillar":"contract","title":"States an explicit AI policy","status":"pass","weight":6,"earned":6,"detail":"robots.txt names specific AI crawlers rather than relying on the wildcard group.","why":"Naming crawlers explicitly is how you separate \"do not train on me\" from \"do not send me traffic\". The wildcard group cannot express that distinction.","impact":0},{"id":"mcp-manifest","pillar":"contract","title":"Exposes an agent-callable manifest","status":"fail","weight":6,"earned":0,"detail":"No /.well-known/mcp.json and no ai-plugin.json.","why":"This is the highest-leverage unclaimed slot on the web right now. The sites that publish a callable surface get used directly instead of guessed at.","fix":{"summary":"Publish a manifest naming what an agent can do with you and where to call it.","where":"/.well-known/mcp.json","lang":"json","snippet":"{\n  \"schema_version\": \"2025-06-18\",\n  \"name\": \"example\",\n  \"description\": \"Search the catalogue and check availability.\",\n  \"documentation\": \"https://example.com/docs\",\n  \"servers\": [\n    { \"type\": \"http\", \"url\": \"https://mcp.example.com\" }\n  ],\n  \"contact\": \"support@example.com\"\n}"},"impact":2},{"id":"identity","pillar":"contract","title":"Identity is machine-verifiable","status":"fail","weight":5,"earned":0,"detail":"No Organization structured data on the page.","why":"Entity resolution is how assistants decide two mentions are the same company. Unresolved entities get merged with, or mistaken for, someone else.","fix":{"summary":"Publish Organization data with sameAs links to your verified profiles.","lang":"json","snippet":"{\"@context\":\"https://schema.org\",\"@type\":\"Organization\",\"name\":\"Example Inc\",\"url\":\"https://example.com\",\"logo\":\"https://example.com/logo.png\",\"sameAs\":[\"https://x.com/example\",\"https://github.com/example\",\"https://www.linkedin.com/company/example\"]}"},"quickWin":true,"impact":1.7},{"id":"freshness","pillar":"contract","title":"Says when the content changed","status":"warn","weight":5,"earned":0,"detail":"No Last-Modified, ETag, dateModified or <time> element anywhere.","why":"Agents deprioritise content they cannot date, and re-fetch undated pages more often, which costs you bandwidth for nothing.","fix":{"summary":"Send Last-Modified and ETag, and publish dateModified in your structured data.","lang":"json","snippet":"{\"@type\":\"Article\",\"datePublished\":\"2026-01-15\",\"dateModified\":\"2026-08-01\"}"},"quickWin":true,"impact":1.7},{"id":"licence-signal","pillar":"contract","title":"Declares content licensing","status":"warn","weight":5,"earned":1,"detail":"No rel=\"license\" link and no license or copyright fields in structured data.","why":"If you care how your content is reused, say so where machines can read it. A footer copyright line is not machine-readable.","fix":{"summary":"Declare the licence on the page and in your structured data.","lang":"html","snippet":"<link rel=\"license\" href=\"https://example.com/terms\">"},"quickWin":true,"impact":1.3},{"id":"security-txt","pillar":"contract","title":"Publishes security.txt","status":"warn","weight":4,"earned":0.8,"detail":"No /.well-known/security.txt.","why":"It is the standard machine-readable place to say who to contact. Agents and researchers both look there first.","fix":{"summary":"Add a security.txt with a contact address and an expiry date.","where":"/.well-known/security.txt","lang":"text","snippet":"Contact: mailto:security@example.com\nExpires: 2027-01-01T00:00:00.000Z\nPreferred-Languages: en"},"quickWin":true,"impact":1.1}],"agents":[{"name":"OAI-SearchBot","userAgent":"Mozilla/5.0 (compatible; OAI-SearchBot/1.0; +https://openai.com/searchbot)","robotsAllowed":false,"note":"Blocked by \"Disallow: /\" in the * group."},{"name":"ChatGPT-User","userAgent":"Mozilla/5.0 (compatible; ChatGPT-User/1.0; +https://openai.com/bot)","robotsAllowed":false,"note":"Blocked by \"Disallow: /\" in the * group."},{"name":"GPTBot","userAgent":"Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.2; +https://openai.com/gptbot)","robotsAllowed":false,"note":"Blocked by \"Disallow: /\" in the gptbot group."},{"name":"ClaudeBot","userAgent":"Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)","robotsAllowed":false,"note":"Blocked by \"Disallow: /\" in the claudebot group."},{"name":"Claude-User","userAgent":"Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; Claude-User/1.0; +Claude-User@anthropic.com)","robotsAllowed":false,"note":"Blocked by \"Disallow: /\" in the * group."},{"name":"Claude-SearchBot","userAgent":"Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; Claude-SearchBot/1.0; +Claude-SearchBot@anthropic.com)","robotsAllowed":false,"note":"Blocked by \"Disallow: /\" in the * group."},{"name":"PerplexityBot","userAgent":"Mozilla/5.0 (compatible; PerplexityBot/1.0; +https://perplexity.ai/perplexitybot)","robotsAllowed":false,"note":"Blocked by \"Disallow: /\" in the perplexitybot group."},{"name":"Perplexity-User","userAgent":"Mozilla/5.0 (compatible; Perplexity-User/1.0; +https://perplexity.ai/perplexity-user)","robotsAllowed":false,"note":"Blocked by \"Disallow: /\" in the * group."},{"name":"Google-Extended","userAgent":"Mozilla/5.0 (compatible; Google-Extended/1.0)","robotsAllowed":false,"note":"Blocked by \"Disallow: /\" in the google-extended group."},{"name":"Googlebot","userAgent":"Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)","robotsAllowed":true},{"name":"Bingbot","userAgent":"Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)","robotsAllowed":true},{"name":"Applebot-Extended","userAgent":"Mozilla/5.0 (compatible; Applebot-Extended/1.0)","robotsAllowed":false,"note":"Blocked by \"Disallow: /\" in the applebot-extended group."},{"name":"meta-externalagent","userAgent":"meta-externalagent/1.1 (+https://developers.facebook.com/docs/sharing/webmasters/crawler)","robotsAllowed":false,"note":"Blocked by \"Disallow: /\" in the * group."},{"name":"Amazonbot","userAgent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36 (compatible; Amazonbot/0.1; +https://developer.amazon.com/support/amazonbot)","robotsAllowed":false,"note":"Blocked by \"Disallow: /\" in the amazonbot group."},{"name":"CCBot","userAgent":"CCBot/2.0 (https://commoncrawl.org/faq/)","robotsAllowed":false,"note":"Blocked by \"Disallow: /\" in the * group."},{"name":"DuckAssistBot","userAgent":"Mozilla/5.0 (compatible; DuckAssistBot/1.0; +https://duckduckgo.com/duckassistbot/)","robotsAllowed":false,"note":"Blocked by \"Disallow: /\" in the * group."}],"fetch":{"url":"https://instagram.com/","status":200,"ms":866,"bytes":473234,"contentType":"text/html; charset=\"utf-8\"","redirects":["301 https://instagram.com/ -> https://www.instagram.com/"],"headers":{"accept-ch":"viewport-width,dpr,Sec-CH-Prefers-Color-Scheme,Sec-CH-UA-Full-Version-List,Sec-CH-UA-Platform-Version,Sec-CH-UA-Model","accept-ch-lifetime":"4838400","alt-svc":"h3=\":443\"; ma=86400","cache-control":"private, no-cache, no-store, must-revalidate","connection":"keep-alive","content-encoding":"br","content-security-policy":"default-src *.facebook.com *.fbcdn.net *.instagram.com blob:;script-src *.instagram.com static.cdninstagram.com z-p42-static.cdninstagram.com https://instagram.com https://*.www.instagram.com https://*.cdninstagram.com wss://www.instagram.com blob: *.facebook.com *.fbcdn.net 127.0.0.1:* 'nonce-CNLyTJaf' 'self' 'unsafe-eval' https://accounts.google.com;style-src *.instagram.com static.cdninstagram.com z-p42-static.cdninstagram.com https://*.www.instagram.com data: blob: 'unsafe-inline' *.fbcdn.net *.facebook.com https://accounts.google.com;connect-src *.instagram.com wss://edge-chat.instagram.com https://instagram.com https://*.www.instagram.com https://*.graph.instagram.com https://*.i.instagram.com https://*.od.instagram.com https://i.threads.net https://i.threads.com https://*.od.threads.net https://*.od.threads.com wss://www.instagram.com blob: *.facebook.com facebook.com *.fbcdn.net wss://*.facebook.com:* ws://localhost:* *.cdninstagram.com wss://*.instagram.com:* 'self' https://accounts.google.com https://meta.privacy-gateway.cloudflare.com/relay;font-src *.instagram.com static.cdninstagram.com z-p42-static.cdninstagram.com data: *.fbcdn.net *.intern.facebook.com *.facebook.com https://*.cdninstagram.com;img-src *.instagram.com *.facebook.com *.fbcdn.net data: *.cdninstagram.com *.whatsapp.net blob: https://*.threads.net https://*.threads.com *.fbsbx.com android-webview-video-poster: *.oculuscdn.com;media-src *.facebook.com *.fbcdn.net *.instagram.com *.cdninstagram.com *.fbsbx.com data: blob:;child-src *.facebook.com *.fbcdn.net *.instagram.com data: blob:;frame-src https://instagram.com *.instagram.com *.facebook.com *.fbsbx.com fbsbx.com data:;manifest-src *.facebook.com *.fbcdn.net *.instagram.com data: blob:;object-src *.facebook.com *.fbcdn.net *.instagram.com data: blob:;block-all-mixed-content;upgrade-insecure-requests;report-uri https://www.facebook.com/csp/reporting/?m=c&minimize=0;","content-security-policy-report-only":"default-src *.facebook.com *.fbcdn.net *.instagram.com blob:;script-src *.instagram.com static.cdninstagram.com z-p42-static.cdninstagram.com https://instagram.com https://*.www.instagram.com https://*.cdninstagram.com wss://www.instagram.com blob: *.facebook.com *.fbcdn.net 127.0.0.1:* 'nonce-CNLyTJaf' 'self' 'report-sample';style-src *.instagram.com static.cdninstagram.com z-p42-static.cdninstagram.com https://*.www.instagram.com data: blob: 'unsafe-inline' *.fbcdn.net *.facebook.com;connect-src *.instagram.com wss://edge-chat.instagram.com https://instagram.com https://*.www.instagram.com https://*.graph.instagram.com https://*.i.instagram.com https://*.od.instagram.com https://i.threads.net https://i.threads.com https://*.od.threads.net https://*.od.threads.com wss://www.instagram.com blob: *.facebook.com facebook.com *.fbcdn.net wss://*.facebook.com:* ws://localhost:* *.cdninstagram.com wss://*.instagram.com:* 'self';font-src *.instagram.com static.cdninstagram.com z-p42-static.cdninstagram.com data: *.fbcdn.net *.intern.facebook.com *.facebook.com https://*.cdninstagram.com;img-src *.instagram.com *.facebook.com *.fbcdn.net data: *.cdninstagram.com *.whatsapp.net blob: https://*.threads.net https://*.threads.com *.fbsbx.com android-webview-video-poster: *.oculuscdn.com;media-src *.facebook.com *.fbcdn.net *.instagram.com *.cdninstagram.com *.fbsbx.com data: blob:;child-src *.facebook.com *.fbcdn.net *.instagram.com data: blob:;frame-src https://instagram.com *.instagram.com *.facebook.com *.fbsbx.com fbsbx.com data:;manifest-src *.facebook.com *.fbcdn.net *.instagram.com data: blob:;object-src *.facebook.com *.fbcdn.net *.instagram.com data: blob:;block-all-mixed-content;report-uri https://www.facebook.com/csp/reporting/?m=c&minimize=0;","content-type":"text/html; charset=\"utf-8\"","cross-origin-opener-policy":"unsafe-none","cross-origin-resource-policy":"same-origin","date":"Wed, 26 Aug 2026 23:03:19 GMT","document-policy":"force-load-at-top, include-js-call-stacks-in-crash-reports","expires":"Sat, 01 Jan 2000 00:00:00 GMT","origin-agent-cluster":"?1","origin-trial":"ArDvqjFKr1fHThlSM8Kkp74sxlOCFTeqYJMXCGqCG/VJmcYlO/0UavmpqPDit2KppDf1THInNpwA36GmtgPOug8AAAB2eyJvcmlnaW4iOiJodHRwczovL3d3dy5pbnN0YWdyYW0uY29tOjQ0MyIsImZlYXR1cmUiOiJDcmFzaFJlcG9ydGluZ1N0b3JhZ2VBUEkiLCJleHBpcnkiOjE3NzY3Mjk2MDAsImlzU3ViZG9tYWluIjp0cnVlfQ==","permissions-policy":"accelerometer=(self), attribution-reporting=(), autoplay=(), bluetooth=(), camera=(self), ch-device-memory=(), ch-downlink=(), ch-dpr=(), ch-ect=(), ch-rtt=(), ch-save-data=(), ch-ua-arch=(), ch-ua-bitness=(), ch-viewport-height=(), ch-viewport-width=(), ch-width=(), clipboard-read=(), clipboard-write=(self), compute-pressure=(), display-capture=(self), encrypted-media=(), fullscreen=(self), gamepad=(), geolocation=(self), gyroscope=(self), hid=(), idle-detection=(), interest-cohort=(), keyboard-map=(), local-fonts=(), magnetometer=(), microphone=(self), midi=(), otp-credentials=(self), payment=(), picture-in-picture=(self), private-state-token-issuance=(), publickey-credentials-get=(self \"https://*.facebook.com\" \"https://facebook.com\"), screen-wake-lock=(), serial=(), shared-storage=(), shared-storage-select-url=(), private-state-token-redemption=(), usb=(), unload=(self), window-management=(), xr-spatial-tracking=();report-to=\"permissions_policy\"","pragma":"no-cache","report-to":"{\"max_age\":2592000,\"endpoints\":[{\"url\":\"https:\\/\\/www.facebook.com\\/browser_reporting\\/coop\\/?minimize=0\"}],\"group\":\"coop_report\",\"include_subdomains\":true}, {\"max_age\":259200,\"endpoints\":[{\"url\":\"https:\\/\\/www.instagram.com\\/error\\/ig_web_error_reports\\/?device_level=unknown&brsid=7678479821496022284&comet_app_key=7&cpp=C3&cv=1046100906&st=1787785399129\"}]}, {\"max_age\":21600,\"endpoints\":[{\"url\":\"https:\\/\\/www.instagram.com\\/error\\/ig_web_error_reports\\/\"}],\"group\":\"permissions_policy\"}","reporting-endpoints":"coop_report=\"https://www.facebook.com/browser_reporting/coop/?minimize=0\", default=\"https://www.instagram.com/error/ig_web_error_reports/?device_level=unknown&brsid=7678479821496022284&comet_app_key=7&cpp=C3&cv=1046100906&st=1787785399129\", permissions_policy=\"https://www.instagram.com/error/ig_web_error_reports/\"","set-cookie":"csrftoken=1tfr6ZKSp2emMtu1nDdnVk; expires=Thu, 30-Sep-2027 23:03:19 GMT; Max-Age=34560000; path=/; domain=.instagram.com; secure","strict-transport-security":"max-age=31536000; preload; includeSubDomains","transfer-encoding":"chunked","vary":"Accept-Encoding","x-content-type-options":"nosniff","x-fb-connection-quality":"EXCELLENT; q=0.9, rtt=9, rtx=0, c=15, mss=1380, tbw=4823, tp=-1, tpl=-1, uplat=238, ullat=0","x-fb-debug":"rOQVQodDKHiR/oW28x2CiJo2JRlhSDtp+4cFKbZMZQkgOEGaCXvMA8elKczAYSDbMWrhb4y2xJaU69r30ZT19g==","x-frame-options":"DENY","x-stack":"www","x-xss-protection":"0"},"ok":true,"blocked":false},"facts":{"title":"Instagram","metaDescription":"Create an account or log in to Instagram - Share what you're into with the people who get you.","lang":"en","canonical":"https://www.instagram.com/","wordCount":68,"textRatio":0.0022018705333936277,"looksClientRendered":false,"frameworkHints":["React"],"scriptBytes":257495,"htmlBytes":473234},"site":{"origin":"https://instagram.com","robotsTxt":{"found":true,"status":200,"body":"# Notice: Collection of data on Instagram through automated means is\n# prohibited unless you have express written permission from Instagram\n# and may only be conducted for the limited purpose contained in said\n# permission.\n# All authorized user-agents listed on this page must comply with Meta’s\n# Automated Data Collection Terms available at:\n# https://www.facebook.com/legal/automated_data_collection_terms\nUser-agent: Amazonbot\nDisallow: /\n\nUser-agent: Applebot-Extended\nDisallow: /\n\nUser-agent: Brightbot\nDisallow: /\n\nUser-agent: ClaudeBot\nDisallow: /\n\nUser-agent: Google-Extended\nDisallow: /\n\nUser-agent: GPTBot\nDisallow: /\n\nUser-agent: PerplexityBot\nDisallow: /\n\nUser-agent: PetalBot\nDisallow: /\n\nUser-agent: Scrapy\nDisallow: /\n\nUser-agent: uptimerobot\nDisallow: /\n\nUser-agent: viberbot\nDisallow: /\n\nUser-agent: YaK\nDisallow: /\n\nUser-agent: Yandex\nDisallow: /\n\nUser-agent: Yeti\nDisallow: /\n\nUser-agent: Applebot\nDisallow: /accounts/login/*?next=\nDisallow: /ajax/\nDisallow: /client_error/\nDisallow: /direct/\nDisallow: /logging/\nDisallow: /publicapi/\nDisallow: /qp/batch_fetch_web/\nDisallow: /query/\nAllow: /places/c/\n\nUser-agent: Bingbot\nDisallow: /*/c/\nDisallow: /*/comments/\nDisallow: /*/liked_by/\nDisallow: /accounts/login/*?next=\nDisallow: /ajax/\nDisallow: /client_error/\nDisallow: /direct/\nDisallow: /logging/\nDisallow: /publicapi/\nDisallow: /qp/batch_fetch_web/\nDisallow: /query/\nAllow: /places/c/\n\nUser-agent: deepcrawl\nDisallow: /accounts/login/*?next=\nDisallow: /ajax/\nDisallow: /client_error/\nDisallow: /direct/\nDisallow: /logging/\nDisallow: /publicapi/\nDisallow: /qp/batch_fetch_web/\nDisallow: /query/\nAllow: /places/c/\n\nUser-agent: Discordbot\nDisallow: /accounts/login/*?next=\nDisallow: /ajax/\nDisallow: /client_error/\nDisallow: /direct/\nDisallow: /logging/\nDisallow: /publicapi/\nDisallow: /qp/batch_fetch_web/\nDisallow: /query/\nAllow: /places/c/\n\nUser-agent: DuckDuckBot\nDisallow: /accounts/login/*?next=\nDisallow: /ajax/\nDisallow: /client_error/\nDisallow: /direct/\nDisallow: /logging/\nDisallow: /publicapi/\nDisallow: /qp/batch_fetch_web/\nDisallow: /query/\nAllow: /places/c/\n\nUser-agent: facebookexternalhit\nDisallow: /accounts/login/*?next=\nDisallow: /ajax/\nDisallow: /client_error/\nDisallow: /direct/\nDisallow: /logging/\nDisallow: /publicapi/\nDisallow: /qp/batch_fetch_web/\nDisallow: /query/\nAllow: /places/c/\n\nUser-agent: Googlebot\nDisallow: /*/c/\nDisallow: /*/comments/\nDisallow: /*/liked_by/\nDisallow: /accounts/login/*?next=\nDisallow: /ajax/\nDisallow: /client_error/\nDisallow: /direct/\nDisallow: /logging/\nDisallow: /publicapi/\nDisallow: /qp/batch_fetch_web/\nDisallow: /query/\nAllow: /places/c/\n\nUser-agent: Googlebot-Image\nDisallow: /accounts/login/*?next=\nDisallow: /ajax/\nDisallow: /client_error/\nDisallow: /direct/\nDisallow: /logging/\nDisallow: /publicapi/\nDisallow: /qp/batch_fetch_web/\nDisallow: /query/\nAllow: /places/c/\n\nUser-agent: Googlebot-Video\nDisallow: /accounts/login/*?next=\nDisallow: /ajax/\nDisallow: /client_error/\nDisallow: /direct/\nDisallow: /logging/\nDisallow: /publicapi/\nDisallow: /qp/batch_fetch_web/\nDisallow: /query/\nAllow: /places/c/\n\nUser-agent: Googlebot-News\nDisallow: /accounts/login/*?next=\nDisallow: /ajax/\nDisallow: /client_error/\nDisallow: /direct/\nDisallow: /logging/\nDisallow: /publicapi/\nDisallow: /qp/batch_fetch_web/\nDisallow: /query/\nAllow: /places/c/\n\nUser-agent: Google-InspectionTool\nDisallow: /accounts/login/*?next=\nDisallow: /ajax/\nDisallow: /client_error/\nDisallow: /direct/\nDisallow: /logging/\nDisallow: /publicapi/\nDisallow: /qp/batch_fetch_web/\nDisallow: /query/\nAllow: /places/c/\n\nUser-agent: lumar\nDisallow: /accounts/login/*?next=\nDisallow: /ajax/\nDisallow: /client_error/\nDisallow: /direct/\nDisallow: /logging/\nDisallow: /publicapi/\nDisallow: /qp/batch_fetch_web/\nDisallow: /query/\nAllow: /places/c/\n\nUser-agent: LinkedInBot\nDisallow: /accounts/login/*?next=\nDisallow: /ajax/\nDisallow: /client_error/\nDisallow: /direct/\nDisallow: /logging/\nDisallow: /publicapi/\nDisallow: /qp/batch_fetch_web/\nDisallow: /query/\nAllow: /places/c/\n\nUser-agent: msnbot\nDisallow: /accounts/login/*?next=\nDisallow: /ajax/\nDisallow: /client_error/\nDisallow: /direct/\nDisallow: /logging/\nDisallow: /publicapi/\nDisallow: /qp/batch_fetch_web/\nDisallow: /query/\nAllow: /places/c/\n\nUser-agent: Pinterestbot\nDisallow: /accounts/login/*?next=\nDisallow: /ajax/\nDisallow: /client_error/\nDisallow: /direct/\nDisallow: /logging/\nDisallow: /publicapi/\nDisallow: /qp/batch_fetch_web/\nDisallow: /query/\nAllow: /places/c/\n\nUser-agent: Screaming Frog SEO Spider\nDisallow: /accounts/login/*?next=\nDisallow: /ajax/\nDisallow: /client_error/\nDisallow: /direct/\nDisallow: /logging/\nDisallow: /publicapi/\nDisallow: /qp/batch_fetch_web/\nDisallow: /query/\nAllow: /places/c/\n\nUser-agent: seznambot\nDisallow: /accounts/login/*?next=\nDisallow: /ajax/\nDisallow: /client_error/\nDisallow: /direct/\nDisallow: /logging/\nDisallow: /publicapi/\nDisallow: /qp/batch_fetch_web/\nDisallow: /query/\nAllow: /places/c/\n\nUser-agent: Slurp\nDisallow: /accounts/login/*?next=\nDisallow: /ajax/\nDisallow: /client_error/\nDisallow: /direct/\nDisallow: /logging/\nDisallow: /publicapi/\nDisallow: /qp/batch_fetch_web/\nDisallow: /query/\nAllow: /places/c/\n\nUser-agent: teoma\nDisallow: /accounts/login/*?next=\nDisallow: /ajax/\nDisallow: /client_error/\nDisallow: /direct/\nDisallow: /logging/\nDisallow: /publicapi/\nDisallow: /qp/batch_fetch_web/\nDisallow: /query/\nAllow: /places/c/\n\nUser-agent: TelegramBot\nDisallow: /accounts/login/*?next=\nDisallow: /ajax/\nDisallow: /client_error/\nDisallow: /direct/\nDisallow: /logging/\nDisallow: /publicapi/\nDisallow: /qp/batch_fetch_web/\nDisallow: /query/\nAllow: /places/c/\n\nUser-agent: Twitterbot\nDisallow: /accounts/login/*?next=\nDisallow: /ajax/\nDisallow: /client_error/\nDisallow: /direct/\nDisallow: /logging/\nDisallow: /publicapi/\nDisallow: /qp/batch_fetch_web/\nDisallow: /query/\nAllow: /places/c/\n\nUser-agent: *\nDisallow: /\n\nSitemap: https://www.instagram.com/sitemap/ig_places_sitemap.xml.gz\nSitemap: https://www.instagram.com/sitemap/ig_seo_profile_sitemap.xml.gz\nSitemap: https://www.instagram.com/sitemap/ig_seo_profile_sitemap_non_media_eligible.xml.gz\nSitemap: https://www.instagram.com/sitemap/ig_seo_location_sitemap.xml.gz\nSitemap: https://www.instagram.com/sitemap/dim_ig_logged_out_web_keyword_ent.xml.gz\n\n","sitemaps":["https://www.instagram.com/sitemap/ig_places_sitemap.xml.gz","https://www.instagram.com/sitemap/ig_seo_profile_sitemap.xml.gz","https://www.instagram.com/sitemap/ig_seo_profile_sitemap_non_media_eligible.xml.gz","https://www.instagram.com/sitemap/ig_seo_location_sitemap.xml.gz","https://www.instagram.com/sitemap/dim_ig_logged_out_web_keyword_ent.xml.gz"]},"sitemap":{"found":false,"status":403,"urlCount":0,"url":"https://www.instagram.com/sitemap/ig_seo_profile_sitemap_non_media_eligible.xml.gz"},"llmsTxt":{"found":false,"status":429,"body":"","url":"https://instagram.com/llms.txt","sectionCount":0,"linkCount":0},"feeds":[],"wellKnown":{"/.well-known/security.txt":{"found":false,"status":429},"/.well-known/ai-plugin.json":{"found":false,"status":429},"/.well-known/mcp.json":{"found":false,"status":429},"/.well-known/apple-app-site-association":{"found":true,"status":200},"/.well-known/agent.json":{"found":false,"status":429}},"openapi":[],"mcp":{"found":false,"url":"https://instagram.com/.well-known/mcp.json"}},"priorities":[{"id":"jsonld-present","pillar":"structure","title":"Ships structured data","status":"fail","weight":12,"earned":0,"detail":"No JSON-LD and no microdata anywhere on the page.","why":"Structured data is the only part of your page an agent can consume without interpretation. Everything else it has to infer, and inference is where it invents facts about you.","fix":{"summary":"Add a JSON-LD block describing what this page actually is.","lang":"html","where":"Inside <head>, one block per page.","snippet":"<script type=\"application/ld+json\">\n{\n  \"@context\": \"https://schema.org\",\n  \"@type\": \"Organization\",\n  \"name\": \"Your company\",\n  \"url\": \"https://example.com\",\n  \"description\": \"One sentence an assistant can quote.\",\n  \"sameAs\": [\"https://x.com/you\", \"https://github.com/you\"]\n}\n</script>"},"quickWin":true,"impact":6.2},{"id":"llms-txt","pillar":"contract","title":"Publishes an llms.txt","status":"fail","weight":14,"earned":0,"detail":"No /llms.txt or /llms-full.txt at https://instagram.com.","why":"Without it, an assistant deciding what your site is about crawls whatever it happens to find. llms.txt is the cheapest way to control that first impression, and today most of your competitors do not have one either.","fix":{"summary":"Publish an llms.txt: a title, one paragraph, then curated links grouped by intent.","where":"/llms.txt","lang":"markdown","snippet":"# Example Inc\n\n> One paragraph an assistant can quote verbatim about what you do and who it is for.\n\n## Docs\n- [Quickstart](https://example.com/docs/quickstart): Get running in five minutes.\n- [API reference](https://example.com/docs/api): Every endpoint with examples.\n\n## Product\n- [Pricing](https://example.com/pricing): Plans, limits and exact prices.\n- [Changelog](https://example.com/changelog): What shipped, newest first.\n\n## Policies\n- [Terms](https://example.com/terms)\n- [Contact](https://example.com/contact): support@example.com"},"quickWin":true,"impact":4.7},{"id":"sitemap","pillar":"structure","title":"Publishes a sitemap","status":"fail","weight":8,"earned":0,"detail":"No sitemap found at https://www.instagram.com/sitemap/ig_seo_profile_sitemap_non_media_eligible.xml.gz or in robots.txt.","why":"Without a sitemap, discovery depends entirely on crawlable links. Any page not reachable by a plain <a href> is invisible.","fix":{"summary":"Generate a sitemap.xml and reference it from robots.txt.","lang":"text","snippet":"Sitemap: https://example.com/sitemap.xml","where":"Append to /robots.txt"},"quickWin":true,"impact":4.1},{"id":"robots-answer-engines","pillar":"reachability","title":"Answer engines are allowed to crawl","status":"fail","weight":12,"earned":0,"detail":"5 of 5 blocked by robots.txt: OAI-SearchBot, Claude-SearchBot, PerplexityBot, Amazonbot, DuckAssistBot.","why":"These crawlers are the ones that put your link inside an AI answer. Blocking them removes the referral traffic, not just the training use.","fix":{"summary":"Allow these crawlers explicitly in robots.txt. Indexes you so an assistant can cite and link you. Blocking it removes you from AI answers.","lang":"text","snippet":"User-agent: OAI-SearchBot\nAllow: /\n\nUser-agent: Claude-SearchBot\nAllow: /\n\nUser-agent: PerplexityBot\nAllow: /\n\nUser-agent: Amazonbot\nAllow: /\n\nUser-agent: DuckAssistBot\nAllow: /","where":"/robots.txt"},"evidence":["OAI-SearchBot (OpenAI) - You will not appear as a source in ChatGPT search results.","Claude-SearchBot (Anthropic) - You will not be cited in Claude web search answers.","PerplexityBot (Perplexity) - You lose Perplexity citations, one of the highest-converting AI referral sources.","Amazonbot (Amazon) - Excluded from Alexa and Rufus style shopping answers.","DuckAssistBot (DuckDuckGo) - Excluded from DuckDuckGo AI assist answers."],"quickWin":true,"impact":3.4},{"id":"content-volume","pillar":"comprehension","title":"Enough substance to be worth citing","status":"fail","weight":10,"earned":0,"detail":"Only 68 words of readable text reached the agent.","why":"There is not enough here for an assistant to build an answer from, so it will use someone else as the source.","fix":{"summary":"Make sure the real content is in the HTML, then make sure there is enough of it."},"impact":3.2},{"id":"h1","pillar":"comprehension","title":"Exactly one <h1> naming the page","status":"fail","weight":8,"earned":0,"detail":"The page has no headings at all.","why":"Without an h1 the agent has no anchor for the document topic and falls back to the title tag or the URL slug.","fix":{"summary":"Add a single <h1> at the top of the main content that states the page subject."},"quickWin":true,"impact":2.6},{"id":"image-alt","pillar":"comprehension","title":"Images carry alt text","status":"fail","weight":8,"earned":0,"detail":"0 of 1 images have no alt attribute at all, 1 more are empty.","why":"To an agent an undescribed image is a hole in the page. On product, chart and diagram pages that hole is usually the point of the page.","fix":{"summary":"Describe what each image shows. Use alt=\"\" only for purely decorative images.","lang":"html","snippet":"<img src=\"/chart.png\" alt=\"AX scores of the top 100 SaaS sites, median 41 out of 100\">"},"quickWin":true,"impact":2.6},{"id":"text-ratio","pillar":"comprehension","title":"Signal-to-markup ratio","status":"fail","weight":8,"earned":0,"detail":"0.2% of the payload is readable text.","why":"The document is almost entirely machinery. An agent truncating this page will likely truncate before reaching any of your content.","fix":{"summary":"Reduce inline script and serialized state; aim for at least 12% readable text."},"impact":2.6},{"id":"robots-user-triggered","pillar":"reachability","title":"User-triggered fetchers are allowed","status":"fail","weight":8,"earned":0,"detail":"3 of 3 blocked by robots.txt: ChatGPT-User, Claude-User, Perplexity-User.","why":"These fetches happen because a human just pasted your link into an assistant. A block here fails in front of a real person who wanted to read you.","fix":{"summary":"Allow these crawlers explicitly in robots.txt. Fetches your page because a human asked an assistant to open it right now. Blocking it breaks a live request.","lang":"text","snippet":"User-agent: ChatGPT-User\nAllow: /\n\nUser-agent: Claude-User\nAllow: /\n\nUser-agent: Perplexity-User\nAllow: /","where":"/robots.txt"},"evidence":["ChatGPT-User (OpenAI) - When a user asks ChatGPT to open your link, it fails in front of them.","Claude-User (Anthropic) - Claude cannot open your page when a user pastes the link.","Perplexity-User (Perplexity) - Live user-requested fetches from Perplexity fail."],"quickWin":true,"impact":2.2},{"id":"mcp-manifest","pillar":"contract","title":"Exposes an agent-callable manifest","status":"fail","weight":6,"earned":0,"detail":"No /.well-known/mcp.json and no ai-plugin.json.","why":"This is the highest-leverage unclaimed slot on the web right now. The sites that publish a callable surface get used directly instead of guessed at.","fix":{"summary":"Publish a manifest naming what an agent can do with you and where to call it.","where":"/.well-known/mcp.json","lang":"json","snippet":"{\n  \"schema_version\": \"2025-06-18\",\n  \"name\": \"example\",\n  \"description\": \"Search the catalogue and check availability.\",\n  \"documentation\": \"https://example.com/docs\",\n  \"servers\": [\n    { \"type\": \"http\", \"url\": \"https://mcp.example.com\" }\n  ],\n  \"contact\": \"support@example.com\"\n}"},"impact":2},{"id":"server-rendered","pillar":"reachability","title":"Content exists without running JavaScript","status":"warn","weight":14,"earned":7,"detail":"Only 68 words arrived in the raw HTML. Some of the page is probably assembled in the browser.","why":"Partial server rendering means agents see a fragment of your argument and may summarise you from the fragment.","fix":{"summary":"Server-render the primary content of the page, not just the shell and navigation."},"impact":2},{"id":"heading-hierarchy","pillar":"comprehension","title":"Headings form a sane outline","status":"fail","weight":6,"earned":0,"detail":"Only 0 headings on the page.","why":"Agents chunk long pages by heading. A page with no outline is chunked arbitrarily and quoted out of context.","fix":{"summary":"Break the content into sections with <h2> headings that read as answers to real questions."},"quickWin":true,"impact":1.9},{"id":"landmarks","pillar":"comprehension","title":"Main content is marked as such","status":"fail","weight":6,"earned":0,"detail":"No <main> element. Landmarks present: footer.","why":"Without a main landmark an extractor has to guess your content boundary heuristically, and on marketing pages it usually guesses the header.","fix":{"summary":"Wrap the primary content in <main>, and each self-contained item in <article>.","lang":"html","snippet":"<main>\n  <article>\n    <h1>…</h1>\n    …\n  </article>\n</main>"},"quickWin":true,"impact":1.9},{"id":"semantic-density","pillar":"comprehension","title":"Uses semantic elements, not div soup","status":"fail","weight":6,"earned":0.2,"detail":"1% semantic (1 semantic vs 121 div).","why":"A page built entirely from divs communicates its structure only through CSS, which agents never load. The visual hierarchy you designed does not reach them.","fix":{"summary":"Replace layout divs with section, article, nav, aside, figure and real list elements where they apply."},"quickWin":true,"impact":1.9},{"id":"title","pillar":"comprehension","title":"Has a descriptive <title>","status":"warn","weight":10,"earned":4,"detail":"The title is only 9 characters: \"Instagram\".","why":"Very short titles force the assistant to guess at context and it will guess from the URL.","fix":{"summary":"Expand the title to name both the page subject and the brand."},"quickWin":true,"impact":1.9},{"id":"freshness","pillar":"contract","title":"Says when the content changed","status":"warn","weight":5,"earned":0,"detail":"No Last-Modified, ETag, dateModified or <time> element anywhere.","why":"Agents deprioritise content they cannot date, and re-fetch undated pages more often, which costs you bandwidth for nothing.","fix":{"summary":"Send Last-Modified and ETag, and publish dateModified in your structured data.","lang":"json","snippet":"{\"@type\":\"Article\",\"datePublished\":\"2026-01-15\",\"dateModified\":\"2026-08-01\"}"},"quickWin":true,"impact":1.7},{"id":"identity","pillar":"contract","title":"Identity is machine-verifiable","status":"fail","weight":5,"earned":0,"detail":"No Organization structured data on the page.","why":"Entity resolution is how assistants decide two mentions are the same company. Unresolved entities get merged with, or mistaken for, someone else.","fix":{"summary":"Publish Organization data with sameAs links to your verified profiles.","lang":"json","snippet":"{\"@context\":\"https://schema.org\",\"@type\":\"Organization\",\"name\":\"Example Inc\",\"url\":\"https://example.com\",\"logo\":\"https://example.com/logo.png\",\"sameAs\":[\"https://x.com/example\",\"https://github.com/example\",\"https://www.linkedin.com/company/example\"]}"},"quickWin":true,"impact":1.7},{"id":"canonical","pillar":"structure","title":"Declares a canonical URL","status":"warn","weight":6,"earned":3,"detail":"Canonical points to another origin: https://www.instagram.com/","why":"Agents dedupe sources by canonical URL, and cross-origin canonicals hand your citation to somebody else.","impact":1.5},{"id":"licence-signal","pillar":"contract","title":"Declares content licensing","status":"warn","weight":5,"earned":1,"detail":"No rel=\"license\" link and no license or copyright fields in structured data.","why":"If you care how your content is reused, say so where machines can read it. A footer copyright line is not machine-readable.","fix":{"summary":"Declare the licence on the page and in your structured data.","lang":"html","snippet":"<link rel=\"license\" href=\"https://example.com/terms\">"},"quickWin":true,"impact":1.3},{"id":"open-graph","pillar":"structure","title":"Open Graph card is complete","status":"warn","weight":6,"earned":3.6,"detail":"Missing: og:description, og:type.","why":"When a page is JavaScript-heavy or truncated, Open Graph tags are frequently the only clean summary an agent gets.","fix":{"summary":"Add the four core Open Graph tags plus an image.","lang":"html","snippet":"<meta property=\"og:title\" content=\"Page title\">\n<meta property=\"og:description\" content=\"One sentence.\">\n<meta property=\"og:type\" content=\"website\">\n<meta property=\"og:url\" content=\"https://example.com/page\">\n<meta property=\"og:image\" content=\"https://example.com/og.png\">"},"quickWin":true,"impact":1.2},{"id":"security-txt","pillar":"contract","title":"Publishes security.txt","status":"warn","weight":4,"earned":0.8,"detail":"No /.well-known/security.txt.","why":"It is the standard machine-readable place to say who to contact. Agents and researchers both look there first.","fix":{"summary":"Add a security.txt with a contact address and an expiry date.","where":"/.well-known/security.txt","lang":"text","snippet":"Contact: mailto:security@example.com\nExpires: 2027-01-01T00:00:00.000Z\nPreferred-Languages: en"},"quickWin":true,"impact":1.1},{"id":"button-semantics","pillar":"actionability","title":"Controls are real buttons","status":"fail","weight":6,"earned":2,"detail":"2 div/span elements styled as buttons against 1 native controls.","why":"Agents identify what they can click from element semantics. Styled divs are invisible as controls, so any flow gated behind one cannot be completed.","fix":{"summary":"Use <button> for actions and <a href> for navigation. Style them, do not replace them."},"impact":1},{"id":"api-discovery","pillar":"actionability","title":"Programmatic surface is discoverable","status":"warn","weight":6,"earned":3,"detail":"docs link: https://developers.facebook.com/docs/instagram","why":"A docs link is a start, but nothing tells an agent where the machine-readable entry point is.","fix":{"summary":"Publish a /.well-known/mcp.json or link your OpenAPI document from the page head."},"quickWin":true,"impact":0.8},{"id":"search-affordance","pillar":"actionability","title":"Site search is machine-usable","status":"warn","weight":4,"earned":1,"detail":"No crawlable GET search form and no SearchAction.","why":"Without a GET-addressable search, an agent looking for one specific page on your site has to fetch dozens of pages to find it, and usually gives up first.","fix":{"summary":"Expose search at a GET URL like /search?q=… and declare it as a SearchAction."},"quickWin":true,"impact":0.8},{"id":"twitter-card","pillar":"structure","title":"Declares a link preview card","status":"warn","weight":3,"earned":1.5,"detail":"No twitter:* card tags.","why":"Several agents fall back to card metadata when they cannot extract the body reliably.","fix":{"summary":"Add a summary_large_image card.","lang":"html","snippet":"<meta name=\"twitter:card\" content=\"summary_large_image\">\n<meta name=\"twitter:title\" content=\"Page title\">\n<meta name=\"twitter:description\" content=\"One sentence.\">"},"quickWin":true,"impact":0.8},{"id":"contact-affordance","pillar":"actionability","title":"Reachable by a human, discoverably","status":"warn","weight":5,"earned":2.5,"detail":"Only one weak contact signal found.","why":"\"How do I get in touch with them\" is one of the most common agent-mediated questions about a company. Make the answer machine-readable.","fix":{"summary":"Add a contactPoint to your Organization schema and link a real contact page.","lang":"json","snippet":"{\"@type\":\"Organization\",\"contactPoint\":[{\"@type\":\"ContactPoint\",\"contactType\":\"customer support\",\"email\":\"support@example.com\",\"url\":\"https://example.com/contact\"}]}"},"quickWin":true,"impact":0.7},{"id":"payload-weight","pillar":"reachability","title":"HTML payload stays inside an agent context budget","status":"warn","weight":5,"earned":2.5,"detail":"462 KB of HTML, 54% of it inline script.","why":"Agents truncate long documents. Anything past the cut simply is not read.","fix":{"summary":"Move inline scripts and serialized state into external files so the HTML an agent reads stays small."},"impact":0.7},{"id":"form-autocomplete","pillar":"actionability","title":"Fields declare autocomplete tokens","status":"warn","weight":4,"earned":2,"detail":"Only 1 of 2 text fields declare an autocomplete token.","why":"These tokens are the closest thing the web has to a machine-readable form schema, and they cost one attribute each.","fix":{"summary":"Add autocomplete tokens: email, name, organization, tel, street-address, country.","lang":"html","snippet":"<input name=\"email\" type=\"email\" autocomplete=\"email\">"},"quickWin":true,"impact":0.5},{"id":"form-names","pillar":"actionability","title":"Form fields have stable names","status":"warn","weight":6,"earned":4,"detail":"1 field without a name attribute.","why":"Agents build form submissions from name attributes. Missing or randomised names make your form unusable to automation and fragile for everyone.","fix":{"summary":"Give each field a stable, human-readable name that survives your build."},"evidence":["<input type=\"checkbox\" name=\"\">"],"quickWin":true,"impact":0.5}],"summary":"instagram.com scores 42/100 (E) for Agent Experience. Most of what matters on this page is not reaching agents at all. In AI answers you are effectively absent. The weakest pillar is Agent Contract at 17/100. The three highest-value fixes are ships structured data (+6.2 pts), publishes an llms.txt (+4.7 pts), publishes a sitemap (+4.1 pts). 22 of these are configuration changes rather than engineering work; applying just those would take the score to 87/100, a gain of 45 points."}