東京の高級ホテル4社のJSON-LDを解析したら、構造化データの「実装格差」が見えてきた
TL;DR
- 東京の高級ホテル4社の公式サイトをスキャンし、構造化データ(JSON-LD)の実装状況を4軸100点満点で評価
- 全社JSON-LDは設置済みだが、スキーマ型の網羅性が全社で致命的に不足(推奨10種中、最大1種のみ実装)
- 最高級ホテルが50点、カジュアルホテルが62点というブランド力と構造化データ整備度の逆転現象
- ホテル業界に限らず、生成AI時代のWebサイトには「AIに読ませる設計」が必要
- 実装すべきJSON-LDのコード例を掲載
はじめに
生成AI(ChatGPT、Perplexity、Gemini等)がWebサイトの情報を回答に利用する際、大きな手がかりとなるのがJSON-LD形式の構造化データです。
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Hotel",
"name": "サンプルホテル東京",
"address": { ... }
}
</script>
Googleが公式に推奨するこの形式は、検索エンジンのリッチリザルト表示だけでなく、生成AIがエンティティ情報を正確に把握するための重要なデータソースになっています。
今回、筆者が開発したAI Visibility Indexを使い、東京の高級ホテル4社のJSON-LD実装状況を技術的に分析しました。
評価手法
スキャン対象
各ホテルの公式サイトのトップページを対象に、以下を自動取得・解析しています。
- HTMLの
<meta>タグ群(noindex, description, canonical, OGP) -
<script type="application/ld+json">ブロック - JSON-LD内の
@typeフィールド(スキーマ型) - JSON-LD内の実データフィールド数と内容
スコアリング(4軸・100点満点)
| 軸 | 満点 | 評価内容 |
|---|---|---|
| 基本メタ情報 | 30 | noindex有無、meta description、canonical、OGP |
| JSON-LD存在 | 20 | JSON-LDブロックの有無と数 |
| 業界スキーマ型 | 30 | Schema.orgの業界推奨型の実装数 |
| フィールド充実度 | 20 | JSON-LD内の実データフィールド数 |
ホテル業界で推奨されるスキーマ型は以下の10種です。
Hotel, HotelRoom, LodgingBusiness, BedAndBreakfast,
Motel, Resort, Offer, AggregateOffer,
AggregateRating, Review
結果
総合スコア
| 順位 | ホテル | 総合 | メタ | JSON-LD | スキーマ型 | フィールド |
|---|---|---|---|---|---|---|
| 1 | ホテルA | 69 | 30/30 | 20/20 | 5/30 | 14/20 |
| 2 | ホテルB | 63 | 30/30 | 20/20 | 5/30 | 8/20 |
| 3 | ホテルC | 62 | 23/30 | 20/20 | 5/30 | 14/20 |
| 4 | ホテルD | 50 | 30/30 | 20/20 | 0/30 | 0/20 |
業界平均: 35点(全社が上回り)
※ホテル名は匿名化しています。
発見1: JSON-LDは「ある」が「中身」に差がある
4社すべてがJSON-LDを設置済み(20/20点)。しかし、中身を見ると大きな差があります。
ホテルC(62点)のJSON-LD — フィールドが充実
{
"@context": "https://schema.org",
"@type": "Hotel",
"name": "ホテル名",
"address": { "@type": "PostalAddress", "..." },
"telephone": "03-XXXX-XXXX",
"checkinTime": "15:00",
"checkoutTime": "11:00",
"numberOfRooms": 79,
"petsAllowed": false,
"smokingAllowed": false,
"amenityFeature": [ ... ],
"geo": { "@type": "GeoCoordinates", "..." },
"image": "https://...",
"description": "...",
"brand": { "@type": "Brand", "..." },
"parentOrganization": { "@type": "Organization", "..." }
}
→ 20フィールドが充填。AIが施設の詳細を把握可能。
ホテルD(50点)のJSON-LD — ほぼ空
{
"@context": "https://schema.org",
"@graph": [ ... ]
}
→ @contextと@graphのみ。@typeすら明示されておらず、AIがこのサイトをホテルとして認識できない可能性がある。
発見2: スキーマ型の多様性が全社で不足
ホテル業界で推奨される10種のスキーマ型に対する実装状況:
AggregateOffer — 全社未実装
AggregateRating — 全社未実装
BedAndBreakfast — 全社未実装
Hotel — 3社実装 / 1社未実装
HotelRoom — 全社未実装
LodgingBusiness — 全社未実装
Motel — 全社未実装(対象外のため妥当)
Offer — 全社未実装
Resort — 全社未実装
Review — 全社未実装
Hotel型以外のスキーマ型を実装しているホテルは0社でした。
これは技術的には大きな機会損失です。例えばHotelRoom型を実装すれば、AIは客室タイプごとの詳細情報を把握できます。AggregateRatingがあれば口コミ評価を回答に反映できます。
発見3: canonicalタグの見落とし
4社中1社でcanonicalタグが未設定でした。
<!-- 未設定の状態 -->
<!-- canonicalタグなし → 重複URLがインデックスされるリスク -->
<!-- 正しい設定 -->
<link rel="canonical" href="https://example.com/hotel-page" />
www有無、http/https、パラメータ付きURLなど、同一コンテンツが複数URLで存在すると、AIが「正式なページ」を判断できず、情報の一貫性が損なわれます。
実装ガイド: ホテルサイトの理想的なJSON-LD
以下は、スコア80点以上(Excellent評価)を目指すための実装例です。
ベース: Hotel型 + 詳細フィールド
{
"@context": "https://schema.org",
"@type": "Hotel",
"name": "サンプルホテル東京",
"description": "東京都心に位置するラグジュアリーホテル。全200室。",
"url": "https://www.sample-hotel-tokyo.jp/",
"logo": "https://www.sample-hotel-tokyo.jp/logo.png",
"image": "https://www.sample-hotel-tokyo.jp/exterior.jpg",
"telephone": "+81-3-1234-5678",
"address": {
"@type": "PostalAddress",
"streetAddress": "千代田区丸の内1-1-1",
"addressLocality": "東京都",
"postalCode": "100-0005",
"addressCountry": "JP"
},
"geo": {
"@type": "GeoCoordinates",
"latitude": 35.6812,
"longitude": 139.7671
},
"checkinTime": "15:00",
"checkoutTime": "11:00",
"numberOfRooms": 200,
"starRating": {
"@type": "Rating",
"ratingValue": "5"
},
"priceRange": "¥30,000〜¥150,000",
"amenityFeature": [
{ "@type": "LocationFeatureSpecification", "name": "無料Wi-Fi", "value": true },
{ "@type": "LocationFeatureSpecification", "name": "フィットネスセンター", "value": true },
{ "@type": "LocationFeatureSpecification", "name": "スパ", "value": true },
{ "@type": "LocationFeatureSpecification", "name": "屋内プール", "value": true }
],
"availableLanguage": ["ja", "en", "zh"],
"petsAllowed": false,
"smokingAllowed": false
}
追加: HotelRoom型(客室情報)
{
"@context": "https://schema.org",
"@type": "HotelRoom",
"name": "デラックスツイン",
"description": "45㎡の広々とした客室。東京タワービュー。",
"bed": {
"@type": "BedDetails",
"numberOfBeds": 2,
"typeOfBed": "シングルベッド"
},
"occupancy": {
"@type": "QuantitativeValue",
"maxValue": 3
},
"offers": {
"@type": "Offer",
"priceCurrency": "JPY",
"price": "45000",
"availability": "https://schema.org/InStock",
"validFrom": "2026-04-01"
}
}
追加: AggregateRating型(口コミ評価)
{
"@context": "https://schema.org",
"@type": "Hotel",
"name": "サンプルホテル東京",
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.6",
"bestRating": "5",
"ratingCount": "1284",
"reviewCount": "856"
}
}
検証方法
実装後は以下のツールで検証できます。
Googleリッチリザルトテスト
https://search.google.com/test/rich-results
Schema.orgバリデータ
https://validator.schema.org/
AI Visibility Index(筆者開発)
https://ai-visibility-index.streamlit.app/batch_scan
考察: 生成AI時代のWebサイト設計
今回の分析から見えてきたのは、従来のSEO対策と「AIに読ませる設計」は異なるスキルセットだということです。
meta descriptionやOGPといった従来のSEO基盤は、高級ホテルであれば当然のように整備されています(4社中3社が満点)。しかし、生成AIが必要とする構造化された実データの充実度には大きなばらつきがあります。
これは「AIO(AI Optimization)」とも呼ばれる新しい最適化領域であり、今後のWeb制作において標準的な要件になると考えています。
ホテル業界に限らず、以下の業界でも同様の課題があると推測されます。
- 飲食業: Restaurant, Menu, MenuItem型の不足
- EC: Product, Offer, AggregateRating型の不足
- 医療: MedicalOrganization, Physician型の不足
- 不動産: RealEstateListing, Apartment型の不足
まとめ
| 発見 | 技術的インパクト |
|---|---|
| JSON-LDの有無より「中身」が重要 |
@typeなしのJSON-LDはAIに認識されない |
| スキーマ型は1種では不十分 | HotelRoom, Offer, AggregateRating等の追加で情報量が飛躍 |
| canonicalタグの見落としは盲点 | 重複URLでAIの参照先が分散するリスク |
| ブランド力とAI可視性は無相関 | 技術実装の質がスコアを決める |
参考リンク
- Schema.org - Hotel
- Schema.org - HotelRoom
- Schema.org - LodgingBusiness
- Google構造化データガイド
- AI Visibility Index
※本診断は各企業の公開Webサイトの構造化データを技術的に解析したものであり、企業の優劣を評価するものではありません。ホテル名は匿名化しています。
筆者はAI Visibility Indexの開発者です。診断ツールはこちらから無料でお試しいただけます。
自社サイトのAI可視性スコアを無料で確認する
この記事で解説した項目を、URLを貼るだけで自動診断できます。
現在4月30日まで無料キャンペーン中です。
- 総合スコア・4軸詳細・改善提案(全件)をPDFでお届け
- 申込後30分以内に自動配信
- 通常¥2,980 → 4/30まで¥0