# CLAUDE.md — seo-schema-validator (Claude Code) ## Canonical entry point This skill was upgraded to a **5-layer dataset-QA pipeline**. The authoritative directive and run instructions live in the skill root: - **`../SKILL.md`** — modes, the 5 layers, stage gates, how to run. - **`../scripts/validate_schema.py`** — the validator (run this, not the legacy script below). - **`../scripts/schema_rules.json`** — the offline rule set (edit this to add a type/rule). - **`../references/`** — `validation-methodology.md`, `defect-taxonomy.md`, `hotel-type-map.md`. - **`../templates/`** — `client-qa-report-template.md`, `decision-log.md`. ```bash # Primary use — QA an AUTHORED dataset before the client sees it (Mode A) python ../scripts/validate_schema.py DATASET.xlsx --url-list URLLIST.xlsx --out schema_qa_out # Highest-signal pre-review gate python ../scripts/validate_schema.py DATASET.csv --strict --no-recommended --out qa_strict # Try the bundled flawed fixture first python ../scripts/make_sample.py python ../scripts/validate_schema.py ../fixtures/sample_schema.csv --out demo_out # Post-deploy live audit (Mode B) — feeds seo-comprehensive-audit stage 4 python ../scripts/validate_schema.py --live https://example.com --out live_out ``` Gate rule: **PASS = zero P0.** The process exits 1 when the gate fails, so it stops `&&` chains and CI. Only P0-free entries advance to client review. ## Legacy single-URL tool (kept for quick one-offs) `scripts/schema_validator.py --url ` extracts and validates structured data from one live page (JSON-LD / Microdata / RDFa via extruct). It predates the pipeline and is **not** the gate. For any dataset or client-facing QA, use `validate_schema.py` above. ```bash pip install -r scripts/requirements.txt # extruct, jsonschema, rdflib, lxml, requests python scripts/schema_validator.py --url https://example.com --json ``` ## Notion output (OurDigital SEO Audit Log) When a run is part of an OurDigital/D.intelligence audit, log a summary to the SEO Audit Log database. Per the user-level Notion rule, push **page content** with the `notion-writer` skill; use Notion MCP only for **properties** (Status, Category, etc.). | Field | Value | |-------|-------| | Database ID | `2c8581e5-8a1e-8035-880b-e38cefc2f3ef` | | Category | `Schema/Structured Data` | | Priority | map gate: FAIL→Critical/High, PASS-with-P1→Medium, PASS-clean→Low | | Audit ID | `SCHEMA-YYYYMMDD-NNN` | Report content in Korean; keep technical terms (Schema, JSON-LD, rich result) and URLs/code unchanged.