「露天風呂がある宿」でAIに選ばれない理由
出典: Phocuswright「Japan Travel Search Behavior 2025」、Google Search Central Blog「Structured Data Impact Report 2025」
ChatGPTやGeminiに「箱根で露天風呂がある宿を教えて」と聞いた時、AIは何を根拠に回答を組み立てているのか。口コミ、OTAの施設ページ、公式サイト ── 複数ソースを横断しますが、最も確実に拾えるのが構造化データです。
ところが、ほとんどの温泉旅館・ホテルは「露天風呂あり」「大浴場あり」の情報を人間が読めるHTMLでしか書いていません。AIにとっては長い文章の中から該当箇所を推測するしかなく、取りこぼしや誤認が起きます。
この記事では、温泉・大浴場・サウナなどの浴場情報をAIが確実に読める形で構造化する方法を、コピペ可能なJSON-LDコード例付きで解説します。
schema.orgで温泉を表現する3つの方法
温泉・浴場情報の構造化には、施設の形態によって適切なschemaが異なります。
| 施設形態 | 推奨schema | 使い分けの基準 |
|---|---|---|
| 日帰り温泉あり | DaySpa | 宿泊なしで外部客が利用できる |
| 宿泊者専用大浴場 | Hotel の amenityFeature | 宿泊者以外は利用不可 |
| スパ・エステ併設 | HealthAndBeautyBusiness | 施術メニュー・予約制サービス |
多くの旅館は「宿泊者専用の大浴場」+「日帰り入浴も受付」の複合型です。この場合、Hotel schemaのamenityFeatureに大浴場の基本情報を入れつつ、日帰り温泉をDaySpaとして独立させるのが理想です。
DaySpa schemaの基本実装
日帰り利用が可能な温泉施設には、DaySpaを使います。Hotel schemaとは別エンティティとして記述し、containedInPlaceで親施設に紐付けます。
// 日帰り利用可能な温泉施設
{
"@context": "https://schema.org",
"@type": "DaySpa",
"name": "天然温泉 月の湯",
"description": "ナトリウム-塩化物泉(弱アルカリ性)。源泉かけ流しの露天風呂と内湯、サウナを完備。神経痛・筋肉痛・冷え性に効能あり",
"containedInPlace": {
"@type": "Hotel",
"name": "旅館あおば",
"@id": "https://example-ryokan.com/#hotel"
},
"openingHoursSpecification": [
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": ["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"],
"opens": "06:00",
"closes": "10:00"
},
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": ["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"],
"opens": "15:00",
"closes": "23:00"
}
],
"amenityFeature": [
{ "@type": "LocationFeatureSpecification", "name": "露天風呂", "value": true },
{ "@type": "LocationFeatureSpecification", "name": "内湯", "value": true },
{ "@type": "LocationFeatureSpecification", "name": "サウナ", "value": true },
{ "@type": "LocationFeatureSpecification", "name": "水風呂", "value": true },
{ "@type": "LocationFeatureSpecification", "name": "脱衣所ロッカー", "value": true }
],
"isAccessibleForFree": false,
"currenciesAccepted": "JPY",
"paymentAccepted": "現金, クレジットカード"
}実装のポイント
- descriptionに泉質と効能を書く: schema.orgに「泉質」専用のプロパティはありません。descriptionに「ナトリウム-塩化物泉」「pH 8.2」「源泉温度42.5℃」など具体的に記載します
- openingHoursSpecificationは時間帯ごとに分ける: 朝風呂と夜で2エントリ。清掃時間帯(10:00〜15:00)は記載しないことで「利用不可の時間帯」が暗黙的に伝わります
- containedInPlaceで親施設にリンク: AIが「この温泉はどの宿の中にあるのか」を確実に把握できます
Hotel schema に温泉情報を埋め込む方法
宿泊者専用の大浴場は、DaySpaとして独立させるのではなく、Hotel schemaのamenityFeatureに含めるのが適切です。
// 宿泊者専用の温泉・浴場をHotel schemaに統合
{
"@context": "https://schema.org",
"@type": "Hotel",
"name": "温泉旅館 山水閣",
"@id": "https://example-ryokan.com/#hotel",
"amenityFeature": [
{ "@type": "LocationFeatureSpecification",
"name": "天然温泉大浴場",
"value": true },
{ "@type": "LocationFeatureSpecification",
"name": "露天風呂",
"value": true },
{ "@type": "LocationFeatureSpecification",
"name": "貸切風呂",
"value": true },
{ "@type": "LocationFeatureSpecification",
"name": "サウナ",
"value": true },
{ "@type": "LocationFeatureSpecification",
"name": "岩盤浴",
"value": true },
{ "@type": "LocationFeatureSpecification",
"name": "源泉かけ流し",
"value": true },
{ "@type": "LocationFeatureSpecification",
"name": "無料Wi-Fi",
"value": true },
{ "@type": "LocationFeatureSpecification",
"name": "無料駐車場",
"value": true }
],
"description": "自家源泉の天然温泉(ナトリウム-塩化物・炭酸水素塩泉)を楽しめる全12室の小規模旅館。露天風呂付き客室3室、貸切風呂2か所(檜の湯・石の湯)。泉温43.2℃、pH 7.8",
"checkinTime": "15:00",
"checkoutTime": "11:00"
}amenityFeatureの粒度が引用精度を左右する
「温泉あり」だけでは不十分です。AIが「サウナのある宿」「源泉かけ流しの旅館」「岩盤浴がある温泉」のように、細分化されたクエリに反応するには、浴場の種類ごとに個別のamenityFeatureが必要です。
推奨する浴場関連amenityFeatureの一覧を以下にまとめます。自施設に該当するものをすべて列挙してください。
| カテゴリ | amenityFeature name 例 |
|---|---|
| 浴場タイプ | 天然温泉大浴場 / 露天風呂 / 内湯 / 足湯 |
| 特殊浴場 | 貸切風呂 / 露天風呂付き客室 / 家族風呂 / 混浴 |
| サウナ関連 | サウナ / 水風呂 / ロウリュ / 外気浴スペース |
| 泉質特性 | 源泉かけ流し / 天然温泉 / 温泉加温なし |
| 付帯設備 | 岩盤浴 / エステ / マッサージ / 湯上がりラウンジ |
| バリアフリー | バリアフリー浴場 / 車椅子対応脱衣所 |
貸切風呂の予約導線をOfferで構造化する
「貸切風呂は予約できる?」「いくら?」は頻出する音声検索クエリです。料金・利用時間・予約方法をOffer schemaで明示すれば、AIが直接回答できるようになります。
// 貸切風呂の料金・予約を構造化
{
"@context": "https://schema.org",
"@type": "Offer",
"name": "貸切露天風呂「檜の湯」",
"description": "45分間完全貸切。檜造りの露天風呂で箱根の山並みを望む。脱衣所にベビーベッド完備",
"price": "3300",
"priceCurrency": "JPY",
"priceSpecification": {
"@type": "UnitPriceSpecification",
"price": "3300",
"priceCurrency": "JPY",
"unitText": "45分",
"referenceQuantity": {
"@type": "QuantitativeValue",
"value": "1",
"unitCode": "GRP"
}
},
"availability": "https://schema.org/InStock",
"seller": {
"@type": "Hotel",
"name": "温泉旅館 山水閣",
"@id": "https://example-ryokan.com/#hotel"
},
"potentialAction": {
"@type": "ReserveAction",
"target": {
"@type": "EntryPoint",
"urlTemplate": "https://example-ryokan.com/private-bath/"
},
"result": {
"@type": "Reservation",
"name": "貸切風呂予約"
}
}
}貸切風呂が複数ある場合は、各浴場ごとにOfferを記述します。料金体系が異なる(時間帯・曜日で変動する等)場合は、priceSpecification内で条件を明記してください。
泉質・効能をadditionalPropertyで構造化する
schema.orgには「泉質」や「pH値」の標準プロパティがありません。descriptionに書くだけでもAIは読み取りますが、より確実に構造化するにはadditionalPropertyを使います。
// 泉質・源泉情報を独自プロパティで構造化
{
"@context": "https://schema.org",
"@type": "DaySpa",
"name": "天然温泉 月の湯",
"additionalProperty": [
{
"@type": "PropertyValue",
"name": "泉質",
"value": "ナトリウム-塩化物・炭酸水素塩泉(弱アルカリ性低張性高温泉)"
},
{
"@type": "PropertyValue",
"name": "pH",
"value": "7.8"
},
{
"@type": "PropertyValue",
"name": "源泉温度",
"value": "43.2℃"
},
{
"@type": "PropertyValue",
"name": "効能",
"value": "神経痛、筋肉痛、関節痛、五十肩、冷え性、疲労回復"
},
{
"@type": "PropertyValue",
"name": "給湯方式",
"value": "源泉かけ流し(加温なし・加水なし)"
}
]
}additionalPropertyはGoogleのリッチリザルトには反映されませんが、ChatGPTやGeminiなどのAI検索は構造化されたPropertyValueを正確に読み取ります。「源泉かけ流しの宿ありますか?」「泉質がアルカリ性の温泉は?」のような具体的なクエリへの回答精度が向上します。
インバウンド対応:英語での温泉schema記述
「hotel with onsen near Hakone」「ryokan with private outdoor bath」── 訪日外国人は英語で温泉を検索します。英語版ページには英語のJSON-LDを用意し、日本語版とhreflangで紐付けます。
// English version for inbound travelers
{
"@context": "https://schema.org",
"@type": "DaySpa",
"name": "Natural Hot Spring 'Tsuki-no-Yu'",
"description": "Sodium chloride spring (mildly alkaline). Open-air rotenburo bath and indoor bath with sauna. Therapeutic for muscle pain, joint stiffness, and poor circulation",
"amenityFeature": [
{ "@type": "LocationFeatureSpecification",
"name": "Open-air bath (Rotenburo)",
"value": true },
{ "@type": "LocationFeatureSpecification",
"name": "Indoor bath",
"value": true },
{ "@type": "LocationFeatureSpecification",
"name": "Private bath (Kashikiri-buro)",
"value": true },
{ "@type": "LocationFeatureSpecification",
"name": "Sauna",
"value": true },
{ "@type": "LocationFeatureSpecification",
"name": "Tattoo-friendly",
"value": true }
],
"availableLanguage": ["ja", "en"]
}英語記述のポイント
- ローマ字表記を併記: 「Open-air bath (Rotenburo)」のように英訳+ローマ字。外国人旅行者は「rotenburo」「onsen」で検索する
- Tattoo-friendlyの明記: 訪日客にとって最重要の確認事項。amenityFeatureとして構造化すると「tattoo-friendly onsen near Tokyo」で拾われる
- availableLanguageを追加: スタッフの対応言語を示す。多言語対応の手厚さがAI推薦の判断材料になる
FAQ schemaで温泉に関する質問を先回りする
温泉・浴場に関するFAQをschema化しておくと、AIが質問に対して正確な一次情報として引用します。以下は温泉旅館で頻出するFAQ例です。
構造化すべき温泉FAQ 15項目
- 大浴場の利用時間は?
- 露天風呂はありますか?
- 貸切風呂の予約方法と料金は?
- タトゥー・刺青があっても入浴できますか?
- 日帰り入浴はできますか?料金は?
- 泉質は何ですか?
- 子供は何歳から大浴場を利用できますか?
- シャンプー・タオルは備え付けですか?
- サウナはありますか?
- 温泉は天然温泉ですか?
- 源泉かけ流しですか?
- 露天風呂付き客室はありますか?
- 車椅子でも利用できる浴場はありますか?
- 温泉の男女入れ替え時間は?
- 温泉に入れない持病や条件はありますか?
これらをFAQPage schemaとして記述し、公式サイトのFAQページと温泉紹介ページの両方に埋め込みます。記事冒頭のJSON-LD(<head>内)に5件程度、各ページの内容に合わせたFAQを設定するのが推奨です。
実装の優先順位
すべてを一度に実装する必要はありません。効果が出やすい順に段階的に進めます。
- Week 1: Hotel schemaのamenityFeature追加 — 既存のHotel schemaに浴場関連のamenityFeatureを追加するだけ。最小工数で最大効果
- Week 2: DaySpa schemaの新設 — 日帰り温泉がある施設のみ。containedInPlaceでHotelに紐付け
- Week 3: FAQ schemaの温泉版 — 上記15項目から自施設に該当する8〜10件を選んで実装
- Month 2: 貸切風呂のOffer schema — 料金・予約導線を構造化
- Month 2: additionalPropertyで泉質情報 — 温泉分析書のデータを構造化
- Month 3: 英語版JSON-LDの作成 — インバウンド対応。英語ページがある施設から
Week 1のamenityFeature追加は、既存のJSON-LDに数行足すだけで完了します。CMS管理画面から編集できる場合は30分で実装可能です。コード編集が必要な場合はWeb制作会社に依頼してください。
実装後の確認にはGoogle リッチリザルトテストとSchema.org Validatorを使います。エラーが0件であれば、AIも正しく読み取れる状態です。
このコードを公式サイトの <head> タグ内に貼り付けてください
