Compare against a competitor page
Paste a competing page and see both scores side by side, group by group.
Top fixes, by weight
- WarnDirect answer paragraph right after the H1 (40 to 90 words)
First paragraph after the H1 is 66 words; does not name the subject words (robot, vacuums); contains a number. Starts: "The best robot vacuum in 2026 is the Roborock Qrevo CurvX (premium tier — check current price on Amazon). It delivers 22,000 Pa suction, 3.…"
Directly under the H1, write one paragraph of 40 to 90 words that answers the question outright, names the subject, and includes a number with a unit. No links inside it, and above any affiliate link.
- WarnMeta description 120 to 165 characters
225 characters: "We researched and compared 15 robot vacuums: the best in 2026 are the Roborock Qrevo CurvX, Dreame L40 Ultra Gen 2, and…"
Write a 120 to 165 character description that restates the question and names the entities.
Can it be fetched
100/100If a crawler cannot reach the exact URL, or the host cannot rank in Bing, nothing else on this list matters.
-
Pass Exact URL returns HTTP 200 w10
Found: HTTP 200 on the exact URL, 74 KB
Why it matters and how to fix it
A crawler that gets a redirect chain, a 4xx or a 5xx on the exact URL stops there. Every cited page on our own sites answered 200 on its canonical URL.
Fix: Make the canonical URL answer 200 directly. If it redirects, cite the destination URL instead and update internal links and the sitemap to the final URL.
-
Pass Served over HTTPS w4
Found: HTTPS on cleansweeppicks.com
Why it matters and how to fix it
AI crawlers and Bing treat plain HTTP as a trust and safety signal. Every crawled page on our own sites was HTTPS.
Fix: Enable TLS on the host and redirect http:// to https:// with a 301.
-
Pass Canonical tag matches the final URL w6
Found: Canonical matches: https://cleansweeppicks.com/
Why it matters and how to fix it
A canonical pointing elsewhere tells the crawler to credit a different page. Duplicate self-canonical pages split citations between two URLs (measured on launchmonitorpicks, two under-500 pages).
Fix: Add <link rel="canonical" href="..."> whose host and path match the URL that serves the page. One canonical per topic.
-
Pass No noindex directive w10
Found: Robots directives found, none are noindex: max-image-preview:large
Why it matters and how to fix it
A noindex meta tag or X-Robots-Tag header removes the page from Bing and Google, which removes it from Copilot and AI Overviews entirely.
Fix: Remove <meta name="robots" content="noindex"> and any X-Robots-Tag: noindex header for pages you want cited.
-
Pass Responds in under 3 seconds w3
Found: 0.27 s to the final response (0 redirects)
Why it matters and how to fix it
Slow origins get crawled less often and time out for on-demand fetchers such as ChatGPT-User and Perplexity-User.
Fix: Serve static HTML from a CDN edge. Move heavy work out of the request path.
-
Pass Host is a custom domain, not a platform subdomain w10
Found: cleansweeppicks.com is its own domain
Why it matters and how to fix it
Across 58 sites on *.pages.dev subdomains, Bing recorded zero impressions, while every site with impressions had its own domain. Bing ranking is the gate for Copilot citations, so a platform subdomain is structurally uncitable there.
Fix: Attach a custom domain (a .com or equivalent), make it the canonical host, and 301 the platform subdomain to it.
-
Pass robots.txt allows bingbot w6
Found: bingbot allowed on / (via the bingbot group, Allow: /)
Why it matters and how to fix it
Copilot citations are downstream of Bing search ranking. Zero Bing crawl means zero Copilot citations, no exceptions on our own sites.
Fix: Remove any Disallow rule that applies to bingbot or to User-agent: * for this path.
-
Pass robots.txt allows OAI-SearchBot w6
Found: OAI-SearchBot allowed on / (via the OAI-SearchBot group, Allow: /)
Why it matters and how to fix it
OAI-SearchBot is the crawler that builds ChatGPT search results and citations. It is separate from GPTBot (training). ChatGPT referrals were 39% of AI-assistant conversions on our own sites.
Fix: Add "User-agent: OAI-SearchBot" followed by "Allow: /", or remove the Disallow that catches it.
-
Pass robots.txt allows ChatGPT-User w2
Found: ChatGPT-User allowed on / (via the ChatGPT-User group, Allow: /)
Why it matters and how to fix it
ChatGPT-User fetches a page on demand when a person asks ChatGPT about it. Blocking it means the assistant cannot read your page even when a user pastes the link.
Fix: Allow ChatGPT-User in robots.txt.
-
Pass robots.txt allows PerplexityBot w2
Found: PerplexityBot allowed on / (via the PerplexityBot group, Allow: /)
Why it matters and how to fix it
PerplexityBot indexes pages for Perplexity answers; Perplexity-User fetches on demand. Both need access to cite you.
Fix: Allow PerplexityBot and Perplexity-User in robots.txt.
-
Pass robots.txt allows ClaudeBot w1
Found: ClaudeBot allowed on / (via the ClaudeBot group, Allow: /)
Why it matters and how to fix it
Claude uses ClaudeBot, Claude-SearchBot and Claude-User. Blocking them keeps you out of Claude answers with citations.
Fix: Allow ClaudeBot, Claude-SearchBot and Claude-User in robots.txt.
-
Pass robots.txt allows Google-Extended w1
Found: Google-Extended allowed on / (via the Google-Extended group, Allow: /)
Why it matters and how to fix it
Google-Extended controls Gemini and grounding use of your content. Google AI Overviews follow the normal Googlebot rules, so this is a secondary signal.
Fix: Allow Google-Extended, or accept that Gemini grounding may skip the page.
-
Info robots.txt and GPTBot (information only) not scored
Found: GPTBot allowed (via the GPTBot group). Not scored.
Why it matters and how to fix it
GPTBot is the training crawler. Blocking it does not stop ChatGPT search citations, which use OAI-SearchBot. Reported for completeness, not scored.
Fix: No action needed for citations. Allow it if you also want your content in future training sets.
-
Pass Bot user-agent gets the same page w5
Found: Both UAs got HTTP 200 with 21640 vs 21640 chars of text
Why it matters and how to fix it
Some hosts serve a challenge page, a 403 or a stripped page to bot user-agents. The crawler then indexes the challenge, not your content.
Fix: Whitelist known crawler user-agents in your bot protection, or lower the challenge level for GET requests on content pages.
Is the answer in the HTML
91/100Most citation crawlers read the raw server response and never run JavaScript. The answer has to be in that document.
-
Pass At least 300 words of visible text in the raw HTML w6
Found: 3348 visible words in the main content region; 3426 in the whole body
Why it matters and how to fix it
Below a few hundred words a crawler has little to quote. Above the floor, word count stopped mattering: a 492-word page earned 10 citations and a 3,024-word page earned one ranking, so this is a floor, not a lever.
Fix: Put the substance of the answer in server-rendered HTML. Do not pad; add facts, numbers and comparisons.
-
Pass Page is not an empty JavaScript shell w10
Found: 3426 words in the HTML; 2 external scripts
Why it matters and how to fix it
Around 99% of edge traffic on our own sites never executes JavaScript. An HTML document that is only a #root div and script bundles has nothing to cite until it is rendered, and most AI crawlers do not render.
Fix: Server-render or prerender the page so the main content is inside the HTML response. For an SPA, inject the prerendered article inside the app container so it is replaced on mount.
-
Pass Exactly one H1 w4
Found: One H1: "Best Robot Vacuums in 2026"
Why it matters and how to fix it
The H1 tells the crawler what the page answers. Two H1s (a measured prerender bug served exactly that) dilute the match between the query and the page.
Fix: Use one H1 that states the question or the comparison in the words a person would type. Use H2 and H3 for everything else.
-
Warn Direct answer paragraph right after the H1 (40 to 90 words) w8
Found: First paragraph after the H1 is 66 words; does not name the subject words (robot, vacuums); contains a number. Starts: "The best robot vacuum in 2026 is the Roborock Qrevo CurvX (premium tier — check current price on Amazon). It delivers 22,000 Pa suction, 3.…"
Why it matters and how to fix it
Every cited page on our own sites had a labelled answer block immediately after the H1: a declarative restatement of the question, both entities named, and at least one hard number in the first two sentences. The assistant lifts this paragraph.
Fix: Directly under the H1, write one paragraph of 40 to 90 words that answers the question outright, names the subject, and includes a number with a unit. No links inside it, and above any affiliate link.
-
Pass At least one table or list with 3+ items w5
Found: 2 tables, 16 lists with 3+ items
Why it matters and how to fix it
Comparison tables (Feature | A | B) and ranked lists are the structures assistants extract into their own tables. Every cited comparison page on our own sites had one, sitting below the prose answer.
Fix: Add a comparison table with units inline, or an ordered list of picks, below the answer paragraph.
-
Pass Question-form or full-clause H2/H3 headings w3
Found: 10 of 39 H2/H3 headings are questions or full clauses; 5 are bare nouns (e.g. "Boundary Strips"). Example: "Buying around Prime Day? Get Prime free first."
Why it matters and how to fix it
Question-explainer guides were the fleet's biggest citation earners, and cited pages used full-clause H2s rather than one-word nouns. Assistants match subheadings to sub-questions.
Fix: Rewrite H2s as the questions people ask, or as full clauses ("What MPRT measures and why it differs from GtG"), not bare nouns.
-
Pass Visible "Updated" or "Published" date w6
Found: Found: "Last updated: June 2, 2026"
Why it matters and how to fix it
A visible date was one of the recurring winning signals in citation tests, and studies of ChatGPT citations put 79% of cited pages as updated within a year. A hardcoded stale date is worse than none.
Fix: Show "Updated <Month Day, Year>" near the top, stamp it at build time, and keep it in sync with dateModified in the schema.
-
Pass Title and H1 share their key words w3
Found: 2 of 2 H1 key words appear in the title. Title: "Best Robot Vacuums 2026 — Researched & Compared | CleanSweepPicks"
Why it matters and how to fix it
The winning Bing queries on our own sites were near string-matches on the title, and title-to-query similarity is the strongest reported factor for ChatGPT citations. The H1 should be the title minus the site suffix.
Fix: Make the H1 equal the title without the site name, and put the literal entity names or model numbers in both.
Machine-readable
96/100Structured data and dates tell an assistant what the page is, who published it and how fresh it is.
-
Pass JSON-LD present and parses w5
Found: 6 JSON-LD nodes: Organization, WebSite, BreadcrumbList, Article, ItemList, FAQPage
Why it matters and how to fix it
Structured data is the cheapest way to state the page type, author, publisher and dates in a form every crawler reads. A block that fails to parse is ignored.
Fix: Add a <script type="application/ld+json"> block and validate it with the Schema.org validator.
-
Pass Article-type plus FAQPage, ItemList, HowTo or Product w4
Found: Types found: Organization, WebSite, BreadcrumbList, Article, ItemList, FAQPage. Page type present; rich type present
Why it matters and how to fix it
The exact JSON-LD intersection across every cited page on our own sites was Article + FAQPage. The FAQ answers do not even have to be visible; they were only in the JSON-LD on the top-cited page.
Fix: Emit Article (or BlogPosting/WebPage) for the page and FAQPage with the same questions as your visible FAQ. Use ItemList for ranked picks and HowTo for procedures.
-
Pass datePublished and dateModified present, modified within 90 days w5
Found: datePublished: 2026-05-28; dateModified: 2026-08-28 (9 days old)
Why it matters and how to fix it
Freshness is a stated ranking signal for assistants. A fleet-wide audit found money pages carrying a dateModified three months behind their real edits; the assistant saw the stale date.
Fix: Stamp dateModified at build time from the real content change, and refresh the top pages at least every 60 to 90 days with visible changes.
-
Pass Author or publisher is a named Organization or Person w3
Found: publisher: Organization "CleanSweepPicks"; author: Organization "CleanSweepPicks Editorial Team"
Why it matters and how to fix it
Assistants attribute claims to a source. A named publisher gives them something to attribute; a missing or empty author gives nothing.
Fix: Add "author" and "publisher" objects with @type Organization or Person and a "name".
-
Pass BreadcrumbList schema w1
Found: BreadcrumbList present
Why it matters and how to fix it
Breadcrumbs tell the crawler where the page sits in the site, which helps it find sibling pages. Low measured effect on our own sites.
Fix: Add a BreadcrumbList with the section and page.
-
Warn Meta description 120 to 165 characters w2
Found: 225 characters: "We researched and compared 15 robot vacuums: the best in 2026 are the Roborock Qrevo CurvX, Dreame L40 Ultra Gen 2, and…"
Why it matters and how to fix it
The description is what Bing and ChatGPT search show under the link, and it repeats the entity words that title matching depends on.
Fix: Write a 120 to 165 character description that restates the question and names the entities.
-
Pass Title 30 to 65 characters w2
Found: 65 characters: "Best Robot Vacuums 2026 — Researched & Compared | CleanSweepPicks"
Why it matters and how to fix it
Short titles lose the entity words; long titles get truncated in Bing and lose the site name or the hook.
Fix: Keep the title between 30 and 65 characters with the entity names first.
-
Pass Open Graph title and description w2
Found: og:title "Best Robot Vacuums 2026 — Researched & Compared | CleanSwee…"; og:description present (225 chars)
Why it matters and how to fix it
Chat interfaces that unfurl a link read og:title and og:description. They also repeat the key tokens that the cited pages on our own sites carried 20 to 40 times across the stack.
Fix: Add og:title and og:description matching the page title and description.
Site hygiene
100/100Discovery aids. Cheap to fix, low measured effect on our own sites.
-
Pass sitemap.xml lists this URL with a lastmod w3
Found: Listed in https://cleansweeppicks.com/sitemap.xml with lastmod 2026-08-12
Why it matters and how to fix it
A sitemap is a hint, not a discovery mechanism: Bing read a 33-URL sitemap and crawled zero of them on a new domain. It still matters for refreshing what Bing already knows about a site.
Fix: List the URL in sitemap.xml with an accurate <lastmod>, declare the sitemap in robots.txt, and resubmit after each content batch.
-
Info llms.txt (information only) not scored
Found: llms.txt present (10517 bytes). Measured correlation with citations: none. Not scored.
Why it matters and how to fix it
An analysis of about 300,000 domains found zero correlation between llms.txt and AI citations, and on our own sites the cited pages appeared zero times in their own site's llms.txt. It is hygiene, not a lever, so it is not scored.
Fix: Keep one if you have it. Do not spend time on it.
-
Pass robots.txt exists and is not a 404 page w1
Found: robots.txt is plain text, 18 groups, declares 1 sitemap
Why it matters and how to fix it
A missing robots.txt is fine (everything allowed), but an HTML error page served at /robots.txt confuses some parsers.
Fix: Serve a plain-text robots.txt with a Sitemap: line.
-
Pass At least 5 internal links in the content w2
Found: 36 distinct internal links in the content region
Why it matters and how to fix it
An orphan page cannot rank, so it cannot be cited. A fleet audit found 11 sitemap-listed pages with zero inbound links, including a money page built that day.
Fix: Link the page from the homepage or a hub, and link out to sibling pages from the content.
-
Pass At least 2 outbound source links w2
Found: 4 distinct outbound links to other domains in the content region
Why it matters and how to fix it
Citing sources correlates with being cited; assistants favour pages that show where their numbers came from.
Fix: Link to the manufacturer spec page, the study, or the primary source for the numbers you quote.
Get the full fix list and weekly monitoring
Paid, coming soon. Join the founding list and you will hear first; nothing else is sent.