Skill v1.0.7
currentAutomated scan100/100Merge pull request #306 from AgriciDaniel/codex/dependabot-noise-reduction
version: "1.0.7" 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: "<url or keyword>" license: MIT compatibility: "Enhanced with DataForSEO Merchant API (optional)" metadata: author: AgriciDaniel original_author: "Matej Marjanovic (Pro Hub Challenge)" version: "2.4.1" 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 <url> | Full e-commerce SEO analysis of a product page or store | Optional | |
/seo ecommerce products <keyword> | Google Shopping competitive analysis | Required | |
/seo ecommerce gaps <domain> | Keyword gap: organic vs Shopping visibility | Required | |
/seo ecommerce schema <url> | 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 <url> --mode auto → raw/rendered HTML2. "${CLAUDE_PLUGIN_ROOT}/scripts/claude-seo" run parse_html.py --url <url> → SEO elements3. 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:
"${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:
"${CLAUDE_PLUGIN_ROOT}/scripts/claude-seo" run dataforseo_costs.py log merchant_google_products_search <cost>
Workflow
# Product search: who sells what at what price"${CLAUDE_PLUGIN_ROOT}/scripts/claude-seo" run dataforseo_merchant.py search "<keyword>" --marketplace google# Seller analysis: merchant ratings and dominance"${CLAUDE_PLUGIN_ROOT}/scripts/claude-seo" run dataforseo_merchant.py sellers "<keyword>"# 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)
"${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
# Amazon product search"${CLAUDE_PLUGIN_ROOT}/scripts/claude-seo" run dataforseo_merchant.py search "<keyword>" --marketplace amazon# Cross-marketplace comparison"${CLAUDE_PLUGIN_ROOT}/scripts/claude-seo" run dataforseo_merchant.py compare "<keyword>"
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
- Fetch organic rankings via seo-dataforseo:
dataforseo_labs_google_ranked_keywords for domain
- 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 <keyword> for the top organic keywords
- 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.
{"@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 identifierdescription,brand,offers.seller-- recommended context fieldsgtin13/gtin14/mpn-- global trade identifiersaggregateRating-- star rating + review countreview-- individual reviews (minimum 1)color,material,size-- variant attributesshippingDetails-- ShippingDetails with rate and delivery time (merchant-level shipping viaShippingServiceis also supported; shipping/returns can be set in Search Console without a Merchant Center account)hasMerchantReturnPolicy-- MerchantReturnPolicy with type and dayshasAdultConsideration-- required for adult-oriented products (added 2026-05-20 to Product variant / Merchant listing); Google Search supports only the valuehttps://schema.org/SexualContentConsiderationcategory--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
pricemust be a number string, not "$29.99" (no currency symbol)availabilitymust use full Schema.org URL enumimageshould be array with >= 1 high-res image URLpriceCurrencymust be ISO 4217 (USD, EUR, GBP)- If
brandis present,brand.namemust not be empty or "N/A" - Sale periods use
validFromplus eithervalidThroughor
priceValidUntil, in ISO 8601 format. Include time and timezone when known.
- If
aggregateRatingpresent:ratingValueandreviewCountrequired (the merchant-listing docs listreviewCount; the review-snippet docs also acceptratingCount) - 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
# 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 Recommendations1. [Critical] ...2. [High] ...3. [Medium] ...Generate a PDF report? Use `/seo google report`