CtrlK
BlogDocsLog inGet started
Tessl Logo
PluginPublic

adobe/aem-eds-content-ops

Content operations skills for AEM Edge Delivery Services: page auditing, SEO optimization, AI search (GEO), WCAG accessibility, bulk metadata, structured data, sitemap validation, and content diffing. Complements the EDS development skills with operational tooling for content teams.

Quality

90%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide
SecuritybySnyk

Low

Low-risk findings worth noting

Overview
Quality
Evals
Security
Files

product-page-seo-reference.mdskills/product-page-seo/references/

Product Page SEO Reference

Product Schema (JSON-LD) Properties

Required and recommended properties for Google Product rich results:

PropertySourceRequired?
@typeProductYes
nameProduct name from Catalog ServiceYes
imagePrimary product image URL(s)Yes
descriptionProduct short or full descriptionRecommended
skuProduct SKURecommended
brand.nameBrand attribute from catalogRecommended
offers.@typeOfferYes (for price display)
offers.priceProduct final priceYes
offers.priceCurrencyCurrency code (e.g., USD)Yes
offers.availabilityInStock, OutOfStock, etc.Yes
offers.urlCanonical product URLRecommended
aggregateRatingAverage rating and review countRecommended (if reviews exist)

Image SEO Checks

CheckPriorityFail condition
Alt text contains product nameP1Generic alt like "product image" or "IMG_001"
Alt text quality from catalogP1API returns empty/generic alt for every product
width/height set (CLS)P1Dimensions missing
LCP image not lazy-loadedP0Primary image has loading="lazy"
LCP image fetchpriority="high"P1Attribute absent on primary image
Modern format (WebP)P2Only JPEG/PNG served
Descriptive image file namesP3Hashed Commerce filenames only

Crawlability Strategy Tiers

TierWhat is in initial HTMLRiskWhen to use
1 - JavaScript-dependentTemplate only; all product data via JSHighSmall catalogs, low search-traffic needs (default for most EDS commerce)
2 - Hybrid (recommended minimum)Critical meta tags + JSON-LD pre-populated/edge-injected; body via JSMediumMost storefronts that care about search
3 - Pre-rendered (recommended for large catalogs)Name, price, description, primary image pre-rendered; JS enhancesLowLarge catalogs, high search-traffic importance

Dynamic Meta Tag Strategies

When meta tags are set only via JavaScript (not visible to non-JS crawlers), apply one of:

  1. Pre-populate from catalog at build time - generate product-specific meta in head.html from URL patterns via a build-time script.
  2. Edge-side injection - inject product meta into the HTML response with an edge worker before it reaches the crawler.
  3. Metadata mapping - some EDS commerce setups map product metadata to page-level metadata via configs.xlsx; verify if configured.

Troubleshooting

SymptomCauseFix
Pages show "Discovered - currently not indexed" in Search ConsoleGooglebot has not rendered the JS yet, or rendered content was insufficientMove to Tier 2 or 3: add product content to the initial HTML
Structured data errors in Rich Results TestJSON-LD properties missing or malformedValidate against Google's Product requirements; ensure price and availability are accurate
Product images missing from Google ImagesImages lack descriptive alt text or are lazy-loadedSet alt from product name in the PDP block; eager-load the primary image
Canonical points to preview domain.aem.page/.aem.live set as canonical instead of productionFix canonical logic in head.html or scripts.js to use the production domain
Sitemap missing product URLsNo custom sitemap generation for route-based pagesBuild a sitemap generator that queries the Catalog Service for active products
Price in JSON-LD differs from displayed priceCaching or currency mismatchSource both from the same Catalog Service response; never hardcode price

tile.json