ROAS Experttools

Free, no sign-up to see the score

Can a shopping assistant read your product page?

Paste one product URL. In about ten seconds you get a score out of 100 for the structured data, the price and stock in the HTML, crawler access and page tags, plus a table of which questions ChatGPT, Perplexity or Copilot can answer from that page today.

  • Fetching the homepage
  • Reading robots.txt and the sitemap
  • Checking AI crawler access
  • Reading a product or inner page
  • Scoring structured data and speed
  • Building your report
  • Fetching the product page
  • Reading the Product JSON-LD and the offer
  • Looking for the price and stock without JavaScript
  • Checking robots.txt for seven shopping crawlers
  • Building your report

19 checks on one public product page. Email unlocks the fixes and a link you can share.

yourstore.comauditing
  • ✓robots.txt lets search engines in6
  • ✓XML sitemap works4
  • ×AI search crawlers allowed6
  • !Product schema on a product page6
  • ✓Content readable without JavaScript5
  • ×llms.txt3
  • !Server response time4
  • ✓Image alt text3
0out of 100
grade C
Crawling and indexing88
On-page basics93
Structured data64
AI search readiness42
Speed signals70

What we check, and what each check weighs

48 checks in five groups. The weight is the number of points a pass earns; a warning earns half. The heavy ones are the ones that stop you ranking, so the score tells you what to fix first.

Homepage reachable
Answers HTTP 200 to a plain crawler, no bot wall, no password page.
6
Homepage is indexable
No noindex in the robots meta tag or the X-Robots-Tag header.
6
robots.txt lets search engines in
No blanket Disallow for Googlebot, and product and collection paths are open.
6
HTTP redirects to HTTPS
http:// answers with a 301 or 308 to the https:// version.
4
XML sitemap works
Declared or at /sitemap.xml, returns XML with URLs, not an HTML page.
4
www and non-www agree
The other hostname redirects to the canonical one instead of serving a copy.
3
robots.txt exists
Present and parseable, so you can declare sitemaps and AI crawler rules.
3
Canonical tag
Self-referencing, https, same host.
3
Product or inner page indexable
The product, collection or article page we read carries no noindex.
3
Short redirect path
At most one hop from the typed address to the final URL.
2
Sitemap declared in robots.txt
A Sitemap: line so every crawler finds it.
2
Missing pages return 404
A made-up URL ends in a 404 or 410, not a 200 or an endless redirect.
2
Title tag
Present and 25 to 65 characters.
4
Meta description
Present and 60 to 170 characters.
3
One H1 heading
Exactly one, with text in it.
3
Image alt text
90% or more of images have alt text.
3
Language declared
A lang attribute on the html tag.
2
Mobile viewport
The viewport meta tag mobile-first indexing expects.
2
Social preview tags
og:title, og:description and og:image.
2
Heading structure
Levels in order, no H2 to H4 jumps, at least two headings.
1
Favicon
Declared; Google shows it next to mobile results.
1
hreflang tags
Valid codes and an x-default, when the site has several languages.
1
Character set declared
A charset meta tag.
1
Product schema on a product page
JSON-LD Product with name, image and an Offer carrying price, currency and availability.
6
JSON-LD parses
Every structured data block is valid JSON; broken blocks are ignored entirely.
4
Organization schema
Organization or LocalBusiness with name, url, logo and sameAs links.
4
Article schema on a post
Article or BlogPosting with headline, author and datePublished (blogs).
4
Schema on an inner page
Any typed schema on the inner page we read (sites without products or posts).
4
WebSite schema
Names the site; can declare site search.
2
Breadcrumbs on inner pages
BreadcrumbList on the product, collection or article page.
2
Breadcrumb schema
BreadcrumbList on the homepage (informational).
2
FAQ schema
FAQPage where you already answer questions.
2
AI search crawlers allowed
robots.txt lets in OAI-SearchBot, ChatGPT-User, ClaudeBot, PerplexityBot and Bingbot; training bots flagged separately.
6
Content readable without JavaScript
At least 250 words of real text in the raw HTML; most AI crawlers do not run scripts.
5
llms.txt
A plain-text map of your most useful pages for AI assistants.
3
Entity links (sameAs)
Two or more sameAs profile links so engines reconcile the brand.
2
Author and date signals
Byline, author markup or dateModified on the pages we read.
2
Sections with headings
At least two H2 sections; assistants quote sections.
1
Question and answer content
FAQ style content or FAQPage schema.
1
Server response time
Time to first byte under 600 ms; warn to 1.5 s.
4
HTML size
Under 300 KB; crawlers cap how much they read.
2
Text compression
gzip, brotli or zstd on the HTML response.
2
Script count
15 or fewer script tags; warn to 35.
2
Render-blocking scripts
Two or fewer scripts in the head without defer or async.
2
Cache headers
A Cache-Control header on the HTML.
1
Modern image formats
Half or more of images in WebP or AVIF.
1
Lazy loading
loading="lazy" on images when there are many.
1
Stylesheet count
Six or fewer external stylesheets.
1

Fixes written for your platform

We detect the CMS and tell you where the setting lives, not just that something is wrong. Pick a platform to see three of the fixes as they appear in a report.

Also detected: PrestaShop, Shopware, Nuxt, Ghost, Drupal and custom builds (generic fixes).

Product page mode

Can a shopping assistant read your product page?

When someone asks ChatGPT, Perplexity or Copilot whether your jacket ships to Berlin by Friday, the assistant reads your product page the way a crawler does: no JavaScript, no scrolling, no clicking a size. It looks for the price, the stock status, the shipping and return terms, and the product identity in the page's structured data. If those fields aren't there, it answers from a competitor's page or says it doesn't know.

This check reads one product URL and tells you which questions an assistant can answer from it today, with the fix for each gap written for Shopify, WooCommerce or Magento.

Check a product page

A shopper asks whether the item can reach Berlin by Friday; the assistant reads shippingDetails.deliveryTime, shippingDestination, availability and price from the page. Can it reach Berlin by Friday? shippingDetails.deliveryTime shippingDestination offers.availability offers.price (also read)

One question, four fields. The check reads all of them from the Product JSON-LD and the server HTML.

The 19 checks and their weights
Product JSON-LD present and valid Structured data
A Product or ProductGroup block that parses. Microdata only is a warning.
10
Offer with price, currency, availability and url Structured data
price as a number, priceCurrency as an ISO code, availability as a schema.org URL, url.
10
Name, image and description Structured data
name, at least one absolute image URL, a real description.
5
Shipping details in the offer Structured data
OfferShippingDetails with shippingRate, deliveryTime and shippingDestination.
5
Return policy in the offer Structured data
MerchantReturnPolicy with returnPolicyCategory and merchantReturnDays.
5
sku, gtin or mpn, and brand Structured data
sku plus a gtin or mpn plus brand; sku alone is a warning.
4
Ratings in the structured data Structured data
aggregateRating when the page shows reviews; not scored otherwise.
3
Variants in the structured data Structured data
hasVariant, ProductGroup or an AggregateOffer with a price range when the page offers variants.
3
Price in the HTML without JavaScript Readable without JS
A currency and a number in the server HTML text; data only is a warning.
8
Stock status in the HTML without JavaScript Readable without JS
In stock, sold out, add to cart or ships in, in the HTML text.
6
One H1 that names the product Readable without JS
Exactly one H1 and it matches the product name.
3
Product images have alt text Readable without JS
Gallery images (or the first three) carry alt text.
3
AI shopping crawlers allowed on this path Crawler access
robots.txt on the product path for OAI-SearchBot, ChatGPT-User, Google-Extended, PerplexityBot, Amazonbot, Bingbot and ClaudeBot, pro rata; Bingbot blocked is a fail.
10
Product page reachable and indexable Crawler access
HTTP 200, no noindex, no bot wall, real text in the HTML.
5
Self-referencing canonical Page tags
The canonical equals the page URL without tracking parameters; Shopify collection paths may point at /products/.
4
Open Graph product tags Page tags
og:type product, og:title, og:image, product:price:amount with product:price:currency.
4
Title and meta description Page tags
Title 15 to 60 characters with the product name; meta description 50 to 160 characters.
4
Shopify /products/handle.js answers JSON Platform extras
Shopify only: the JSON endpoint returns variants and prices.
5
One Product block, price rendered server side Platform extras
Shopify and WooCommerce: one Product block, not duplicates. Magento: price and swatches in the server HTML.
3

Checks that don't apply (no reviews on the page, no variants, not Shopify) leave the denominator instead of counting against you. Not readable from outside and therefore not scored: Merchant Center feed status, Shopify Agentic Storefront enrollment, inventory feeds behind a login.

Run it from inside Claude, ChatGPT or Cursor

The same audit is an MCP server. Connect it once and ask your assistant to audit a site or one product page, read a stored report, list the checks or explain a fix for your platform. Three free audits a day per connection. As on the site, the score, the top three issues and every check's status are free, and your work email unlocks the full report with the fixes.

Endpointhttps://tools.roasexpert.com/mcp
Claude

Claude.ai: Settings, Connectors, Add custom connector, paste the endpoint, no authentication. Claude Code: claude mcp add --transport http roas-audit https://tools.roasexpert.com/mcp

ChatGPT

Settings, Connectors, Create (developer mode on), paste the endpoint. Then ask: "audit example.com with roas-audit".

Cursor, Windsurf, VS Code

Add to your MCP config: {"mcpServers":{"roas-audit":{"url":"https://tools.roasexpert.com/mcp"}}}

Tools: audit_site, audit_product_page, get_report, unlock_report, list_checks, explain_fix. Streamable HTTP, stateless, JSON-RPC 2.0. Listed in the official MCP Registry as com.roasexpert.tools/seo-audit. Need more than three audits a day? Book a call or email rishabh@roasexpert.com.

What this is not

It is not a Lighthouse run, a backlink report or a full crawl. It reads your homepage, robots.txt, sitemap, llms.txt and one product or inner page, then scores what it finds. That is enough to catch the problems that cost most stores their visibility in Google and in AI assistants. The full agentic SEO audit from ROAS Expert crawls the whole catalogue, checks rankings and competitors, and ends with a prioritised plan and a readout call.

See the full audit, $1,500

Why an SEO audit now has to include AI search

A growing share of product research starts in ChatGPT, Perplexity, Claude and Google AI Overviews instead of a results page. Those systems do not read a site the way a person does. They send their own crawlers (GPTBot, OAI-SearchBot, ClaudeBot, PerplexityBot), they read the raw HTML rather than what JavaScript draws afterwards, and they lean on structured data to work out what a page is about and whether the brand is real. A store can rank well in Google and still be invisible to them because a security plugin blocked the crawlers in 2024 and nobody noticed. This audit checks those things first, because they are the cheapest fixes with the largest effect.

Shopify, WordPress and Magento break in different places

The same finding has a different cause on each platform. A missing Product schema on Shopify usually means an app or a theme edit removed the snippet from the product template. On WooCommerce it means a plugin is suppressing the JSON-LD that WooCommerce prints by default. On Magento it means nobody added it, because Magento ships none. That is why every failing check here carries a fix for the detected platform rather than a generic "add structured data" line. The same goes for robots.txt (robots.txt.liquid, Yoast or Rank Math, Content > Design > Configuration), canonicals, image formats and render-blocking scripts.

What to do with a score under 70

Fix the three findings at the top of your report first. They are ranked by weight and severity, and the top one is nearly always a crawl or index problem that caps everything else. Then clear the failures in your weakest category, re-run the audit, and repeat. Most stores get from the 50s to the 80s in an afternoon with no new content, because the misses are settings, not strategy. If the report is long and the team is short, the full agentic SEO audit turns it into a prioritised plan with owners and a readout call.

Read more from ROAS Expert

Questions people ask before running it

What does the free AI SEO audit check?

48 checks in five groups: crawling and indexing (robots.txt, sitemap, noindex, canonical, https and www consistency, soft 404s), on-page basics (title, description, H1, headings, alt text, viewport, Open Graph), structured data (JSON-LD validity, Organization, WebSite, Product with price and availability, breadcrumbs, FAQ), AI search readiness (robots rules for GPTBot, OAI-SearchBot, ClaudeBot, PerplexityBot and others, llms.txt, text that exists without JavaScript, author and date signals) and speed signals (server response time, HTML weight, compression, script count, image formats). Each failing check comes with a fix written for the platform we detect.

Which platforms does it support?

Shopify, WooCommerce, WordPress, Magento and Adobe Commerce, Framer, Webflow, Wix, Squarespace, BigCommerce, PrestaShop, Shopware, HubSpot, Next.js, Nuxt, Gatsby, Ghost, Drupal, Joomla and custom builds. Detection reads the HTML, response headers and script sources. Unknown platforms get generic fixes.

Is it really free, and do I need to sign up?

Yes, and no. The score, the platform detected, the top three issues and the names of every check show without any sign-up. Your email unlocks the detail and the fix for each finding, the AI crawler table, the written summary and a link you can send to your developer. We may send one follow-up about the findings; a newsletter only if you tick the box.

What is AI search readiness?

Whether the systems behind ChatGPT, Perplexity, Claude, Copilot and Google AI Overviews can read and trust your site. Concretely: their crawlers are allowed in robots.txt, there is an llms.txt, the main content is in the HTML rather than drawn by JavaScript, the brand has Organization schema with sameAs links, and pages carry author and date signals. Sites that fail these are rarely cited in AI answers no matter how well they rank in Google.

How is the score calculated?

Every check has a weight. A pass earns the full weight, a warning half, a failure nothing. Category scores are then weighted 25% crawling and indexing, 20% on-page, 20% structured data, 20% AI search readiness and 15% speed signals. A homepage that is unreachable or blocked by bot protection scores 0; a homepage with noindex or a robots.txt block is capped at 35, because nothing else matters until that is fixed.

Why did my site score 0?

Our crawler could not read the homepage. Usually that is bot protection (a Cloudflare, Akamai or DataDome challenge page), a password-protected store, or a DNS or server error. The report names which. If it is bot protection, the same wall meets AI crawlers unless their user agents are allow-listed.

How is this different from Lighthouse or PageSpeed Insights?

Those measure how fast one page renders in a lab browser. This audit measures whether search engines and AI assistants can find, read, understand and trust your site. The two overlap on a few speed signals and nothing else. Run both.

Can I audit a competitor?

Yes, any public site. Results are cached for ten minutes per hostname and each visitor can run five audits every half hour.

What does the product page check read?

One product URL. It reads the Product JSON-LD and its offer (price, currency, availability, url), the shipping and return policy fields (OfferShippingDetails, MerchantReturnPolicy), identifiers (sku, gtin or mpn, brand), ratings and variants, whether the price and the stock status are in the HTML without JavaScript, robots.txt on the product path for seven AI user agents (OAI-SearchBot, ChatGPT-User, Google-Extended, PerplexityBot, Amazonbot, Bingbot, ClaudeBot), the canonical and Open Graph product tags, the title and meta description, and on Shopify whether /products/handle.js answers JSON. 19 checks, weights sum to 100, and the report ends with a table of which questions an assistant can answer from the page.

Why does the price without JavaScript matter?

Most AI crawlers fetch the HTML and do not run scripts. A price that only appears after React or a theme script runs is not there for them, so the assistant either quotes a competitor or says it does not know. The check reads the server HTML with scripts stripped and looks for a currency next to a number, and for stock words like in stock, sold out or add to cart.

Does it check Shopify Agentic Storefronts or Merchant Center?

No. Those need account access, and nothing here logs in anywhere. The report says which signals cannot be read from outside: Merchant Center feed status and shipping settings, Shopify Agentic Storefront enrollment, and inventory feeds behind a login. Everything it does score is what a crawler sees from the public page.

Can I run it from Claude, ChatGPT or Cursor?

Yes. The audit is also an MCP server at tools.roasexpert.com/mcp. Add it as a custom connector in Claude.ai (Settings, Connectors), in ChatGPT (Settings, Connectors, developer mode) or in Cursor and Claude Code, then ask the assistant to audit a site or a product page (tools audit_site and audit_product_page). The free plan gives three audits a day per connection. A fresh audit shows the score, the platform, the top three issues and the status of all 48 checks; your work email unlocks every finding with its fix, the same gate as the website. Email rishabh@roasexpert.com for a higher limit.