Seo ecommerce
The SEO + AI-search (GEO/AEO) optimization toolkit for Claude Code — two-score audit + opt-in fixer. Built for 2026-2027.
npx -y skills add Hainrixz/claude-seo-ai --skill seo-ecommerceAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
What its author says it does
Copied from the file, not written here
Conditionally audit and generate e-commerce structured data for product pages — validate Product/Offer (price, priceCurrency, availability), AggregateRating/Review, faceted-navigation canonicalization, and variant/ProductGroup handling, cross-checking page-to-schema-to-Merchant-feed consistency, and produce ready-to-inject Product JSON-LD. Module M18. Feeds both the Search SEO and AI Visibility scores.
SKILL.md
4.5 KB, as published. Nobody here has run it
seo-ecommerce (M18)
Conditional commerce module: it only runs when commerce signals are detected, then audits and completes product structured data. Reference: references/schema-tier1.md (Product + Offer, Review/AggregateRating rows).
Audits
Working from the PageSnapshot (rendered_dom if present, else raw_html):
- Commerce gate: detect commerce signals (price/currency text, add-to-cart/buy controls,
Product/Offerschema,og:type=product). If none, every M18 finding isnot_applicable(severity 0) — do not force product schema onto non-commerce pages. - Product + Offer:
Producthasname,image;Offerhasprice,priceCurrency,availability(schema.org/InStocketc.). Perreferences/schema-tier1.md. - AggregateRating / Review: if ratings are visibly shown, expect
AggregateRating(ratingValue,reviewCount/bestRating) and/orReview(author). Never mark up ratings not visible on the page. - Page → schema → feed consistency (Tier 2): schema
price/priceCurrency/availabilitymust match visible on-page values and the Merchant Center feed. Mismatches risk disapproval and lost rich results. - Faceted navigation: filter/sort URLs (
?color=,?sort=) should canonicalize to the clean product/category URL or benoindex, to avoid index bloat and duplicate-content dilution. - Variants / ProductGroup: multi-variant products should use
ProductGroupwithhasVariantandvariesBy, not duplicate standaloneProductblocks per SKU.
Fixes
- AUTO (
fixable: auto): generate complete, validProduct/Offer/AggregateRatingJSON-LD inferred from the DOM (name, image, price, currency, availability, visible rating) inside a single@graphwith a stable@id. The block is a diff forfix. - PROPOSED (
fixable: proposed): canonical/noindextags for faceted URLs andProductGrouprestructuring — drafts requiring per-item accept. - ADVISORY (
fixable: advisory): price / availability mismatches between page, schema, and feed — the store backend/feed is the source of truth, so the tool never writes these. Never invent prices, currencies, availability, or ratings — ask the user or leave a clearly-marked TODO placeholder.
Verification
- Offline:
node ${CLAUDE_SKILL_DIR}/../../scripts/validate-jsonld.mjs --url <u>(schema_validator) — JSON validity + required Product/Offer properties. - Tier 1: Google Rich Results Test / schema.org validator (
rich_results_api) for merchant-listing eligibility. - Tier 2: Merchant Center feed diff — compare schema vs feed
price/availability. When the required data tier (feed/API) is unavailable, status isneeds_api, never a falsepass.
Findings
Emit findings per schema/finding.schema.json. Severity 5 on ecommerce pages, 0 (not_applicable) otherwise; axis both. Examples:
M18.offer.missing_price— Product withoutOffer.price/priceCurrency(statusfail, severity 5,fixable: auto, axisboth, confidenceestablished).M18.offer.price_feed_mismatch— schema price differs from on-page/feed price (statuswarn, severity 5,fixable: advisory, axisboth, confidencedirectional; needs feed → may beneeds_api).M18.facets.uncanonicalized— indexable faceted URLs lack canonical/noindex(statuswarn, severity 5,fixable: proposed, axisboth, confidencedirectional). Each finding:evidence.observedquotes the page (e.g. the rendered price text or the offending?filter=URL);verification.reproduceis a runnable command;expected_impactis banded + confidence-tagged (no naked %).
Honesty
- AggregateRating/Review markup does not guarantee star rich results — Google shows them at its discretion and gates them by policy; don't promise stars from markup alone.
- Faceted-URL hygiene reduces crawl/index waste but is not a direct ranking factor — frame as
directional, not a guaranteed gain. - Keep schema strictly consistent with visible content and the product feed; fabricated or feed-mismatched values invite Merchant disapproval, not a win.