The "Upgrade Schema Validator" commit added SKILL.md referencing files that did not exist. Implement them so the skill actually runs: - scripts/validate_schema.py — 5-layer offline validator (L0 coverage, L1 syntax, L2 vocabulary/value-format, L3 rich-result, L4 consistency) with xlsx/csv/jsonl/ json/dir/live-URL adapters. Gate = zero P0; exits 1 on failure. - scripts/schema_rules.json — curated hotel-focused, offline rule set (edit-only extension point). - scripts/make_sample.py + fixtures/sample_schema.csv — deliberately flawed fixture seeding ≥1 defect per layer; used to self-test. - references/ — validation-methodology, defect-taxonomy (25 codes), hotel-type-map. - templates/ — client-qa-report, decision-log. - code/CLAUDE.md — redirect legacy single-URL tool to the new pipeline. Noise control: MISSING_RECOMMENDED aggregated one-line-per-node; unexpected-property checks opt-in via --strict. Generalized client-specific shilla-type-map → hotel-type-map. Self-tested: default P0=5/P1=4/P2=14 FAIL, --strict --no-recommended P2=0, adapters verified. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
4.8 KiB
4.8 KiB
| 1 | url | 언어코드 | PC/MOBILE | page_type | 스키마 |
|---|---|---|---|---|---|
| 2 | https://www.josunhotel.com/en/brand/grand | en | PC | brand-hub | {"@context": "https://schema.org", "@type": "Organization", "@id": "https://www.josunhotel.com/#org", "name": "Josun Hotels & Resorts", "url": "https://www.josunhotel.com/", "logo": "https://www.josunhotel.com/logo.png", "sameAs": ["https://www.instagram.com/josunhotelsandresorts/"]} |
| 3 | https://www.josunhotel.com/ko/grand | ko | PC | hotel | {"@context": "https://schema.org", "@type": "Hotel", name: "그랜드조선",} |
| 4 | https://www.josunhotel.com/ko/grand/rooms | ko | MOBILE | rooms | {"@context": "https://schema.org", "name": "디럭스룸", "url": "https://www.josunhotel.com/ko/grand/rooms"} |
| 5 | https://www.josunhotel.com/ko/palace | ko | PC | hotel | {"@context": "https://example.org", "@type": "Hotel", "name": "조선팰리스", "address": {"@type": "PostalAddress", "streetAddress": "테헤란로 231", "addressLocality": "서울", "addressCountry": "KR"}} |
| 6 | https://www.josunhotel.com/ko/lescape | ko | PC | hotel | {"@context": "https://schema.org", "@type": "Hotel", "name": "레스케이프 호텔", "telephone": "+82-2-317-4000", "description": "조선호텔앤리조트가 운영하는 럭셔리 호텔로, 도심 속에서 품격 있는 휴식을 제공합니다. 최상의 서비스와 시설을 경험하실 수 있습니다."} |
| 7 | https://www.josunhotel.com/ko/grand/dining | ko | PC | restaurant | {"@context": "https://schema.org", "@type": "Restaurant", "name": "예시 레스토랑", "address": {"@type": "PostalAddress", "streetAddress": "수정필요", "addressCountry": "KR"}, "servesCuisine": "Korean"} |
| 8 | https://www.josunhotel.com/ko/westin | ko | PC | hotel | {"@context": "https://schema.org", "@type": "Hotel", "name": "웨스틴 조선 서울", "telephone": "+82-2-771-0500", "address": {"@type": "PostalAddress", "streetAddress": "소공로 106", "addressLocality": "서울", "addressCountry": "KR"}, "description": "조선호텔앤리조트가 운영하는 럭셔리 호텔로, 도심 속에서 품격 있는 휴식을 제공합니다. 최상의 서비스와 시설을 경험하실 수 있습니다."} |
| 9 | https://www.josunhotel.com/en/westin | en | PC | hotel | {"@context": "https://schema.org", "@type": "Hotel", "name": "웨스틴 조선 서울", "telephone": "+82-2-771-9999", "address": {"@type": "PostalAddress", "streetAddress": "소공로 106", "addressLocality": "Seoul", "addressCountry": "KR"}, "description": "조선호텔앤리조트가 운영하는 럭셔리 호텔로, 도심 속에서 품격 있는 휴식을 제공합니다. 최상의 서비스와 시설을 경험하실 수 있습니다."} |
| 10 | https://www.josunhotel.com/ko | ko | PC | home | {"@context": "https://schema.org", "@type": "WebSite", "name": "조선호텔앤리조트", "url": "https://www.josunhotel.com/", "publisher": {"@id": "https://www.josunhotel.com/#missing-org"}} |
| 11 | https://www.josunhotel.com/ko/grand/location | ko | PC | location | {"@context": "https://schema.org", "@type": "Hotel", "name": "그랜드 조선 부산", "address": {"@type": "PostalAddress", "streetAddress": "동백로 60", "addressLocality": "부산", "addressCountry": "KR"}, "geo": {"@type": "GeoCoordinates", "latitude": 129.1603, "longitude": 35.1586}} |
| 12 | https://www.josunhotel.com/ko/offers/spring | ko | PC | offer | {"@context": "https://schema.org", "@type": "Offer", "price": "350000", "priceCurrency": "KRW", "validFrom": "2026년 3월 1일", "url": "https://www.josunhotel.com/ko/offers/spring"} |
| 13 | https://www.josunhotel.com/ko/offers/dining | ko | PC | offer | {"@context": "https://schema.org", "@type": "Offer", "price": "120000", "priceCurrency": "₩", "availability": "https://schema.org/InStock"} |
| 14 | https://www.josunhotel.com/ko/spa | ko | PC | facility | {"@context": "https://schema.org", "@type": "SpaResort", "name": "조선 스파"} |
| 15 | https://www.josunhotel.com/ko/grand/intro | ko | PC | hotel | {"@context": "https://schema.org", "@type": "Hotel", "name": "그랜드 조선 제주", "address": {"@type": "PostalAddress", "streetAddress": "중문관광로 75", "addressLocality": "제주", "addressCountry": "KR"}, "description": "조선호텔앤리조트가 운영하는 럭셔리 호텔로, 도심 속에서 품격 있는 휴식을 제공합니다. 최상의 서비스와 시설을 경험하실 수 있습니다."} |
| 16 | https://www.josunhotel.com/ko/faq?stale=1 | ko | MOBILE | faq | {"@context": "https://schema.org", "@type": "FAQPage", "mainEntity": [{"@type": "Question", "name": "체크인 시간은 언제인가요?", "acceptedAnswer": {"@type": "Answer", "text": "오후 3시부터 체크인 가능합니다."}}]} |