「禁煙ツインはある?」にAIが答えられない

74%
客室タイプ指定を含むホテル検索の割合
89%
客室情報が構造化されていない施設サイト
3.1倍
客室構造化データ実装後のAI引用率向上

出典: Phocuswright「Japan Travel Search Behavior 2025」、Google Search Central Blog「Structured Data Impact Report 2025」

ChatGPTやGeminiに「京都で禁煙ツインの部屋がある旅館を教えて」と聞いた時、AIが正確に答えるには、客室タイプ・広さ・ベッド構成・設備の情報が機械的に読める形で存在する必要があります。

OTAのデータベースには客室情報が構造化されていますが、あくまでOTAの情報として引用されます。公式サイトに構造化データがあれば、AI検索が一次情報として直接引用し、公式サイトへの誘導が期待できます。

この記事では、客室タイプ・料金・ベッド・設備をJSON-LDで構造化する方法を、コピペ可能なコード例付きで解説します。記事の後半には、入力するだけでコードを自動作成できるツールもあります。

はじめての方へ: 構造化データの基本(施設全体の情報・予約導線の書き方)は基本ガイドをご覧ください。本記事は基本実装が済んだ施設向けに、客室タイプごとの情報をさらに詳しく構造化する方法を解説します。

HotelRoom / Suite schemaの基本構造

schema.orgでは客室を表すスキーマとしてHotelRoomSuiteが用意されています。

客室タイプ推奨schema使い分けの基準
一般客室(シングル・ツイン・ダブル等)HotelRoom標準的な客室はすべてこれ
スイートルームSuite居室とベッドルームが分かれた客室
和室・和洋室HotelRoomnameとdescriptionで和室であることを明示
特別室・離れSuite独立した建物や特別仕様の客室

各客室タイプはHotel schemaのcontainsPlaceで紐付けます。AIが「この宿にはどんな部屋があるか」を一覧で把握できる構造です。

HotelRoomの基本実装

もっとも標準的な客室タイプの記述例です。ベッド情報、広さ、定員、設備をひとつのオブジェクトにまとめます。

// 洋室ツインルームの構造化データ { "@context": "https://schema.org", "@type": "HotelRoom", "name": "デラックスツイン(禁煙)", "description": "36㎡の禁煙ツインルーム。高層階からの街並みビュー。シモンズ社製ベッド2台、レインシャワー・独立バスタブ完備", "bed": { "@type": "BedDetails", "typeOfBed": "ツインベッド(シモンズ社製 120cm幅)", "numberOfBeds": 2 }, "floorSize": { "@type": "QuantitativeValue", "value": 36, "unitCode": "MTK" }, "occupancy": { "@type": "QuantitativeValue", "maxValue": 3, "unitText": "名" }, "amenityFeature": [ { "@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 } ], "offers": { "@type": "Offer", "price": "18000", "priceCurrency": "JPY", "priceSpecification": { "@type": "UnitPriceSpecification", "price": "18000", "priceCurrency": "JPY", "unitText": "1泊1室(税込)" }, "availability": "https://schema.org/InStock", "validFrom": "2026-04-01", "validThrough": "2026-09-30" }, "containedInPlace": { "@type": "Hotel", "name": "ホテルビジネスブレーン京都", "@id": "https://example-hotel.com/#hotel" } }

実装のポイント

和室・和洋室の構造化

和室の場合、ベッド情報の代わりに布団の枚数と畳数を記述します。floorSizeは平方メートルで記載し、畳数はadditionalPropertyで補足するのが推奨です。

// 和室客室の構造化データ { "@context": "https://schema.org", "@type": "HotelRoom", "name": "和室10畳(庭園ビュー)", "description": "純和風の10畳間。庭園に面した広縁付き。布団は最大4組敷けます。お茶セット・冷蔵庫完備", "bed": { "@type": "BedDetails", "typeOfBed": "布団", "numberOfBeds": 4 }, "floorSize": { "@type": "QuantitativeValue", "value": 17, "unitCode": "MTK" }, "additionalProperty": [ { "@type": "PropertyValue", "name": "畳数", "value": "10畳" }, { "@type": "PropertyValue", "name": "客室タイプ", "value": "和室" }, { "@type": "PropertyValue", "name": "眺望", "value": "庭園ビュー" } ], "occupancy": { "@type": "QuantitativeValue", "maxValue": 4, "unitText": "名" }, "amenityFeature": [ { "@type": "LocationFeatureSpecification", "name": "禁煙", "value": true }, { "@type": "LocationFeatureSpecification", "name": "広縁", "value": true }, { "@type": "LocationFeatureSpecification", "name": "無料Wi-Fi", "value": true } ] }

和室特有の記述ポイント

Hotel schemaとの紐付け(containsPlace)

客室タイプごとのJSON-LDを作成したら、Hotel schemaのcontainsPlaceですべての客室を紐付けます。AIが「この宿にはどんな部屋がありますか?」に一覧で回答できるようになります。

// Hotel schema に客室タイプを紐付け { "@context": "https://schema.org", "@type": "Hotel", "name": "旅館あおば", "@id": "https://example-ryokan.com/#hotel", "containsPlace": [ { "@type": "HotelRoom", "name": "和室10畳(庭園ビュー)", "occupancy": { "@type": "QuantitativeValue", "maxValue": 4 } }, { "@type": "HotelRoom", "name": "和洋室デラックス", "occupancy": { "@type": "QuantitativeValue", "maxValue": 5 } }, { "@type": "Suite", "name": "特別室「月見亭」(露天風呂付き)", "occupancy": { "@type": "QuantitativeValue", "maxValue": 2 } } ], "numberOfRooms": 24, "checkinTime": "15:00", "checkoutTime": "11:00" }

containsPlaceには概要だけを入れ、各客室の詳細(設備・料金・ベッド情報)は個別のJSON-LDで記述します。1つのページに複数のJSON-LDスクリプトタグを配置して問題ありません。

客室の季節料金をOffer schemaで表現する

「8月の料金は?」「平日はいくら?」── 料金の質問は客室検索の核心です。季節・曜日で変動する料金をOfferで構造化する方法を解説します。

// 季節料金を複数Offerで表現 { "@context": "https://schema.org", "@type": "HotelRoom", "name": "デラックスツイン(禁煙)", "offers": [ { "@type": "Offer", "name": "通常期料金", "price": "18000", "priceCurrency": "JPY", "priceSpecification": { "@type": "UnitPriceSpecification", "price": "18000", "priceCurrency": "JPY", "unitText": "1泊1室(税込)" }, "validFrom": "2026-04-01", "validThrough": "2026-07-17" }, { "@type": "Offer", "name": "繁忙期料金(夏季)", "price": "28000", "priceCurrency": "JPY", "priceSpecification": { "@type": "UnitPriceSpecification", "price": "28000", "priceCurrency": "JPY", "unitText": "1泊1室(税込)" }, "validFrom": "2026-07-18", "validThrough": "2026-08-31" } ], "potentialAction": { "@type": "ReserveAction", "target": { "@type": "EntryPoint", "urlTemplate": "https://example-hotel.com/rooms/deluxe-twin/" }, "result": { "@type": "Reservation", "name": "宿泊予約" } } }

料金記述のベストプラクティス

客室設備のamenityFeature一覧

客室設備はamenityFeatureに個別で列挙します。以下は構造化しておくとAI引用に効果が高い項目の一覧です。

カテゴリamenityFeature name 例
基本設備無料Wi-Fi / エアコン / 冷蔵庫 / セーフティボックス / テレビ
バス・トイレバスタブ / シャワーブース / レインシャワー / ウォシュレット / 独立洗面台
寝具低反発マットレス / シモンズベッド / 羽毛布団 / 枕メニュー
眺望オーシャンビュー / 庭園ビュー / マウンテンビュー / シティビュー
喫煙禁煙 / 喫煙可 / 喫煙ブースあり
バリアフリー車椅子対応 / バリアフリー浴室 / 手すり付き
和室設備広縁 / 掘りごたつ / 床の間 / 障子
特別設備露天風呂付き / ミニキッチン / テラス / バルコニー

自施設の客室に該当する項目をすべてamenityFeatureとして列挙してください。「露天風呂付き客室」「バリアフリー対応の部屋」のような具体的なクエリに対して、AIが正確にマッチングできるようになります。

御施設の客室情報はAIに正しく伝わっていますか?

AI検索での客室情報の引用状況を無料診断します

無料診断を申し込む

FAQ schemaで客室の質問を先回りする

客室に関するFAQを構造化しておくと、AIが宿泊検討者の質問に公式情報として回答します。以下は旅館・ホテルで頻出するFAQ例です。

構造化すべき客室FAQ 15項目

  1. 客室タイプの種類は?
  2. 禁煙ルームはありますか?
  3. 和室はありますか?何畳ですか?
  4. 露天風呂付き客室はありますか?
  5. 部屋の広さは何平米ですか?
  6. ベッドのサイズは?メーカーは?
  7. 定員は何名ですか?添い寝は可能ですか?
  8. バリアフリー対応の客室はありますか?
  9. 部屋から海(山・街並み)は見えますか?
  10. 客室にWi-Fiはありますか?
  11. 部屋にお風呂(バスタブ)はありますか?
  12. コネクティングルームはありますか?
  13. ペットと泊まれる部屋はありますか?
  14. 冷蔵庫・電子レンジはありますか?
  15. チェックイン・チェックアウトの時間は?

これらをFAQPage schemaで記述し、公式サイトの客室紹介ページに埋め込みます。すべてを1つのFAQPageにまとめる必要はなく、客室タイプ別のページにそれぞれ関連するFAQを5件程度設定するのが効果的です。

実装の優先順位

客室の構造化データもすべてを一度に実装する必要はありません。効果が出やすい順に進めましょう。

  1. Week 1: 代表客室タイプのHotelRoom schema作成 — 最も予約の多い2〜3タイプだけ。name・bed・floorSize・amenityFeatureが最低限
  2. Week 2: Hotel schemaのcontainsPlaceに客室を追加 — 既存のHotel schemaに全客室タイプの一覧を紐付け
  3. Week 3: Offer schemaで料金を追加 — 通常期の料金だけでOK。季節料金は後から追加
  4. Month 2: 全客室タイプの詳細を完成 — 和室・スイート含む全タイプの個別JSON-LDを作成
  5. Month 2: FAQ schemaで客室質問に対応 — 上記15項目から自施設に該当する8〜10件を実装
  6. Month 3: 季節料金の複数Offer化 — 繁忙期・閑散期の料金を分けて記述

Week 1の作業は、既存の客室紹介ページの情報をJSON-LDに変換するだけです。新たに情報を作る必要はなく、すでに掲載されている内容を構造化するだけで効果が出ます。

実装後の確認にはGoogle リッチリザルトテストSchema.org Validatorを使います。エラーが0件であれば、AIも正しく読み取れる状態です。
御施設の構造化データをかんたん作成
1客室情報を入力 2コードを自動作成 3コピーして貼るだけ
専門知識は不要です。下のフォームに御施設の客室情報を入力してください。複数の客室タイプを追加できます。
1. 施設情報
2. 客室タイプ
客室タイプ 1
生成されたJSON-LD

このコードを公式サイトの <head> タグ内に貼り付けてください