---
name: seo-schema-generator
description: |
  Generates validation-ready JSON-LD for a site via a claims register — Mode 1 from
  an existing website, Mode 2 from collected sources for a not-yet-published site.
  Triggers: generate schema, create JSON-LD, source-to-schema, pre-launch schema,
  schema from site, claims register, 스키마 생성, 스키마 저작.
---

# SEO Schema Generator

> Desktop reference. The full, runnable specification (scripts, references, templates,
> fixtures, stage gates) is the skill-root `SKILL.md` and its bundled directories — this
> file is the Claude Desktop entry point.

## Purpose

Author JSON-LD for a site whether or not its pages exist yet. Both scenarios route
through one pivot — a **claims register** (provenance-tracked, conflict-resolved facts) —
then generate pruned drafts that hand off to **seo-schema-validator** (generate → validate).

## Two modes, one pipeline

| | Mode 1 — existing site | Mode 2 — collected sources |
|---|---|---|
| Source of truth | the live pages | scattered sources (DART, Wikidata, brochures) |
| Seed the register with | extract from pages | manual research |
| Hard part | extraction & mapping | authority hierarchy + entity reconciliation |

Everything after the claims register (build drafts → prune unfilled slots → validate)
is identical. **Only CONFIRMED, non-conflicting claims become schema;** unfilled template
slots are deleted, never shipped as placeholders.

## MCP Tool Usage

```
mcp__firecrawl__scrape / crawl : Mode 1 — pull existing pages to extract facts
mcp__perplexity__search        : Mode 2 — discover & cross-check authoritative sources
```

## Workflow

1. Lock the entity→type map (scope first).
2. Seed the claims register (Mode 1: extract from pages · Mode 2: research → register).
3. Reconcile to CONFIRMED; clear conflicts.
4. Build drafts from type templates (placeholders pruned).
5. Validate with seo-schema-validator — gate = zero P0.
6. Fix P0, re-validate, then client review against the report (not raw JSON).

## Notes

- Mode 1 inference (title/OpenGraph) is seeded PENDING and never auto-ships; existing
  JSON-LD is seeded CONFIRMED. If a site already has good JSON-LD, audit it with
  seo-schema-validator (Mode B) instead of regenerating.
- Authoritative rich-result eligibility still needs Google's online test on a sample.
