Files
Andrew Yim 4f48ba3c59 feat(seo-schema-validator): back the upgraded SKILL.md with a working 5-layer pipeline
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>
2026-05-27 23:48:51 +09:00

4.8 KiB

1url언어코드PC/MOBILEpage_type스키마
2https://www.josunhotel.com/en/brand/grandenPCbrand-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/"]}
3https://www.josunhotel.com/ko/grandkoPChotel{"@context": "https://schema.org", "@type": "Hotel", name: "그랜드조선",}
4https://www.josunhotel.com/ko/grand/roomskoMOBILErooms{"@context": "https://schema.org", "name": "디럭스룸", "url": "https://www.josunhotel.com/ko/grand/rooms"}
5https://www.josunhotel.com/ko/palacekoPChotel{"@context": "https://example.org", "@type": "Hotel", "name": "조선팰리스", "address": {"@type": "PostalAddress", "streetAddress": "테헤란로 231", "addressLocality": "서울", "addressCountry": "KR"}}
6https://www.josunhotel.com/ko/lescapekoPChotel{"@context": "https://schema.org", "@type": "Hotel", "name": "레스케이프 호텔", "telephone": "+82-2-317-4000", "description": "조선호텔앤리조트가 운영하는 럭셔리 호텔로, 도심 속에서 품격 있는 휴식을 제공합니다. 최상의 서비스와 시설을 경험하실 수 있습니다."}
7https://www.josunhotel.com/ko/grand/diningkoPCrestaurant{"@context": "https://schema.org", "@type": "Restaurant", "name": "예시 레스토랑", "address": {"@type": "PostalAddress", "streetAddress": "수정필요", "addressCountry": "KR"}, "servesCuisine": "Korean"}
8https://www.josunhotel.com/ko/westinkoPChotel{"@context": "https://schema.org", "@type": "Hotel", "name": "웨스틴 조선 서울", "telephone": "+82-2-771-0500", "address": {"@type": "PostalAddress", "streetAddress": "소공로 106", "addressLocality": "서울", "addressCountry": "KR"}, "description": "조선호텔앤리조트가 운영하는 럭셔리 호텔로, 도심 속에서 품격 있는 휴식을 제공합니다. 최상의 서비스와 시설을 경험하실 수 있습니다."}
9https://www.josunhotel.com/en/westinenPChotel{"@context": "https://schema.org", "@type": "Hotel", "name": "웨스틴 조선 서울", "telephone": "+82-2-771-9999", "address": {"@type": "PostalAddress", "streetAddress": "소공로 106", "addressLocality": "Seoul", "addressCountry": "KR"}, "description": "조선호텔앤리조트가 운영하는 럭셔리 호텔로, 도심 속에서 품격 있는 휴식을 제공합니다. 최상의 서비스와 시설을 경험하실 수 있습니다."}
10https://www.josunhotel.com/kokoPChome{"@context": "https://schema.org", "@type": "WebSite", "name": "조선호텔앤리조트", "url": "https://www.josunhotel.com/", "publisher": {"@id": "https://www.josunhotel.com/#missing-org"}}
11https://www.josunhotel.com/ko/grand/locationkoPClocation{"@context": "https://schema.org", "@type": "Hotel", "name": "그랜드 조선 부산", "address": {"@type": "PostalAddress", "streetAddress": "동백로 60", "addressLocality": "부산", "addressCountry": "KR"}, "geo": {"@type": "GeoCoordinates", "latitude": 129.1603, "longitude": 35.1586}}
12https://www.josunhotel.com/ko/offers/springkoPCoffer{"@context": "https://schema.org", "@type": "Offer", "price": "350000", "priceCurrency": "KRW", "validFrom": "2026년 3월 1일", "url": "https://www.josunhotel.com/ko/offers/spring"}
13https://www.josunhotel.com/ko/offers/diningkoPCoffer{"@context": "https://schema.org", "@type": "Offer", "price": "120000", "priceCurrency": "₩", "availability": "https://schema.org/InStock"}
14https://www.josunhotel.com/ko/spakoPCfacility{"@context": "https://schema.org", "@type": "SpaResort", "name": "조선 스파"}
15https://www.josunhotel.com/ko/grand/introkoPChotel{"@context": "https://schema.org", "@type": "Hotel", "name": "그랜드 조선 제주", "address": {"@type": "PostalAddress", "streetAddress": "중문관광로 75", "addressLocality": "제주", "addressCountry": "KR"}, "description": "조선호텔앤리조트가 운영하는 럭셔리 호텔로, 도심 속에서 품격 있는 휴식을 제공합니다. 최상의 서비스와 시설을 경험하실 수 있습니다."}
16https://www.josunhotel.com/ko/faq?stale=1koMOBILEfaq{"@context": "https://schema.org", "@type": "FAQPage", "mainEntity": [{"@type": "Question", "name": "체크인 시간은 언제인가요?", "acceptedAnswer": {"@type": "Answer", "text": "오후 3시부터 체크인 가능합니다."}}]}