--- name: seo-ecommerce description: > Analyze ecommerce SEO across product pages, product schema, Shopping visibility, marketplace signals, and keyword gaps. Use only for stores, catalogs, or product listings. user-invocable: true argument-hint: "" license: MIT compatibility: "Enhanced with DataForSEO Merchant API (optional)" metadata: author: AgriciDaniel original_author: "Matej Marjanovic (Pro Hub Challenge)" version: "2.4.2" category: seo --- # E-commerce SEO Analysis Comprehensive product page optimization, marketplace intelligence, and competitive pricing analysis. Works standalone (on-page + schema) and with DataForSEO Merchant API for live Google Shopping and Amazon data. ## Commands | Command | Purpose | DataForSEO? | |---------|---------|-------------| | `/seo ecommerce ` | Full e-commerce SEO analysis of a product page or store | Optional | | `/seo ecommerce products ` | Google Shopping competitive analysis | Required | | `/seo ecommerce gaps ` | Keyword gap: organic vs Shopping visibility | Required | | `/seo ecommerce schema ` | Product schema validation and enhancement | No | --- ## 1. Product Page Analysis (No DataForSEO Needed) Fetch and parse any product page for on-page SEO quality. ### Workflow ``` 1. "${CLAUDE_PLUGIN_ROOT}/scripts/claude-seo" run render_page.py --mode auto → raw/rendered HTML 2. "${CLAUDE_PLUGIN_ROOT}/scripts/claude-seo" run parse_html.py --url → SEO elements 3. Analyze product-specific signals (below) ``` ### Product SEO Checklist #### Title Tag - [ ] Contains primary product keyword - [ ] Includes brand name - [ ] Under 60 characters (no truncation in SERPs) - [ ] Format: `[Product Name] - [Key Feature] | [Brand]` #### Meta Description - [ ] Contains product keyword + benefit - [ ] Includes price or "from $XX" (triggers rich snippet interest) - [ ] Call-to-action present (Shop now, Buy, Free shipping) - [ ] Under 155 characters #### Heading Structure - [ ] Single H1 matching primary product name - [ ] H2s for: Features, Specifications, Reviews, Related Products - [ ] No duplicate H1 tags across product variants #### Product Images - [ ] Alt text includes product name + distinguishing feature - [ ] File names are descriptive (not `IMG_001.jpg`) - [ ] WebP format served (with JPEG fallback) - [ ] At least 3 images per product (hero, detail, lifestyle) - [ ] High-resolution images: Google recommends at least 50K pixels (width x height) for merchant listings; larger (for example 800px+) is common practice, not a rule - [ ] Lazy loading on below-fold images only #### Internal Linking - [ ] Breadcrumb navigation: Home > Category > Subcategory > Product - [ ] Related products section (cross-sell / upsell) - [ ] Link back to category page with keyword-rich anchor - [ ] Reviews section links to full review page (if separate) #### Content Quality - [ ] Unique product description (not manufacturer copy-paste) - [ ] Word count >= 200 for product description body - [ ] Specs table present (not just prose) - [ ] User reviews on-page (UGC signals) ### Scoring | Category | Weight | Criteria | |----------|--------|----------| | Schema completeness | 25% | Required + recommended Product fields | | Title & meta | 15% | Keyword placement, length, format | | Image optimization | 20% | Alt text, format, sizing, count | | Content quality | 20% | Unique description, specs, reviews | | Internal linking | 10% | Breadcrumbs, related products, categories | | Technical | 10% | Page speed, mobile rendering, canonical | --- ## 2. Google Shopping Intelligence (DataForSEO Merchant API) Live competitive analysis from Google Shopping results. ### Cost Guardrail (MANDATORY) Before EVERY Merchant API call: ```bash "${CLAUDE_PLUGIN_ROOT}/scripts/claude-seo" run dataforseo_costs.py check merchant_google_products_search ``` - `"status": "approved"` -- proceed - `"status": "needs_approval"` -- show cost, ask user - `"status": "blocked"` -- stop, inform user After each call: ```bash "${CLAUDE_PLUGIN_ROOT}/scripts/claude-seo" run dataforseo_costs.py log merchant_google_products_search ``` ### Workflow ```bash # Product search: who sells what at what price "${CLAUDE_PLUGIN_ROOT}/scripts/claude-seo" run dataforseo_merchant.py search "" --marketplace google # Seller analysis: merchant ratings and dominance "${CLAUDE_PLUGIN_ROOT}/scripts/claude-seo" run dataforseo_merchant.py sellers "" # Normalize results for analysis "${CLAUDE_PLUGIN_ROOT}/scripts/claude-seo" run dataforseo_normalize.py results.json --module merchant ``` ### Analysis Outputs #### Pricing Intelligence - Price distribution: min, max, median, P25, P75 - Price outliers (> 2 standard deviations from median) - Price-to-rating correlation - Currency normalization to USD (or user-specified) #### Seller Landscape - Top 10 sellers by listing count - Merchant rating distribution - Free shipping prevalence - New vs established sellers #### Product Listing Quality - Title keyword patterns in top listings - Average rating and review count benchmarks - Image count per listing - Availability status distribution Load `references/marketplace-endpoints.md` for full API parameter details. --- ## 3. Amazon Marketplace (DataForSEO) Cross-marketplace intelligence comparing Google Shopping and Amazon. ### Cost Guardrail (MANDATORY) ```bash "${CLAUDE_PLUGIN_ROOT}/scripts/claude-seo" run dataforseo_costs.py check merchant_amazon_products_search ``` Amazon endpoints are in the `warn_endpoints` set -- always requires user approval. ### Workflow ```bash # Amazon product search "${CLAUDE_PLUGIN_ROOT}/scripts/claude-seo" run dataforseo_merchant.py search "" --marketplace amazon # Cross-marketplace comparison "${CLAUDE_PLUGIN_ROOT}/scripts/claude-seo" run dataforseo_merchant.py compare "" ``` ### Cross-Marketplace Report | Metric | Google Shopping | Amazon | |--------|---------------|--------| | Avg price | $ | $ | | Median rating | X.X | X.X | | Avg review count | N | N | | Top seller share | % | % | | Free shipping % | % | % | --- ## 4. Marketplace Keyword Gaps Identify mismatches between organic and Shopping visibility. ### Workflow 1. Fetch organic rankings via seo-dataforseo: `dataforseo_labs_google_ranked_keywords` for domain 2. Fetch Google Shopping presence through the Merchant REST script (not an MCP tool; the cost-ledger key is `merchant_google_products_search`): `"${CLAUDE_PLUGIN_ROOT}/scripts/claude-seo" run dataforseo_merchant.py search ` for the top organic keywords 3. Cross-reference results ### Gap Types | Gap Type | Meaning | Action | |----------|---------|--------| | **Organic Only** | Ranks organically but no Shopping ads | Create Google Merchant Center feed, bid on these keywords | | **Shopping Only** | Shopping visibility but weak/no organic | Create content (buying guides, comparison pages) for these keywords | | **Both Present** | Visible in both channels | Optimize: ensure price consistency, enhance schema | | **Neither** | No visibility in either | Low priority unless high volume | ### Output Format ``` ## Keyword Gap Analysis: example.com ### Opportunities: Organic → Shopping (12 keywords) | Keyword | Organic Pos | Volume | CPC | Recommended Action | |---------|------------|--------|-----|-------------------| ### Opportunities: Shopping → Organic (8 keywords) | Keyword | Shopping Rank | Volume | CPC | Content Type Needed | |---------|-------------|--------|-----|-------------------| ``` --- ## 5. Product Schema Enhancement Validate and generate Product schema following Google's current requirements. ### Confirmed Required Properties (Google Merchant) Confirmed required fields are `name`, `image`, and `offers`; use `Offer`, not `AggregateOffer`, for merchant listings. Merchant listings require a `price` greater than zero, and `priceCurrency` whenever `price` is set. ```json { "@context": "https://schema.org", "@type": "Product", "name": "", "image": [""], "offers": { "@type": "Offer", "url": "", "priceCurrency": "USD", "price": "49.00", "availability": "https://schema.org/InStock" } } ``` ### Recommended Properties (Enhance Rich Results) - `sku` -- product identifier - `description`, `brand`, `offers.seller` -- recommended context fields - `gtin13` / `gtin14` / `mpn` -- global trade identifiers - `aggregateRating` -- star rating + review count - `review` -- individual reviews (minimum 1) - `color`, `material`, `size` -- variant attributes - `shippingDetails` -- ShippingDetails with rate and delivery time (merchant-level shipping via `ShippingService` is also supported; shipping/returns can be set in Search Console without a Merchant Center account) - `hasMerchantReturnPolicy` -- MerchantReturnPolicy with type and days - `hasAdultConsideration` -- **required for adult-oriented products** (added 2026-05-20 to Product variant / Merchant listing); Google Search supports only the value `https://schema.org/SexualContentConsideration` - `category` -- `Text`, `CategoryCode`, or an array mixing both. Use custom text for merchant-defined product types and `CategoryCode` with Google's taxonomy URL plus `codeValue` for Google Product Categories. ### Validation Rules 1. `price` must be a number string, not "$29.99" (no currency symbol) 2. `availability` must use full Schema.org URL enum 3. `image` should be array with >= 1 high-res image URL 4. `priceCurrency` must be ISO 4217 (USD, EUR, GBP) 5. If `brand` is present, `brand.name` must not be empty or "N/A" 6. Sale periods use `validFrom` plus either `validThrough` or `priceValidUntil`, in ISO 8601 format. Include time and timezone when known. 7. If `aggregateRating` present: `ratingValue` and `reviewCount` required (the merchant-listing docs list `reviewCount`; the review-snippet docs also accept `ratingCount`) 8. Do not include fake reviews or undisclosed incentivized reviews in visible content or structured data. Clearly and prominently disclose incentives. ### Schema Scoring | Completeness | Score | |-------------|-------| | All required fields | 50/100 | | + aggregateRating | 65/100 | | + sku/gtin/mpn | 75/100 | | + shippingDetails | 85/100 | | + merchantReturnPolicy | 90/100 | | + reviews (3+) | 100/100 | --- ## Cross-Skill Integration | Skill | Integration Point | |-------|------------------| | **seo-schema** | Delegates Product schema generation; reuses validation logic | | **seo-images** | Product image audit (alt text, format, dimensions), plus `DigitalSourceType: TrainedAlgorithmicMedia` IPTC label for AI-generated product images (Merchant Center requirement) | | **seo-content** | Product description E-E-A-T and uniqueness analysis | | **seo-dataforseo** | Organic keyword rankings for gap analysis | | **seo-technical** | Core Web Vitals for product pages (LCP on hero image) | | **seo-hreflang** | Region-specific result units: in the EEA, product and (since 2026-09-18) local business queries can show aggregator and supplier units; the EEA, South Africa and Türkiye also have structured data carousels, each with its own eligibility rules (documented 2026-09-08) | | **seo-google** | GSC indexation + Performance data for product URLs (NOT Merchant Center feed validation, that is done in Merchant Center / the **Merchant API**; the legacy Content API for Shopping sunsets 2026-08-18) | ## UCP: Universal Commerce Protocol (live) Google-initiated open standard (co-developed with Shopify, Etsy, Wayfair, Target, Walmart; payment partners Visa/Mastercard/Stripe/Adyen/Amex) for letting AI agents discover, negotiate, and transact with merchants without one-off integrations. Google confirms a first reference implementation for conversational buying in AI Mode in Search. Broader Universal Cart rollout details are reported from Google I/O 2026 keynote coverage; not confirmed on a Google-owned source. ucp.dev lists **2026-08-25** as the latest spec release (Google's merchant guide still documents 2026-04-08) in its **date-based versioning** scheme, not `1.0`; two integration paths: **Native** (default) and **Embedded** (approved merchants). Pairs with **AP2** (reportedly moving toward FIDO governance). Canonical: developers.google.com/merchant/ucp and ucp.dev. Merchants already on **Google Merchant Center** with clean Product schema can declare a UCP profile at `/.well-known/ucp` listing capabilities (`dev.ucp.shopping.checkout`, `.fulfillment`, `.discount`). See `references/ucp-universal-commerce-protocol.md` for audit criteria, capability examples, and the relationship to AP2 (Agent Payments Protocol). ### Audit command ```bash # Discover and validate the UCP profile "${CLAUDE_PLUGIN_ROOT}/scripts/claude-seo" run ucp_check.py https://store.example.com --json # With endpoint reachability probes (HEAD each declared capability) "${CLAUDE_PLUGIN_ROOT}/scripts/claude-seo" run ucp_check.py https://store.example.com --probe-endpoints --json ``` The script returns: profile presence, version, declared capabilities, structural issues (missing fields, unknown capability IDs), and (with `--probe-endpoints`) per-endpoint reachability. SSRF-blocked endpoints are reported explicitly. Missing profile is reported as opportunity, not failure. UCP itself is live; what's early is broad merchant adoption. Flag a literal `"version": "1.0"` as invalid (UCP versions are date-based, e.g. `2026-04-08`). --- ## Error Handling | Error | Cause | Response | |-------|-------|----------| | No Product schema found | Page lacks JSON-LD | Analyze page content, generate recommended schema | | DataForSEO credentials missing | Env vars not set | Run analysis without marketplace data, note limitation | | Cost check blocked | Daily budget exceeded | Inform user, offer free-only analysis | | Empty Shopping results | No products for keyword | Suggest broader keyword, check location settings | | Amazon API timeout | Network/rate limit | Retry with backoff, fall back to Google-only | | Invalid URL | Malformed input | Validate via `google_auth.validate_url()`, show error | | Non-product page | URL is category/homepage | Run the store-level checks (UCP profile, category structure, feeds) and ask for a product URL for the product-level checks | --- ## Output Template ``` ## E-commerce SEO Report: [URL or Keyword] ### Overall Score: XX/100 ### Product Page SEO - Schema Completeness: XX/100 - Title & Meta: XX/100 - Image Optimization: XX/100 - Content Quality: XX/100 - Internal Linking: XX/100 ### Marketplace Intelligence (if DataForSEO available) - Google Shopping Listings: N products found - Price Range: $XX - $XX (median: $XX) - Top Seller: [name] (XX% market share) - Amazon Comparison: [available/not checked] ### Top Recommendations 1. [Critical] ... 2. [High] ... 3. [Medium] ... Generate a PDF report? Use `/seo google report` ```