<b>SOP: generate schema from the same record that renders the page</b>
Hand-written JSON-LD drifts from visible content at scale and triggers "structured data does not match" penalties. Bind schema to the source.
The binding rules:
☐ Step 1 — One serializer per entity type. The <code>Product</code> page and its <code>Product</code> schema read the same record object. Gate: no field appears in JSON-LD that isn't on the page.
☐ Step 2 — Null-safe by construction. A missing <code>price</code> omits the <code>offers</code> node entirely. Gate: never emit <code>"price": null</code> or a placeholder.
☐ Step 3 — No invented review counts or ratings. Gate: <code>aggregateRating</code> renders only when real review data exists for that record.
☐ Step 4 — Validate in CI. Run the structured-data test on 20 sampled records per template. Gate: fail the build on any error, not warning-and-ship.
☐ Step 5 — Type honesty. A list page is <code>ItemList</code> or <code>CollectionPage</code>, not <code>Article</code>. Gate: type must match page intent.
Guardrail: a monthly diff comparing visible fields to schema fields flags drift before Google does.
Ship gate: don't publish until all boxes are checked.
Scale Engine SOP
@ScaleEngineSOP
<b>SOP: generate schema from the same record that renders the page</b>
Этот пост опубликован в Telegram-канале Scale Engine SOP. Подписаться можно по ссылке: @ScaleEngineSOP.