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>
46 lines
1.4 KiB
HTML
46 lines
1.4 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="ko">
|
|
<head>
|
|
<title>조선호텔앤리조트 — 공식 홈페이지</title>
|
|
<meta property="og:site_name" content="조선호텔앤리조트">
|
|
<meta property="og:type" content="website">
|
|
<meta property="og:url" content="https://www.josunhotel.com/">
|
|
<link rel="canonical" href="https://www.josunhotel.com/">
|
|
<!-- Existing JSON-LD on the live page → extracted as CONFIRMED claims -->
|
|
<script type="application/ld+json">
|
|
{
|
|
"@context": "https://schema.org",
|
|
"@graph": [
|
|
{
|
|
"@type": "Organization",
|
|
"@id": "https://www.josunhotel.com/#org",
|
|
"name": "조선호텔앤리조트",
|
|
"url": "https://www.josunhotel.com/",
|
|
"logo": "https://www.josunhotel.com/logo.png",
|
|
"sameAs": [
|
|
"https://www.instagram.com/josunhotelsandresorts/",
|
|
"https://www.wikidata.org/wiki/Q567458"
|
|
]
|
|
},
|
|
{
|
|
"@type": "Hotel",
|
|
"@id": "https://www.josunhotel.com/westin#hotel",
|
|
"name": "웨스틴 조선 서울",
|
|
"url": "https://www.josunhotel.com/westin",
|
|
"telephone": "+82-2-771-0500",
|
|
"priceRange": "$$$$",
|
|
"address": {
|
|
"@type": "PostalAddress",
|
|
"streetAddress": "소공로 106",
|
|
"addressLocality": "서울",
|
|
"addressRegion": "중구",
|
|
"addressCountry": "KR"
|
|
}
|
|
}
|
|
]
|
|
}
|
|
</script>
|
|
</head>
|
|
<body><h1>조선호텔앤리조트</h1></body>
|
|
</html>
|