Before publishing you cannot tell whether the content is right: is JSON-LD complete, does FAQ match the page, can AI read the raw-md? Content QA is a pre-publish check: one piece of content, three views compared.
Run it in three steps
1. Open Content QA and choose a type (product / page / collection / article). 2. Enter the page path (e.g. /products/xxx) and click Run. 3. Read the result: PASS / WARN / FAIL, each with a reason and evidence location.
How to read the result
PASS: the three views agree; safe to publish;
WARN: risk exists (e.g. raw-md missing), not blocking;
FAIL: hard error (e.g. missing Product schema); fix before publishing.
We never turn "unmeasured" into "passed": it is explicitly reported.
page/collection/article: page-type Schema (FAQPage/CollectionPage/Article/Organization), not product rules;
missing raw-md → RAWMD_FETCH_UNAVAILABLE (unmeasured, never fake PASS).
1.3 Result model
PASS / WARN / FAIL + reasons[] + evidence (field location / snippet / hash). Repeated runs on the same input should be reproducible (except timestamps/versions).
Chapter 2: Automation and troubleshooting
2.1 API
Single run: POST /api/v1/content-qa/run (type + path)
Batch: content-qa/batches (enumerated by type, queued)
Results stored in content_qa_runs (mode / target_type)
2.2 Common FAILs
Cause
Fix
JSONLD_PRODUCT_REQUIRED
Add Product/Offer or check theme
FAQ count mismatch
page FAQ = raw-md Q = JSON-LD mainEntity
raw-md empty values
check custom.specs / variant data source
full theme HTML as raw-md
raw-md template missing or HTML fallback
2.3 Relation to delivery
Content QA is a pre-gate in the delivery DAG: FAIL blocks publish; WARN needs human confirmation; only PASS goes to approval/publish/readback/rollback.