angeo/module-rich-data

Magento 2 JSON-LD Rich Data for AI Engine Optimization. Injects spec-compliant Product, Organization, BreadcrumbList, FAQPage, and WebSite schema. Fixes the 'Product schema — JSON-LD structured data' signal in angeo/module-aeo-audit.

Maintainers

Package info

github.com/angeo-dev/module-rich-data

Homepage

Type:magento2-module

pkg:composer/angeo/module-rich-data

Statistics

Installs: 11

Dependents: 0

Suggesters: 2

Stars: 5

Open Issues: 0

1.2.0 2026-06-14 18:54 UTC

This package is auto-updated.

Last update: 2026-06-16 07:19:06 UTC


README

Packagist License PHP

Fixes the "Product schema — JSON-LD structured data" signal in angeo/module-aeo-audit. Injects spec-compliant JSON-LD on product pages, CMS pages, and homepage.

What this module fixes

AEO Audit signal Before After
Product schema — JSON-LD structured data FAIL / WARN PASS
FAQPage schema — AI answer eligibility WARN PASS (on FAQ CMS pages)
Merchant policies — return & shipping schema FAIL PASS (when enabled & configured)
Product schema — AggregateRating WARN PASS (when reviews exist)
JSON-LD quality — BreadcrumbList WARN PASS (now rendered on product pages)

Schema types injected

Schema Pages Key fields
Product All product pages name, description, image, sku, gtin/mpn, offers.price, offers.priceCurrency, offers.availability, offers.hasMerchantReturnPolicy, offers.shippingDetails, aggregateRating
Organization All pages name, url, logo, sameAs, contactPoint
WebSite Homepage only name, url, potentialAction/SearchAction
BreadcrumbList Product pages category path
FAQPage CMS pages with FAQ content auto-detected Q&A pairs

Installation

composer require angeo/module-rich-data
bin/magento setup:upgrade
bin/magento cache:flush

Configuration

Stores → Configuration → Angeo → Rich Data (JSON-LD)

Product schema

  • Enable/disable
  • Include AggregateRating (from Magento reviews)
  • Include BreadcrumbList
  • Include SKU
  • Include Brand (configurable attribute)
  • Include GTIN / MPN (configurable attributes)
  • Item condition (New/Used/Refurbished)
  • In-stock / out-of-stock availability URLs

Merchant policies (return & shipping)

Injects offers.hasMerchantReturnPolicy and offers.shippingDetails — required by Google & ChatGPT Shopping since Jan 2026. Disabled by default; enable and fill in your real values.

  • Return policy: enable, return window (days), applicable country, return fee
  • Shipping details: enable, flat shipping rate, destination country, handling time (min/max days), transit time (min/max days)

Organization schema

  • Organization name (default: store name)
  • Logo URL
  • sameAs social URLs (comma-separated)
  • Contact telephone + type

WebSite schema

  • Enable/disable
  • Include SearchAction (Sitelinks Searchbox)

FAQPage schema

  • Enable/disable — auto-detected from CMS page content

FAQ page markup (recommended)

Add data-faq-question / data-faq-answer attributes to your CMS FAQ page for explicit Q&A detection:

<div data-faq-question="What is your return policy?"
     data-faq-answer="We offer 30-day returns on all items in original condition.">
</div>

Without these attributes the module uses heuristic detection: <h2>/<h3> followed by <p> are treated as question/answer pairs.

Extending with custom schemas

Implement Angeo\RichData\Api\Data\SchemaInterface and register via di.xml:

<type name="Angeo\RichData\Model\JsonLd\Renderer\SchemaRenderer">
    <arguments>
        <argument name="builders" xsi:type="array">
            <item name="my_schema" xsi:type="object">Vendor\Module\Model\JsonLd\Builder\MySchemaBuilder</item>
        </argument>
    </arguments>
</type>

CLI validation

# Validate on random product
bin/magento angeo:rich-data:validate --store=en_us

# Validate specific product on specific store
bin/magento angeo:rich-data:validate --store=en_us --product-id=42

Output example:

Validating JSON-LD for: [42] Alpine Hiking Jacket
  Store:   default
  URL:     https://mystore.com/alpine-jacket

Found 3 JSON-LD block(s):
  Block 1: @type:Organization — valid JSON ✓
  Block 2: @type:Product — valid JSON ✓
    PASS aggregateRating present
  Block 3: @type:BreadcrumbList — valid JSON ✓

All JSON-LD blocks are valid.

The Angeo AI Suite

Module Purpose
angeo/module-aeo-audit AEO audit — detects missing schema
angeo/module-rich-data This module — fixes missing schema
angeo/module-llms-txt Generates /llms.txt
angeo/module-openai-product-feed-api ACP REST API for ChatGPT Shopping

License

MIT — see LICENSE