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/XxXgeoXxX/rich-data

Homepage

Type:magento2-module

pkg:composer/angeo/module-rich-data

Statistics

Installs: 2

Dependents: 0

Suggesters: 1

Stars: 0

Open Issues: 0

1.0.2 2026-04-24 20:02 UTC

This package is auto-updated.

Last update: 2026-04-24 20:03:07 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)
Product schema — AggregateRating WARN PASS (when reviews exist)

Schema types injected

Schema Pages Key fields
Product All product pages name, description, image, sku, offers.price, offers.priceCurrency, offers.availability, 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)
  • Item condition (New/Used/Refurbished)

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