Files
Andrew Yim 1706a820fe feat(seo-schema-generator): merge site-extraction + source-to-schema into one skill
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>
2026-05-28 00:38:40 +09:00

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
  • 효용:
    1. 충돌 시 권위 비교의 근거가 된다.
    2. 럭셔리 브랜드 특성상 사실 오류는 PR/법적 리스크 — 근거 추적이 방어선.
    3. 런칭 후 사실 변경 시 어느 클레임을 갱신할지 즉시 특정 가능.

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_ids 1개 이상, 핵심 사실은 권위 순위 1~2
  • 동일 속성 충돌 없음(conflict 비어 있음)
  • 엔티티는 sameAs/Q-ID로 식별 정합 완료
  • 위 충족 시에만 status=CONFIRMED → 빌더가 스키마로 채택.