Unify the two schema-generation scenarios into a single slot-17 skill, both feeding one claims register -> build -> validate(16) pipeline: - Mode 1 (existing site): NEW scripts/extract_site_claims.py turns URLs / local HTML / a directory into a claims register. Existing JSON-LD -> CONFIRMED; title/OpenGraph -> PENDING (never auto-shipped). + site-extraction-methodology.md and bundled fixtures/site/ demo pages. - Mode 2 (not-yet-published site): land the source-to-schema engine (build_schema_drafts.py, type_templates.json, claims/source registers, 3 refs, sample_claims.csv) from the Desktop builder. - Rewrite SKILL.md (v2.0) around the two-mode framing; the claims register is the shared pivot. Only CONFIRMED, non-conflicting claims become schema; unfilled template slots are pruned, never emitted as placeholders. - Retire the old template-fill generator (code/ + desktop/); update root CLAUDE.md. Self-tested both chains end-to-end: Mode 2 sample -> build -> validate PASS (P0=0); Mode 1 fixtures -> extract -> build -> validate PASS (P0=0), JSON-LD round-trips with nested address intact. Fixed two adapter bugs (nested node promotion; relative-path URI). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
3.6 KiB
3.6 KiB
출처 권위 위계 · 출처추적(Provenance) · 충돌 해소
미발행 사이트 스키마 저작의 성패는 "사실을 스키마로 굳히기 전에 단일 확정값을 만들 수 있는가"에 달려 있다. 그 판단 규칙을 명문화한다.
1. 출처 권위 위계 (authority rank)
값이 충돌할 때 상위 권위 출처가 이긴다. 클레임 레지스터의 authority 열에 1~5로 기록한다.
| 순위 | 출처 유형 | 신뢰 대상(어떤 사실에 권위) |
|---|---|---|
| 1 | 기업공시(DART), 사업자등록 정보 | 법인명·설립일·본사주소·대표자 (법적 사실) |
| 1 | 공식 홈페이지/IR, 프레스킷 | 브랜드 표기·연락처·URL·로고 (공식 표기) |
| 2 | 지속가능경영보고서, 사보, 공식 발간물 | 서사·정책·시설 스펙 |
| 2 | Wikidata, 위키백과 | 엔티티 식별자(Q-ID)·sameAs·국제 표기 |
| 3 | 주요 미디어 기사 | 사건·인용·맥락 (교차검증용) |
| 4 | 인물정보/집계 사이트, 소셜 | 보조·후보값 (단독 근거 불가) |
규칙
- 법적 사실(법인명/설립일/주소)은 순위 1(공시) 우선.
- 공식 표기(브랜드명/전화/URL)는 순위 1(공식 채널) 우선.
- 국제 식별/연결(sameAs, 외국어 표기)은 Wikidata 우선.
- 순위 4 단독으로는 CONFIRMED 불가 → 상위 출처로 교차검증 필수.
2. 출처추적(provenance)을 남기는 이유
발행된 페이지 기반 작업은 "그 페이지가 근거"라는 자명한 출처가 있다. 미발행 작업은 그렇지 않으므로 모든 클레임에 출처를 명시해야 한다.
source_ids— 소스 레지스터의 출처 ID(파이프로 복수). 예:S-DART|S-OFF- 효용:
- 충돌 시 권위 비교의 근거가 된다.
- 럭셔리 브랜드 특성상 사실 오류는 PR/법적 리스크 — 근거 추적이 방어선.
- 런칭 후 사실 변경 시 어느 클레임을 갱신할지 즉시 특정 가능.
3. 충돌 해소 절차
값 충돌 발견
│
├─ 권위 순위가 다른가? ──예──▶ 상위 출처 채택, 하위는 note에 기록, status=CONFIRMED
│
└─ 동순위 충돌인가?
├─ 최신성(retrieved_date) 우선 적용 가능? ──예──▶ 최신 채택
└─ 판단 불가 ──▶ conflict=Y 유지, status=PENDING
→ 빌더가 자동 제외하고 build_report에 보고
→ 고객/이해관계자 질의로 확정 (최소 단위 질문)
원칙: 충돌이 미해소면 스키마에 넣지 않는다. 모순된 사실로 만든 스키마는 NAP 불일치·KG 혼선으로 직결된다. 비우는 편이 틀리는 것보다 낫다.
4. 엔티티 정합(reconciliation) — 동명 함정
- 모든 핵심 엔티티는 Wikidata Q-ID로 못박는다(예: 호텔 법인 vs 동명 역사·지명).
sameAs에는 검증된 식별 URL만: Wikidata, 위키백과, 공식 소셜.- 미디어 기사 URL은 sameAs가 아님(엔티티 식별자가 아니라 언급).
- Knowledge Panel이 이미 있으면 그 표기를 공식 표기와 대조해 일치시킨다.
5. CONFIRMED 승격 체크리스트
- 값이 정규화됨(전화 E.164 / 날짜 ISO 8601 / 언어 BCP-47 / 국가 ISO alpha-2)
source_ids1개 이상, 핵심 사실은 권위 순위 1~2- 동일 속성 충돌 없음(
conflict비어 있음) - 엔티티는
sameAs/Q-ID로 식별 정합 완료 - 위 충족 시에만
status=CONFIRMED→ 빌더가 스키마로 채택.