E-commerce SEO Analysis
E-commerce SEO analysis: Google Shopping visibility, Amazon marketplace intelligence, product schema validation, competitor pricing analysis, and marketplace keyword gaps.
How to use it
- Hit Copy SKILL.md — or use the Claude Code line below to get every file.
- Claude: ⋯ → Download .md, then Customize → Skills → Add → Upload skill.
ChatGPT: make a Project and paste it into Instructions.
Neither? Paste it at the top of a new chat — it works for that chat. - Describe your job in plain words. The AI follows the skill from there.
npx degit AgriciDaniel/claude-seo/skills/seo-ecommerce#main ~/.claude/skills/seo-ecommerceFor one project only, change the path to .claude/skills/seo-ecommerce. This skill also uses render_page.py, parse_html.py, dataforseo_costs.py, dataforseo_merchant.py, dataforseo_normalize.py, results.json — copying SKILL.md alone won't be enough. See the folder on GitHub.
Not working?
- Check which app you pasted it into — the steps above name the right one.
- Some skills need the paid tier of Claude or ChatGPT.
Paste into Claude, ChatGPT or Cursor.
Show the full text387 lines
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 HTML
2. "${CLAUDE_PLUGIN_ROOT}/scripts/claude-seo" run parse_html.py --url <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)
- Image dimensions >= 800px for Google Shopping eligibility
- 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_keywordsfor domain - Fetch Google Shopping presence via Merchant API:
merchant_google_products_searchfor 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.
{
"@context": "https://schema.org",
"@type": "Product",
"name": "",
"image": [""],
"offers": {
"@type": "Offer",
"url": "",
"priceCurrency": "USD",
"price": "0.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 andCategoryCodewith Google's taxonomy URL pluscodeValuefor 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 eithervalidThroughorpriceValidUntil, in ISO 8601 format. Include time and timezone when known. - If
aggregateRatingpresent:ratingValueandreviewCountrequired - 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: product queries in the EEA, South Africa, and Turkiye can show supplier units and carousels with their 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-04-08 as the latest release 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 | Detect page type, suggest /seo ecommerce schema instead |
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`
| 1 | |
| 2 | name seo-ecommerce |
| 3 | description > |
| 4 | E-commerce SEO analysis: Google Shopping visibility, Amazon marketplace |
| 5 | intelligence, product schema validation, competitor pricing analysis, and |
| 6 | marketplace keyword gaps. Combines on-page product SEO with marketplace data |
| 7 | from DataForSEO Merchant API. Use when user says "ecommerce SEO", "product SEO", |
| 8 | "Google Shopping", "marketplace SEO", "product schema", "Amazon SEO", |
| 9 | "product listings", "shopping ads", or "merchant SEO". |
| 10 | user-invocable true |
| 11 | argument-hint "<url or keyword>" |
| 12 | license MIT |
| 13 | compatibility "Enhanced with DataForSEO Merchant API (optional)" |
| 14 | metadata |
| 15 | author AgriciDaniel |
| 16 | original_author "Matej Marjanovic (Pro Hub Challenge)" |
| 17 | version "2.3.1" |
| 18 | category seo |
| 19 | |
| 20 | |
| 21 | # E-commerce SEO Analysis |
| 22 | |
| 23 | Comprehensive product page optimization, marketplace intelligence, and |
| 24 | competitive pricing analysis. Works standalone (on-page + schema) and with |
| 25 | DataForSEO Merchant API for live Google Shopping and Amazon data. |
| 26 | |
| 27 | ## Commands |
| 28 | |
| 29 | | Command | Purpose | DataForSEO? | |
| 30 | |---------|---------|-------------| |
| 31 | | `/seo ecommerce <url>` | Full e-commerce SEO analysis of a product page or store | Optional | |
| 32 | | `/seo ecommerce products <keyword>` | Google Shopping competitive analysis | Required | |
| 33 | | `/seo ecommerce gaps <domain>` | Keyword gap: organic vs Shopping visibility | Required | |
| 34 | | `/seo ecommerce schema <url>` | Product schema validation and enhancement | No | |
| 35 | |
| 36 | |
| 37 | |
| 38 | ## 1. Product Page Analysis (No DataForSEO Needed) |
| 39 | |
| 40 | Fetch and parse any product page for on-page SEO quality. |
| 41 | |
| 42 | ### Workflow |
| 43 | |
| 44 | |
| 45 | 1. "${CLAUDE_PLUGIN_ROOT}/scripts/claude-seo" run render_page.py <url> --mode auto → raw/rendered HTML |
| 46 | 2. "${CLAUDE_PLUGIN_ROOT}/scripts/claude-seo" run parse_html.py --url <url> → SEO elements |
| 47 | 3. Analyze product-specific signals (below) |
| 48 | |
| 49 | |
| 50 | ### Product SEO Checklist |
| 51 | |
| 52 | #### Title Tag |
| 53 | [ ] Contains primary product keyword |
| 54 | [ ] Includes brand name |
| 55 | [ ] Under 60 characters (no truncation in SERPs) |
| 56 | [ ] Format: `[Product Name] - [Key Feature] | [Brand]` |
| 57 | |
| 58 | #### Meta Description |
| 59 | [ ] Contains product keyword + benefit |
| 60 | [ ] Includes price or "from $XX" (triggers rich snippet interest) |
| 61 | [ ] Call-to-action present (Shop now, Buy, Free shipping) |
| 62 | [ ] Under 155 characters |
| 63 | |
| 64 | #### Heading Structure |
| 65 | [ ] Single H1 matching primary product name |
| 66 | [ ] H2s for: Features, Specifications, Reviews, Related Products |
| 67 | [ ] No duplicate H1 tags across product variants |
| 68 | |
| 69 | #### Product Images |
| 70 | [ ] Alt text includes product name + distinguishing feature |
| 71 | [ ] File names are descriptive (not `IMG_001.jpg`) |
| 72 | [ ] WebP format served (with JPEG fallback) |
| 73 | [ ] At least 3 images per product (hero, detail, lifestyle) |
| 74 | [ ] Image dimensions >= 800px for Google Shopping eligibility |
| 75 | [ ] Lazy loading on below-fold images only |
| 76 | |
| 77 | #### Internal Linking |
| 78 | [ ] Breadcrumb navigation: Home > Category > Subcategory > Product |
| 79 | [ ] Related products section (cross-sell / upsell) |
| 80 | [ ] Link back to category page with keyword-rich anchor |
| 81 | [ ] Reviews section links to full review page (if separate) |
| 82 | |
| 83 | #### Content Quality |
| 84 | [ ] Unique product description (not manufacturer copy-paste) |
| 85 | [ ] Word count >= 200 for product description body |
| 86 | [ ] Specs table present (not just prose) |
| 87 | [ ] User reviews on-page (UGC signals) |
| 88 | |
| 89 | ### Scoring |
| 90 | |
| 91 | | Category | Weight | Criteria | |
| 92 | |----------|--------|----------| |
| 93 | | Schema completeness | 25% | Required + recommended Product fields | |
| 94 | | Title & meta | 15% | Keyword placement, length, format | |
| 95 | | Image optimization | 20% | Alt text, format, sizing, count | |
| 96 | | Content quality | 20% | Unique description, specs, reviews | |
| 97 | | Internal linking | 10% | Breadcrumbs, related products, categories | |
| 98 | | Technical | 10% | Page speed, mobile rendering, canonical | |
| 99 | |
| 100 | |
| 101 | |
| 102 | ## 2. Google Shopping Intelligence (DataForSEO Merchant API) |
| 103 | |
| 104 | Live competitive analysis from Google Shopping results. |
| 105 | |
| 106 | ### Cost Guardrail (MANDATORY) |
| 107 | |
| 108 | Before EVERY Merchant API call: |
| 109 | |
| 110 | "${CLAUDE_PLUGIN_ROOT}/scripts/claude-seo" run dataforseo_costs.py check merchant_google_products_search |
| 111 | |
| 112 | |
| 113 | `"status": "approved"` -- proceed |
| 114 | `"status": "needs_approval"` -- show cost, ask user |
| 115 | `"status": "blocked"` -- stop, inform user |
| 116 | |
| 117 | After each call: |
| 118 | |
| 119 | "${CLAUDE_PLUGIN_ROOT}/scripts/claude-seo" run dataforseo_costs.py log merchant_google_products_search <cost> |
| 120 | |
| 121 | |
| 122 | ### Workflow |
| 123 | |
| 124 | |
| 125 | # Product search: who sells what at what price |
| 126 | "${CLAUDE_PLUGIN_ROOT}/scripts/claude-seo" run dataforseo_merchant.py search "<keyword>" --marketplace google |
| 127 | |
| 128 | # Seller analysis: merchant ratings and dominance |
| 129 | "${CLAUDE_PLUGIN_ROOT}/scripts/claude-seo" run dataforseo_merchant.py sellers "<keyword>" |
| 130 | |
| 131 | # Normalize results for analysis |
| 132 | "${CLAUDE_PLUGIN_ROOT}/scripts/claude-seo" run dataforseo_normalize.py results.json --module merchant |
| 133 | |
| 134 | |
| 135 | ### Analysis Outputs |
| 136 | |
| 137 | #### Pricing Intelligence |
| 138 | Price distribution: min, max, median, P25, P75 |
| 139 | Price outliers (> 2 standard deviations from median) |
| 140 | Price-to-rating correlation |
| 141 | Currency normalization to USD (or user-specified) |
| 142 | |
| 143 | #### Seller Landscape |
| 144 | Top 10 sellers by listing count |
| 145 | Merchant rating distribution |
| 146 | Free shipping prevalence |
| 147 | New vs established sellers |
| 148 | |
| 149 | #### Product Listing Quality |
| 150 | Title keyword patterns in top listings |
| 151 | Average rating and review count benchmarks |
| 152 | Image count per listing |
| 153 | Availability status distribution |
| 154 | |
| 155 | Load `references/marketplace-endpoints.md` for full API parameter details. |
| 156 | |
| 157 | |
| 158 | |
| 159 | ## 3. Amazon Marketplace (DataForSEO) |
| 160 | |
| 161 | Cross-marketplace intelligence comparing Google Shopping and Amazon. |
| 162 | |
| 163 | ### Cost Guardrail (MANDATORY) |
| 164 | |
| 165 | |
| 166 | "${CLAUDE_PLUGIN_ROOT}/scripts/claude-seo" run dataforseo_costs.py check merchant_amazon_products_search |
| 167 | |
| 168 | |
| 169 | Amazon endpoints are in the `warn_endpoints` set -- always requires user approval. |
| 170 | |
| 171 | ### Workflow |
| 172 | |
| 173 | |
| 174 | # Amazon product search |
| 175 | "${CLAUDE_PLUGIN_ROOT}/scripts/claude-seo" run dataforseo_merchant.py search "<keyword>" --marketplace amazon |
| 176 | |
| 177 | # Cross-marketplace comparison |
| 178 | "${CLAUDE_PLUGIN_ROOT}/scripts/claude-seo" run dataforseo_merchant.py compare "<keyword>" |
| 179 | |
| 180 | |
| 181 | ### Cross-Marketplace Report |
| 182 | |
| 183 | | Metric | Google Shopping | Amazon | |
| 184 | |--------|---------------|--------| |
| 185 | | Avg price | $ | $ | |
| 186 | | Median rating | X.X | X.X | |
| 187 | | Avg review count | N | N | |
| 188 | | Top seller share | % | % | |
| 189 | | Free shipping % | % | % | |
| 190 | |
| 191 | |
| 192 | |
| 193 | ## 4. Marketplace Keyword Gaps |
| 194 | |
| 195 | Identify mismatches between organic and Shopping visibility. |
| 196 | |
| 197 | ### Workflow |
| 198 | |
| 199 | Fetch organic rankings via seo-dataforseo: |
| 200 | `dataforseo_labs_google_ranked_keywords` for domain |
| 201 | Fetch Google Shopping presence via Merchant API: |
| 202 | `merchant_google_products_search` for top organic keywords |
| 203 | Cross-reference results |
| 204 | |
| 205 | ### Gap Types |
| 206 | |
| 207 | | Gap Type | Meaning | Action | |
| 208 | |----------|---------|--------| |
| 209 | | **Organic Only** | Ranks organically but no Shopping ads | Create Google Merchant Center feed, bid on these keywords | |
| 210 | | **Shopping Only** | Shopping visibility but weak/no organic | Create content (buying guides, comparison pages) for these keywords | |
| 211 | | **Both Present** | Visible in both channels | Optimize: ensure price consistency, enhance schema | |
| 212 | | **Neither** | No visibility in either | Low priority unless high volume | |
| 213 | |
| 214 | ### Output Format |
| 215 | |
| 216 | |
| 217 | ## Keyword Gap Analysis: example.com |
| 218 | |
| 219 | ### Opportunities: Organic → Shopping (12 keywords) |
| 220 | | Keyword | Organic Pos | Volume | CPC | Recommended Action | |
| 221 | |---------|------------|--------|-----|-------------------| |
| 222 | |
| 223 | ### Opportunities: Shopping → Organic (8 keywords) |
| 224 | | Keyword | Shopping Rank | Volume | CPC | Content Type Needed | |
| 225 | |---------|-------------|--------|-----|-------------------| |
| 226 | |
| 227 | |
| 228 | |
| 229 | |
| 230 | ## 5. Product Schema Enhancement |
| 231 | |
| 232 | Validate and generate Product schema following Google's current requirements. |
| 233 | |
| 234 | ### Confirmed Required Properties (Google Merchant) |
| 235 | |
| 236 | Confirmed required fields are `name`, `image`, and `offers`; use `Offer`, not `AggregateOffer`, for merchant listings. |
| 237 | |
| 238 | |
| 239 | { |
| 240 | "@context": "https://schema.org", |
| 241 | "@type": "Product", |
| 242 | "name": "", |
| 243 | "image": [""], |
| 244 | "offers": { |
| 245 | "@type": "Offer", |
| 246 | "url": "", |
| 247 | "priceCurrency": "USD", |
| 248 | "price": "0.00", |
| 249 | "availability": "https://schema.org/InStock" |
| 250 | } |
| 251 | } |
| 252 | |
| 253 | |
| 254 | ### Recommended Properties (Enhance Rich Results) |
| 255 | |
| 256 | `sku` -- product identifier |
| 257 | `description`, `brand`, `offers.seller` -- recommended context fields |
| 258 | `gtin13` / `gtin14` / `mpn` -- global trade identifiers |
| 259 | `aggregateRating` -- star rating + review count |
| 260 | `review` -- individual reviews (minimum 1) |
| 261 | `color`, `material`, `size` -- variant attributes |
| 262 | `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) |
| 263 | `hasMerchantReturnPolicy` -- MerchantReturnPolicy with type and days |
| 264 | `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` |
| 265 | `category` -- `Text`, `CategoryCode`, or an array mixing both. Use custom |
| 266 | text for merchant-defined product types and `CategoryCode` with Google's |
| 267 | taxonomy URL plus `codeValue` for Google Product Categories. |
| 268 | |
| 269 | ### Validation Rules |
| 270 | |
| 271 | `price` must be a number string, not "$29.99" (no currency symbol) |
| 272 | `availability` must use full Schema.org URL enum |
| 273 | `image` should be array with >= 1 high-res image URL |
| 274 | `priceCurrency` must be ISO 4217 (USD, EUR, GBP) |
| 275 | If `brand` is present, `brand.name` must not be empty or "N/A" |
| 276 | Sale periods use `validFrom` plus either `validThrough` or |
| 277 | `priceValidUntil`, in ISO 8601 format. Include time and timezone when known. |
| 278 | If `aggregateRating` present: `ratingValue` and `reviewCount` required |
| 279 | Do not include fake reviews or undisclosed incentivized reviews in visible |
| 280 | content or structured data. Clearly and prominently disclose incentives. |
| 281 | |
| 282 | ### Schema Scoring |
| 283 | |
| 284 | | Completeness | Score | |
| 285 | |-------------|-------| |
| 286 | | All required fields | 50/100 | |
| 287 | | + aggregateRating | 65/100 | |
| 288 | | + sku/gtin/mpn | 75/100 | |
| 289 | | + shippingDetails | 85/100 | |
| 290 | | + merchantReturnPolicy | 90/100 | |
| 291 | | + reviews (3+) | 100/100 | |
| 292 | |
| 293 | |
| 294 | |
| 295 | ## Cross-Skill Integration |
| 296 | |
| 297 | | Skill | Integration Point | |
| 298 | |-------|------------------| |
| 299 | | **seo-schema** | Delegates Product schema generation; reuses validation logic | |
| 300 | | **seo-images** | Product image audit (alt text, format, dimensions), plus `DigitalSourceType: TrainedAlgorithmicMedia` IPTC label for AI-generated product images (Merchant Center requirement) | |
| 301 | | **seo-content** | Product description E-E-A-T and uniqueness analysis | |
| 302 | | **seo-dataforseo** | Organic keyword rankings for gap analysis | |
| 303 | | **seo-technical** | Core Web Vitals for product pages (LCP on hero image) | |
| 304 | | **seo-hreflang** | Region-specific result units: product queries in the EEA, South Africa, and Turkiye can show supplier units and carousels with their own eligibility rules (documented 2026-09-08) | |
| 305 | | **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) | |
| 306 | |
| 307 | ## UCP: Universal Commerce Protocol (live) |
| 308 | |
| 309 | Google-initiated open standard (co-developed with Shopify, Etsy, Wayfair, |
| 310 | Target, Walmart; payment partners Visa/Mastercard/Stripe/Adyen/Amex) for |
| 311 | letting AI agents discover, negotiate, and transact with merchants without |
| 312 | one-off integrations. Google confirms a first reference implementation for |
| 313 | conversational buying in AI Mode in Search. Broader Universal Cart rollout |
| 314 | details are reported from Google I/O 2026 keynote coverage; not confirmed on a |
| 315 | Google-owned source. ucp.dev lists **2026-04-08** as the latest release in its |
| 316 | **date-based versioning** scheme, not `1.0`; two integration paths: **Native** |
| 317 | (default) and **Embedded** (approved merchants). Pairs with **AP2** (reportedly |
| 318 | moving toward FIDO governance). Canonical: developers.google.com/merchant/ucp |
| 319 | and ucp.dev. |
| 320 | |
| 321 | Merchants already on **Google Merchant Center** with clean Product schema can |
| 322 | declare a UCP profile at `/.well-known/ucp` listing capabilities |
| 323 | (`dev.ucp.shopping.checkout`, `.fulfillment`, `.discount`). See |
| 324 | `references/ucp-universal-commerce-protocol.md` for audit criteria, |
| 325 | capability examples, and the relationship to AP2 (Agent Payments Protocol). |
| 326 | |
| 327 | ### Audit command |
| 328 | |
| 329 | |
| 330 | # Discover and validate the UCP profile |
| 331 | "${CLAUDE_PLUGIN_ROOT}/scripts/claude-seo" run ucp_check.py https://store.example.com --json |
| 332 | |
| 333 | # With endpoint reachability probes (HEAD each declared capability) |
| 334 | "${CLAUDE_PLUGIN_ROOT}/scripts/claude-seo" run ucp_check.py https://store.example.com --probe-endpoints --json |
| 335 | |
| 336 | |
| 337 | The script returns: profile presence, version, declared capabilities, |
| 338 | structural issues (missing fields, unknown capability IDs), and (with |
| 339 | `--probe-endpoints`) per-endpoint reachability. SSRF-blocked endpoints are |
| 340 | reported explicitly. Missing profile is reported as opportunity, not failure. |
| 341 | UCP itself is live; what's early is broad merchant adoption. Flag a literal |
| 342 | `"version": "1.0"` as invalid (UCP versions are date-based, e.g. `2026-04-08`). |
| 343 | |
| 344 | |
| 345 | |
| 346 | ## Error Handling |
| 347 | |
| 348 | | Error | Cause | Response | |
| 349 | |-------|-------|----------| |
| 350 | | No Product schema found | Page lacks JSON-LD | Analyze page content, generate recommended schema | |
| 351 | | DataForSEO credentials missing | Env vars not set | Run analysis without marketplace data, note limitation | |
| 352 | | Cost check blocked | Daily budget exceeded | Inform user, offer free-only analysis | |
| 353 | | Empty Shopping results | No products for keyword | Suggest broader keyword, check location settings | |
| 354 | | Amazon API timeout | Network/rate limit | Retry with backoff, fall back to Google-only | |
| 355 | | Invalid URL | Malformed input | Validate via `google_auth.validate_url()`, show error | |
| 356 | | Non-product page | URL is category/homepage | Detect page type, suggest `/seo ecommerce schema` instead | |
| 357 | |
| 358 | |
| 359 | |
| 360 | ## Output Template |
| 361 | |
| 362 | |
| 363 | ## E-commerce SEO Report: [URL or Keyword] |
| 364 | |
| 365 | ### Overall Score: XX/100 |
| 366 | |
| 367 | ### Product Page SEO |
| 368 | - Schema Completeness: XX/100 |
| 369 | - Title & Meta: XX/100 |
| 370 | - Image Optimization: XX/100 |
| 371 | - Content Quality: XX/100 |
| 372 | - Internal Linking: XX/100 |
| 373 | |
| 374 | ### Marketplace Intelligence (if DataForSEO available) |
| 375 | - Google Shopping Listings: N products found |
| 376 | - Price Range: $XX - $XX (median: $XX) |
| 377 | - Top Seller: [name] (XX% market share) |
| 378 | - Amazon Comparison: [available/not checked] |
| 379 | |
| 380 | ### Top Recommendations |
| 381 | 1. [Critical] ... |
| 382 | 2. [High] ... |
| 383 | 3. [Medium] ... |
| 384 | |
| 385 | Generate a PDF report? Use `/seo google report` |
| 386 | |
| 387 |