「花火が見えるホテルは?」にAIが答えられない理由
出典: Phocuswright「Japan Seasonal Travel Demand Report 2025」、Google Search Central Blog「Event Structured Data Impact 2025」
「花火大会が見えるホテルを教えて」「忘年会ができる旅館は?」 ── こうした質問をChatGPTやGeminiに投げると、AIはOTA情報や口コミから回答を組み立てます。しかし、公式サイトにイベント情報がJSON-LDで構造化されていなければ、AIは自施設のイベントを正確に引用できません。
花火大会の観覧プラン、忘年会・新年会の宴会パッケージ、季節のディナーイベント。これらは期間限定だからこそ、OTAに先んじて公式サイトから発信する意味があります。構造化データで記述すれば、AIが「いつ」「いくらで」「何名まで」を正確に回答できるようになります。
この記事では、ホテル・旅館の季節イベントや宴会情報をAIが確実に読める形で構造化する方法を、コピペ可能なJSON-LDコード例付きで解説します。
schema.orgでイベントを表現する方法
イベント情報の構造化には、イベントの性質に応じて適切なschemaタイプを選ぶ必要があります。
| イベント種類 | 推奨schema | 使い分けの基準 |
|---|---|---|
| 季節イベント・観光行事 | Event | 花火大会、祭り、季節ディナー、特別プラン |
| 宴会・会議・セミナー | BusinessEvent | 忘年会、新年会、企業研修、展示会 |
| 結婚式・懇親会 | SocialEvent | ウェディング、パーティー、同窓会 |
| コンサート・ライブ | MusicEvent | 館内ライブ、ジャズナイト、演奏会 |
| 定期開催イベント | EventSeries | 月例ワインディナー、毎週末のライブ |
ホテルで最も使用頻度が高いのはEventとBusinessEventです。季節の観光イベントに合わせた宿泊プランはEvent、法人利用の宴会・会議はBusinessEventで記述します。定期開催のイベントはEventSeriesを親として各回を子Eventとして紐付けます。
Event。参加者が限定される会議・研修・宴会はBusinessEvent。判断に迷う場合はEventを使えばGoogleのリッチリザルトにも対応しやすくなります。
Event schemaの基本実装
季節イベントに連動した宿泊プランをAIに認識させるための基本実装です。花火大会・紅葉ライトアップなど、期間限定イベントに使います。
// 季節イベントの基本構造
{
"@context": "https://schema.org",
"@type": "Event",
"name": "秋の庭園ライトアップ 2026",
"description": "当館の日本庭園を期間限定でライトアップ。紅葉と光の競演をお楽しみいただけます。宿泊者は無料でご覧いただけます",
"startDate": "2026-11-01T17:00:00+09:00",
"endDate": "2026-11-30T21:00:00+09:00",
"eventStatus": "https://schema.org/EventScheduled",
"eventAttendanceMode": "https://schema.org/OfflineEventAttendanceMode",
"location": {
"@type": "Hotel",
"name": "旅館あおば",
"address": {
"@type": "PostalAddress",
"addressLocality": "箱根町",
"addressRegion": "神奈川県",
"addressCountry": "JP"
},
"url": "https://example-ryokan.com"
},
"offers": {
"@type": "Offer",
"name": "紅葉ライトアップ鑑賞付き宿泊プラン",
"price": "28000",
"priceCurrency": "JPY",
"availability": "https://schema.org/InStock",
"validFrom": "2026-09-01",
"url": "https://example-ryokan.com/plan/autumn-lightup/"
},
"image": "https://example-ryokan.com/images/autumn-lightup.jpg",
"organizer": {
"@type": "Hotel",
"name": "旅館あおば",
"url": "https://example-ryokan.com"
}
}実装のポイント
- startDate / endDateはISO 8601形式で書く: タイムゾーン(+09:00)を含めることで、海外からの検索にも正確に対応します
- eventStatusを必ず設定する: 台風で中止や延期になった場合、EventCancelledやEventPostponedに更新することでAIが最新状況を回答できます
- offersにプランを紐付ける: イベント単体ではなく「イベント付き宿泊プラン」として構造化すると、料金を含めた回答が可能になります
- locationにホテル情報を入れる: 開催場所が自施設であることを明示。AIが「近くのホテル」として推薦する根拠になります
季節イベント連動プランの構造化
地域の花火大会や祭りに合わせた宿泊プランは、ホテルにとって最も収益性が高い季節商品です。イベントとプランを紐付けて構造化すると、「花火が見えるホテルはいくら?」のような具体的な質問にAIが回答できます。
// 花火大会連動の宿泊プラン
{
"@context": "https://schema.org",
"@type": "Event",
"name": "熱海海上花火大会 観覧プラン",
"description": "客室またはホテル屋上テラスから熱海海上花火大会を鑑賞できる特別宿泊プラン。花火鑑賞用の浴衣・軽食・ドリンク付き",
"startDate": "2026-07-26T20:20:00+09:00",
"endDate": "2026-07-26T20:45:00+09:00",
"eventStatus": "https://schema.org/EventScheduled",
"eventAttendanceMode": "https://schema.org/OfflineEventAttendanceMode",
"location": {
"@type": "Hotel",
"name": "ホテルサンライズ熱海",
"address": {
"@type": "PostalAddress",
"addressLocality": "熱海市",
"addressRegion": "静岡県",
"addressCountry": "JP"
}
},
"offers": [
{
"@type": "Offer",
"name": "花火鑑賞付き 海側ツイン 1泊2食",
"price": "45000",
"priceCurrency": "JPY",
"availability": "https://schema.org/LimitedAvailability",
"validFrom": "2026-04-01",
"url": "https://example-hotel.com/plan/hanabi-twin/"
},
{
"@type": "Offer",
"name": "屋上テラス鑑賞プラン 1泊朝食付",
"price": "32000",
"priceCurrency": "JPY",
"availability": "https://schema.org/InStock",
"validFrom": "2026-04-01",
"url": "https://example-hotel.com/plan/hanabi-terrace/"
}
],
"performer": {
"@type": "Organization",
"name": "熱海市観光協会"
}
}花火大会の主催者が外部団体の場合、performer(またはorganizer)に主催者を記載し、ホテルはlocationとして位置づけます。宿泊プランはoffersに複数並べ、価格帯ごとに選択肢を示すのが効果的です。
宴会・忘年会・ウェディングの構造化
法人利用の宴会や忘年会は、秋から年末にかけて検索ボリュームが急増します。「忘年会 ホテル 50名」「結婚式二次会 レストラン 30名」のようなクエリに対応するには、収容人数と料金を構造化します。
// 忘年会・宴会プランの構造化
{
"@context": "https://schema.org",
"@type": "BusinessEvent",
"name": "忘年会・新年会プラン 2026-2027",
"description": "和洋折衷コース料理と2時間飲み放題付き。大宴会場(最大120名)と個室宴会場(8〜30名)をご用意。幹事様特典あり",
"startDate": "2026-11-01",
"endDate": "2027-01-31",
"eventStatus": "https://schema.org/EventScheduled",
"eventAttendanceMode": "https://schema.org/OfflineEventAttendanceMode",
"maximumAttendeeCapacity": 120,
"location": {
"@type": "Hotel",
"name": "グランドホテル東京ベイ",
"address": {
"@type": "PostalAddress",
"addressLocality": "浦安市",
"addressRegion": "千葉県",
"addressCountry": "JP"
}
},
"organizer": {
"@type": "Hotel",
"name": "グランドホテル東京ベイ",
"url": "https://example-grandhotel.com"
},
"offers": [
{
"@type": "Offer",
"name": "スタンダードプラン(飲み放題2時間付)",
"price": "8000",
"priceCurrency": "JPY",
"availability": "https://schema.org/InStock",
"eligibleQuantity": {
"@type": "QuantitativeValue",
"minValue": 10,
"maxValue": 120
}
},
{
"@type": "Offer",
"name": "プレミアムプラン(飲み放題3時間+個室)",
"price": "12000",
"priceCurrency": "JPY",
"availability": "https://schema.org/InStock",
"eligibleQuantity": {
"@type": "QuantitativeValue",
"minValue": 8,
"maxValue": 30
}
}
]
}宴会schema実装のポイント
- maximumAttendeeCapacityは最大収容数: 「50名の忘年会ができるホテル」に対してAIが収容可能かどうかを判定できます
- eligibleQuantityで人数帯を明示: プランごとの最小・最大人数を設定すると、AIが規模に合った提案をしやすくなります
- ウェディングはSocialEventを使う: BusinessEventと区別することで「結婚式二次会」「懇親会」の検索に正しく対応できます
- 期間は余裕を持って設定: 忘年会プランは11月から1月末まで。早期予約の検索需要を逃しません
EventSeriesで定期イベントを表現
毎月開催のワインディナーや毎週末のライブ演奏など、繰り返しパターンのあるイベントにはEventSeriesを使います。個々のEventをまとめることで、AIが「定期開催されている」ことを認識します。
// 月例ワインディナーをEventSeriesで表現
{
"@context": "https://schema.org",
"@type": "EventSeries",
"name": "月例ソムリエ厳選ワインディナー",
"description": "毎月第3金曜日開催。ソムリエが厳選したワイン5種と季節のフレンチコースのペアリングディナー。定員20名の限定イベント",
"location": {
"@type": "Hotel",
"name": "ホテルレジデンス青山",
"url": "https://example-hotel.com"
},
"subEvent": [
{
"@type": "Event",
"name": "6月のワインディナー ブルゴーニュ特集",
"startDate": "2026-06-19T18:30:00+09:00",
"endDate": "2026-06-19T21:00:00+09:00",
"eventStatus": "https://schema.org/EventScheduled",
"maximumAttendeeCapacity": 20,
"offers": {
"@type": "Offer",
"price": "18000",
"priceCurrency": "JPY",
"availability": "https://schema.org/InStock"
},
"superEvent": {
"@type": "EventSeries",
"name": "月例ソムリエ厳選ワインディナー"
}
},
{
"@type": "Event",
"name": "7月のワインディナー シャンパーニュ特集",
"startDate": "2026-07-17T18:30:00+09:00",
"endDate": "2026-07-17T21:00:00+09:00",
"eventStatus": "https://schema.org/EventScheduled",
"maximumAttendeeCapacity": 20,
"offers": {
"@type": "Offer",
"price": "18000",
"priceCurrency": "JPY",
"availability": "https://schema.org/InStock"
},
"superEvent": {
"@type": "EventSeries",
"name": "月例ソムリエ厳選ワインディナー"
}
}
]
}EventSeries運用のコツ
- subEventには直近2〜3回分を記述: 過去のイベントは削除し、常に最新の開催日を保持します
- 各subEventにsuperEventを設定: 双方向リンクでAIがシリーズ全体の文脈を把握できます
- 終了したイベントのeventStatusを更新: EventScheduledからEventCompletedに変更することで、情報の鮮度が伝わります
インバウンド対応:英語でのEvent記述
「hotel near fireworks festival in Atami」「traditional Japanese festival accommodation」── 訪日外国人は英語でイベントを検索します。英語版ページには英語のJSON-LDを用意します。
// English version for inbound travelers
{
"@context": "https://schema.org",
"@type": "Event",
"name": "Atami Fireworks Festival Viewing Plan",
"description": "Watch the Atami Fireworks Festival (Hanabi Taikai) from our ocean-view rooms or rooftop terrace. Special accommodation plan includes yukata, snacks, and drinks for the viewing",
"startDate": "2026-07-26T20:20:00+09:00",
"endDate": "2026-07-26T20:45:00+09:00",
"eventStatus": "https://schema.org/EventScheduled",
"eventAttendanceMode": "https://schema.org/OfflineEventAttendanceMode",
"inLanguage": "en",
"location": {
"@type": "Hotel",
"name": "Hotel Sunrise Atami",
"address": {
"@type": "PostalAddress",
"addressLocality": "Atami",
"addressRegion": "Shizuoka",
"addressCountry": "JP"
}
},
"offers": {
"@type": "Offer",
"name": "Fireworks Viewing Ocean Twin - 1 night with breakfast",
"price": "45000",
"priceCurrency": "JPY",
"availability": "https://schema.org/LimitedAvailability"
}
}英語記述のポイント
- ローマ字を併記する: 「Hanabi Taikai」「Matsuri」のように日本語の行事名をローマ字で残す。訪日客は日本語名でも検索する
- inLanguageを設定する: 言語を明示することで、AIが英語圏の利用者に対して適切に引用できます
- 住所は英語表記にする: addressLocalityやaddressRegionを英語化し、海外のAI検索に対応させます
- 料金はJPYで統一: priceCurrencyをJPYにすると、AIが為替換算して回答する際の精度が上がります
FAQ schemaでイベント関連質問に答える
イベントや宴会に関するFAQをschema化しておくと、AIが質問に対して正確な一次情報として引用します。以下はホテルで頻出するイベントFAQ例です。
構造化すべきイベントFAQ 12項目
- 花火大会の日程と時間は?
- 花火が見える部屋はありますか?
- イベント連動プランの料金は?
- 宴会場の最大収容人数は?
- 忘年会・新年会プランの予約はいつから?
- 飲み放題プランの内容と時間は?
- 二次会だけの利用はできますか?
- ウェディング・披露宴に対応していますか?
- 会議室やプロジェクターの貸出はありますか?
- 送迎バスは出ますか?
- 子供向けのイベントはありますか?
- 雨天時のイベント対応は?
これらをFAQPage schemaとして記述し、公式サイトのイベントページとFAQページの両方に埋め込みます。記事冒頭のJSON-LD(<head>内)に5件程度、各ページの内容に合わせたFAQを設定するのが推奨です。
実装の優先順位
イベント構造化は季節カレンダーに合わせて段階的に進めます。直近のイベントから着手し、徐々に範囲を広げてください。
まず構造化すべきイベント
- 年間の主要イベント連動プラン: 花火大会、紅葉ライトアップ、クリスマスディナーなど、集客力のある季節イベント。予約開始の2〜3か月前にJSON-LDを公開する
- 宴会・忘年会プラン: 法人需要が高く単価も大きい。9月にはJSON-LDを準備し、検索需要の立ち上がりに間に合わせる
- 定期開催イベント: 月例ディナーや週末ライブなど。EventSeriesで一度構造化すれば、日程更新だけで運用できる
季節別の実装カレンダー
| 時期 | 構造化すべきイベント | JSON-LD公開タイミング |
|---|---|---|
| 春(3-5月) | 花見プラン、GW特別プラン | 1月までに公開 |
| 夏(6-8月) | 花火大会、夏祭り、ビアガーデン | 4月までに公開 |
| 秋(9-11月) | 紅葉ライトアップ、ハロウィン | 7月までに公開 |
| 冬(12-2月) | 忘年会・新年会、クリスマス、初日の出 | 9月までに公開 |
| 通年 | ウェディング、月例ディナー、ライブ | 随時更新 |
JSON-LDの公開は、検索需要が立ち上がる2〜3か月前が理想です。AIの学習サイクルを考慮すると、早期に公開するほどイベント時期の検索で引用される確率が上がります。
実装後の確認にはGoogle リッチリザルトテストとSchema.org Validatorを使います。エラーが0件であれば、AIも正しく読み取れる状態です。
このコードを公式サイトの <head> タグ内に貼り付けてください
