Media > AI活用ユースケース > 営業 > ホテルの周辺で開かれるコンサート・学会・スポーツの大会の予定をエージェントが毎週見回り、宿泊の需要が高まりそうな日を料金と販売の担当へ知らせる

ホテルの周辺で開かれるコンサート・学会・スポーツの大会の予定をエージェントが毎週見回り、宿泊の需要が高まりそうな日を料金と販売の担当へ知らせる

実装ステータス:構成例 技術的に実現可能な構成として設計したもの。自社未検証

ホテルの周辺の会場・自治体・主催者が公開している催事の予定を、エージェントが毎週見回ります。新しく出た催事を台帳にそろえ、過去の実績と予約の入り方に照らして、需要が高まりそうな日を料金と販売の担当へ知らせます。

サマリー
生成AI
ChatGPT/Claude/Gemini
連携・自動化
Make/n8n/Power Automate/Python/Zapier
対象業界
その他/不動産/宿泊/飲食
対象部門
営業/経営企画
対象業務
情報検索/集計・分析
主な課題
属人化している/情報が見つからない/期限・対応漏れが起きる
AIで行う処理
エージェント
主な効果
判断支援/属人化解消/工数削減/機会損失防止
導入難易度
★★★☆☆
実装レベル
本格構成
費用感
API連携(中)
人間の確認
条件付き
現在工数
40h/月
AI導入後
12h/月
想定削減
70%
年間削減
336h
モデル条件による試算値です。実在企業の実績ではありません。

01導入前 / 導入後の業務フロー

導入前(Before)
  1. 週に一度、レベニューの担当がブックマークを順に開き、会場の催事の予定表を見る
  2. 前に見たときから増えた催事を探す。増えたかどうかは記憶とメモで判断する
  3. 新しい催事があれば、会場の収容人数、主催者の過去の動員、遠方から来る客の多さを調べる
  4. 開催日の前後の予約の入り方をPMSで見て、すでに埋まり始めているかを確かめる
  5. 需要に響きそうなら、催事のメモ(スプレッドシート)に書き、料金の見直しの候補に入れる
  6. 営業の担当は、学会と企業の催しを別のメモで追い、団体の問い合わせに備える
  7. 月に一度、両方のメモを持ち寄り、翌月以降の料金と販売の方針を話し合う
導入後(After)
  1. 人見回り先の台帳(URL・種類・見る範囲・会場)を整え、利用条件と robots.txt を確かめた先だけを登録する
  2. 自動毎週月曜の朝、ワークフローが動き、台帳の見回り先を順に取りに行く
  3. 自動ページの本文から催事の行の範囲だけを切り出し、前の週の内容との差を出す
  4. 自動差のあった見回り先について、エージェントが催事を拾い、会場・日程・種類・規模の手がかりを台帳の形にそろえる
  5. 自動エージェントが、会場の台帳、過去の催事の実績、開催日の予約の入り方を道具で引き、判断の材料を付ける
  6. 自動前の週までの催事の台帳と突き合わせ、`new`(新規)/`changed`(変更)/`cancelled`(中止)/`same`(変化なし)を付ける
  7. 自動規模と過去の効き方と予約の入り方から、知らせる段階(A/B/記録のみ)を規則で決める
  8. 自動段階AとBの催事を、施設ごとの一覧にして社内チャットへ送る
  9. 人レベニューの担当が一覧を見て、料金の見直しの候補に入れるかを決める
  10. 人営業の担当が、学会と企業の催しについて、主催者への提案の要否を決める
  11. 人判断の結果(見直した/見送った/誤り)を台帳に付ける
各工程の詳しい説明を読む
  1. 週に一度、レベニューの担当がブックマークを順に開き、会場の催事の予定表を見る
  2. 前に見たときから増えた催事を探す。増えたかどうかは記憶とメモで判断する
  3. 新しい催事があれば、会場の収容人数、主催者の過去の動員、遠方から来る客の多さを調べる
  4. 開催日の前後の予約の入り方をPMSで見て、すでに埋まり始めているかを確かめる
  5. 需要に響きそうなら、催事のメモ(スプレッドシート)に書き、料金の見直しの候補に入れる
  6. 営業の担当は、学会と企業の催しを別のメモで追い、団体の問い合わせに備える
  7. 月に一度、両方のメモを持ち寄り、翌月以降の料金と販売の方針を話し合う

(a)見る先が人の頭の中にある。 どのページを、どの順に、何を手がかりに見ているかが書かれていません。担当者が替わると、見回り先の半分が引き継がれません。 前の担当者が見ていた大学のページは、異動の後に誰も開いていませんでした。

(b)変更と中止に気づかない。 2番目は「増えたもの」を探す作業なので、日程が1日ずれた催事や、中止になった催事は目に入りません。 中止に気づかずに高い料金を出したままにすると、その日は空室が残ります。

(c)規模の見当を毎回調べ直す。 3番目で、会場の収容人数や主催者の前回の動員を毎回検索しています。同じ会場の同じ種類の催事なら、前回の調べた結果がそのまま使えるはずですが、残っていません。

(d)知らせる先が2つに分かれている。 レベニューと営業が別々のメモを持ち、同じ学会を両方が追う週も、どちらも追わない週もあります。

  1. 【人】 見回り先の台帳(URL・種類・見る範囲・会場)を整え、利用条件と robots.txt を確かめた先だけを登録する
  2. 【自動】 毎週月曜の朝、ワークフローが動き、台帳の見回り先を順に取りに行く
  3. 【自動】 ページの本文から催事の行の範囲だけを切り出し、前の週の内容との差を出す
  4. 【自動】 差のあった見回り先について、エージェントが催事を拾い、会場・日程・種類・規模の手がかりを台帳の形にそろえる
  5. 【自動】 エージェントが、会場の台帳、過去の催事の実績、開催日の予約の入り方を道具で引き、判断の材料を付ける
  6. 【自動】 前の週までの催事の台帳と突き合わせ、new(新規)/changed(変更)/cancelled(中止)/same(変化なし)を付ける
  7. 【自動】 規模と過去の効き方と予約の入り方から、知らせる段階(A/B/記録のみ)を規則で決める
  8. 【自動】 段階AとBの催事を、施設ごとの一覧にして社内チャットへ送る
  9. 【人】 レベニューの担当が一覧を見て、料金の見直しの候補に入れるかを決める
  10. 【人】 営業の担当が、学会と企業の催しについて、主催者への提案の要否を決める
  11. 【人】 判断の結果(見直した/見送った/誤り)を台帳に付ける

9番目と10番目が、この設計の分かれ目です。 エージェントは料金にも販売の止め方にも触りません。出すのは「この日にこういう催事があり、前回はこう効いた」という材料までです。 料金を変えるかは、ほかの日の予約、競合の料金、団体の仮押さえを見たうえで人が決めます。

7番目を規則で決めるのは、エージェントに任せると基準が週ごとに揺れるからです。

02今回想定するシステム構成

構成図
見回り先の台帳(URL・種類・見る範囲・会場・確認日)
   ▼【トリガー】毎週月曜 7:00(Schedule Trigger)
n8n
   ├──▶ HTTP Request ── 見回り先を間隔を空けて順に取得
   ├──▶ Code ── 催事の行の範囲を切り出し、前週との差を出す
   ▼  差のあった見回り先だけ
AI Agent ノード(Claude API)
   │   道具:会場の台帳/過去の催事と実績/開催日の予約の入り方
   │         催事の台帳(前週まで)/詳細ページの取得(許可した先のみ)
   ▼  催事・規模の手がかり・根拠の文(構造化出力)
n8n ── new/changed/cancelled の付与、知らせる段階を規則で決める
   ├──▶ 社内チャット(施設ごとの一覧。段階Aは料金と販売の両方へ)
   └──▶ 催事の台帳(翌週の突き合わせに使う)
役割想定する製品代替候補
ワークフローn8n(Schedule Trigger と AI Agent ノード)Make、Zapier、Power Automate
生成AIClaude API(n8n の Anthropic Chat Model ノードで接続)OpenAI API、Gemini API
差異計算JavaScript(n8n の Code ノード。前週の内容との差、催事の台帳との突き合わせ)Python
連携HTTP Request ノード(見回り先の取得と、許可した先の詳細ページの取得)RSS Read ノード(RSSを出している見回り先)
保管催事の台帳と見回りの記録(データベースの表)スプレッドシート
通知社内チャット(Microsoft Teams)Slack、メール

PMSとサイトコントローラーには書き込みません。 料金の変更も、販売の停止も、これまでどおり人が画面で行います。PMSからは、開催日の前後の予約の数を読むだけです。最初の準備は、見回り先の台帳と会場の台帳を作ることです。

土台になるのは、n8n の AI Agent ノード(Tools Agent)です。 つないだ道具の中から、課題に応じてどれを使うかを判断する仕組みです。System Message で判断の方針を与え、Max Iterations(既定は10)で答えを作ろうとする回数の上限を決めます。Require Specific Output Format を有効にすると出力パーサーをつなぐ形になり、Return Intermediate Steps を有効にすると途中の判断の過程も出力に含まれます。

会場の台帳や予約の数を引く道具は、Call n8n Workflow Tool で作ります。 別のワークフローを道具として呼ぶノードで、Description に「いつこの道具を使うか」を書き、Workflow Inputs の値を $fromAI() でAIに埋めさせます。エージェントが読めるものを、道具の数だけに絞れます。

ページの取得は HTTP Request ノードです。 AIエージェントの道具としてもつなげ、Optimize Response を有効にすると、LLMに渡すデータの量を減らせます。HTMLの応答では、Selector で含める要素を指定し(既定は body)、Return Only Content でタグと属性を取り除き、Max Response Characters(既定は1000文字)で長さを抑えられます。

生成AIは Anthropic Chat Model ノードでつなぎます。 Sampling Temperature は高いほどハルシネーションのおそれが増えるとされ、日付と会場を写し取る仕事なので低く置きます。

03どうやって実装するのか

Step1

処理の起点を決める

毎週月曜の朝7時の定時実行にします。 会場や主催者の発表は週の後半に出ることが多く、週明けにまとめて拾えば、その週の料金の会議に間に合います。 Schedule Trigger は秒・分・時・日・週・月と Custom(Cron)を指定でき、ここでは「週」で月曜を選びます。

時刻の基準に注意してください。 Schedule Trigger はタイムゾーンの設定に従い、自前で立てたインスタンスの既定は America/New York です。 ワークフローの設定で Asia/Tokyo を指定しないと、日本時間の夜に動きます。

Schedule Trigger を起点にしたワークフローは、保存して公開しないと定時に動きません。 道具として呼ぶワークフローも同じです。親だけを公開して道具を公開し忘れるのが、最初の週にいちばん起きる失敗です。週1回では遅い見回り先だけは、台帳の「頻度」の列で毎日に指定します。

Step2

入力データを集める

データ中身取得元
見回り先の台帳URL、種類(会場の予定表/自治体・観光協会/学会の案内/競技の日程)、見る範囲のセレクター、対象の施設、頻度、利用条件と robots.txt の確認日経営企画が作る表
見回り先のページ催事の予定表の本文(取得した日時つき)各見回り先
会場の台帳会場名と表記ゆれ、収容人数の目安、施設からの距離、遠方からの来場が多い種類経営企画が作る表
過去の催事と実績催事の種類・会場・日付、その日と前日の稼働と平均の客室単価PMSの過去の記録から作る表
開催日の予約の入り方開催日と前後1日の、施設ごとの予約済みの室数と、同じ曜日の平均との差PMSの予約の書き出し
催事の台帳前の週までに拾った催事と、その時点の内容、知らせた段階、人の判断この構成の保管

質を決めるのは、会場の台帳と過去の催事と実績です。 会場の台帳が無ければ、「〇〇ホール」が何人入る会場かを毎回エージェントが探しに行き、根拠の無い規模を書く余地が生まれます。 過去の実績が無ければ、「前回はどう効いたか」が言えず、知らせる段階が規模だけで決まります。

会場の表記ゆれは必ず台帳に入れてください。 命名権で名前が変わった会場は、旧名と略称を同じ行に並べないと過去の実績が引けません。

自動での取得を禁じている先、ログインが要る先は登録せず、人が見る一覧に回します。

Step3

データの取得方法を決める

取るものどこから何に使うか
予定表の本文HTTP Request ノード(台帳のURL)催事の行の切り出しと、前週との差
RSSの新着RSS Read ノード(RSSを出している先)予定表より早く出る新着の発表
催事の詳細HTTP Request ノードを道具として(許可した先のみ)日程の詳細、追加公演の有無
会場・実績・予約Call n8n Workflow Tool で呼ぶ別のワークフロー規模の手がかり、過去の効き方、予約の入り方

見回り先の取得は、間隔を空けて1か所ずつ行います。 HTTP Request ノードの Batching で、1回にまとめる件数(Items per Batch)と、まとまりの間に待つ時間(Batch Interval、ミリ秒)を決められます。同じサイトの複数のページを続けて取りに行かないよう、1件ずつ数秒の間隔を空けます。Timeout で、応答の始まりを待つ時間も決めておきます。

robots.txt は見回りの朝に読み直します。 RFC 9309 は、キャッシュした robots.txt を、取得できない場合を除いて24時間を超えて使うべきではないとしています。利用条件の確認は、人が台帳の登録時に行います。

エージェントが自分でURLを選んで取りに行くことは、許可した先に限ります。 詳細ページを取る道具の側で、台帳に登録したドメインかどうかを先に確かめ、それ以外は取得せずに返します。 検索エンジンを道具としてつなぐことはしません。

Step4

AIへ渡す前に整形する

  1. 見る範囲の切り出し … 台帳のセレクターで、予定表の部分だけを取り出します。メニュー、広告、関連記事は落とします
  2. タグの除去 … HTMLのタグと属性を取り除き、本文の文字だけにします
  3. 前週との差 … 切り出した本文を前の週の本文と比べ、差の無い見回り先はエージェントに渡しません
  4. 日付の正規化の準備 … 「10/12(日)」「2027.1.18」「令和9年1月」のような表記を、年を補わずにそのまま残します。年の補い方はエージェントの判断に任せず、規則で行います
  5. 取得の失敗の記録 … 応答が無い、ステータスが2xxでない、本文が空、の3つを分けて記録します
  6. 構造の変化の検知 … 先週は催事の行が20あったのに今週は0、のように急に減った見回り先は、エージェントに渡さず人に回します

3番目と6番目が、量と誤りの両方を抑えます。 3番目で、エージェントが読むのは40か所のうち差のあった十数か所になります。6番目を入れないと、サイトの作り直しで予定表が取れなくなった週に「催事はすべて中止」という知らせが出ます。

Step5

AIに処理させる

させるのは、差のあった見回り先の本文から催事を拾い、台帳の形にそろえ、道具で判断の材料を付けることまでです。

見るものさせること判断できないときの扱い
催事の名前と種類公演/学会・大会/スポーツ/展示会/地域の催し に分ける種類が読めなければ other
会場会場の台帳の名前に寄せる。表記ゆれと旧名を道具で引く台帳に無ければ venue_unknown
日程開始日と終了日を、本文の文字列のまま date_text に写す年が書かれていなければ年を補わない
規模の手がかり本文にある公演数・日数・参加の見込み・席数の記載を写す記載が無ければ空。会場の収容人数で埋めない
過去の効き方同じ会場・同じ種類の過去の催事を道具で引き、稼働と単価を付ける該当が無ければ no_history
予約の入り方開催日と前後1日の予約の数と、同じ曜日の平均との差を道具で引く道具が失敗したら空のまま
根拠催事を拾った本文の文をそのまま写す写せなければ拾わない

右端の列が、この構成でいちばん大事な決まりです。 とくに規模は、書かれていない人数を会場の収容人数から推定して書くと、満席の公演と空席の多い催しが同じ扱いになります。 会場の収容人数は会場の台帳の値として別の欄に持ち、催事の規模の欄には本文に書かれたことだけを入れます。

させないこと理由
料金の案を出すこと料金はほかの日の予約・競合・団体の仮押さえを見て人が決める
知らせる段階を決めること規則で決める。週ごとに基準が揺れないように
年の補完「1月18日」が今年か来年かは、取得日と規則で決める
規模の推定書かれていない人数を作らない
台帳に無いサイトの取得利用条件を確かめていない先に取りに行かない
中止の断定行が消えただけでは中止と言えない。消えた事実だけを記録する

最後の行が、いちばん起きやすい誤りです。 予定表から行が消える理由は、中止のほかに、終わった催事を消した、月のページが切り替わった、もあります。「中止」「延期」と本文に書かれているときだけ cancelled にし、行が消えただけなら disappeared として人に回します。

Step6

指示内容を固定する

あなたはホテルの経営企画部で、周辺の催事の予定を整理する担当です。
渡された本文と、道具で引いた情報だけを使ってください。推測で埋めないでください。

【あなたの仕事】
1. 本文から催事を拾い、1件ずつ次の項目にそろえる
   name / category / venue_text / date_text / scale_text / evidence
2. venue_text を「会場の台帳」の道具で引き、venue_id を付ける
3. 同じ会場・同じ category の過去の催事を「過去の催事と実績」の道具で引く
4. 開催日が決まっている催事は「予約の入り方」の道具で、施設ごとの予約の数を引く
5. 「催事の台帳」の道具で、前の週までに拾った同じ催事があるかを確かめる

【category の選び方】
concert(公演) / convention(学会・大会・試験) / sports(スポーツ)
exhibition(展示会・見本市) / local(地域の催し) / other

【厳守事項】
- date_text には本文の日付の文字列をそのまま写してください。
  年が書かれていなければ、年を補わないでください。
- scale_text には、本文に書かれた公演数・日数・参加の見込み・席数だけを写してください。
  書かれていなければ空にしてください。会場の収容人数で埋めないでください。
- 会場が台帳に見つからなければ venue_id を "venue_unknown" にしてください。
  似た名前の会場に寄せないでください。
- evidence には、その催事を拾った本文の文をそのまま写してください。
  写せない催事は拾わないでください。
- 「中止」「延期」「変更」と本文に書かれているときだけ、status_hint に
  cancelled / postponed / changed を入れてください。書かれていなければ空にしてください。
- 料金の案、販売を止める案、需要が高いかどうかの結論は書かないでください。
- 詳細ページを取りに行くのは、本文に詳細ページへのリンクがあり、
  日程か規模が本文だけでは分からないときに限ってください。
- 道具が失敗したら、その項目を空にし、tool_errors に道具の名前を書いてください。

【見回り先】{source_name}(種類:{source_type}、対象の施設:{hotels})
【取得日】{fetched_at}
【前週との差の本文】{diff_text}

「会場の収容人数で埋めない」を明記しないと、規模の欄が埋まります。 エージェントは道具で会場の台帳を引けるので、収容人数という数字が目の前にあれば、それを規模として書きます。 禁じるのは、台帳の値を催事の値として扱うことそのものです。

「似た名前の会場に寄せない」も同じ理由です。 市内に「〇〇ホール」が3つあれば、いちばん大きいものに寄せがちです。会場を取り違えると、施設からの距離も過去の実績も別物になります。 詳細ページの条件を書かないと、全件の詳細を取りに行き、Max Iterations の上限に先に届きます。

Step7

出力形式を固定する

Structured Output Parser で、次の形のJSONを受け取ります。

{
  "source_id": "SRC-012",
  "fetched_at": "2026-10-05T07:03:00+09:00",
  "events": [
    {
      "name": "",
      "category": "concert | convention | sports | exhibition | local | other",
      "venue_text": "",
      "venue_id": "",
      "date_text": "",
      "scale_text": "",
      "status_hint": "cancelled | postponed | changed | ",
      "evidence": "",
      "history": [
        { "event_date": "", "hotel": "", "occupancy": 0, "adr": 0 }
      ],
      "pickup": [
        { "hotel": "", "date": "", "booked_rooms": 0, "vs_same_weekday": 0 }
      ]
    }
  ],
  "tool_errors": []
}

1つ目の理由は、AIが写したものとワークフローが決めたものを分けられることです。 日付の確定、new/changed/cancelled の付与、知らせる段階は、受け取った後に Code ノードで決めます。

段階条件(初期値。施設ごとに調整)
A(料金と販売の両方へすぐ知らせる)会場の収容の目安が5,000人以上で、過去の同じ種類の催事の日に稼働が平均より10ポイント以上高い。または、開催日の予約が同じ曜日の平均を20%以上上回っている
B(週の一覧に載せる)会場の台帳に載っている会場で、concert/convention/sports のいずれか
記録のみ上のどれにも当たらない。local と other の多く
人へ回すvenue_unknown、年の確定できない日付、disappeared、tool_errors があるもの

2つ目の理由は、出力パーサーの決まりに合わせて欄を必ず出させられることです。 n8n の Structured Output Parser は、JSONの例から作るとすべての項目を必須として扱います。 空でも欄は出るので、後段の処理が欄の有無で分岐せずに済みます。JSON Schema で書く場合は、$ref による参照が使えないので、history と pickup の形は展開して書きます。

3つ目は、evidence で、どの文から拾ったかを開く前に読めることです。

Step8

システムへ連携する

つなぎ先方式内容
見回り先の台帳表の読み取りURL・セレクター・頻度・確認日を引く
見回り先のページHTTP Request ノード予定表の本文を取得する
会場の台帳・過去の実績Call n8n Workflow Toolエージェントの道具として引く
PMS予約の書き出しの読み取り開催日の前後の予約の数を引く
催事の台帳データベースの表拾った催事と、人の判断を残す
社内チャットMicrosoft Teams への投稿施設ごとの一覧と、段階Aの即時の知らせ

PMSへは書き込みません。 予約の数を読むのも、夜間に書き出した表からです。PMSに直接つなぐと、エージェントの道具から予約の個人の情報まで届く経路ができます。書き出しの段階で、日付と室数だけの表にしておきます。 チャットへの投稿は施設ごとに1つにまとめ、段階Aだけはまとめを待たずに送ります。

Step9

人が確認する

人が見るのは、段階AとBの一覧と、人へ回したものだけです。 記録のみの催事は、月に一度、件数と見回り先を流し見ます。

  1. 人へ回したものを先に見る … venue_unknown は会場の台帳に足すか、対象外にするかを決めます。disappeared は見回り先を開いて、中止か、終わっただけかを確かめます
  2. 段階Aの根拠を確かめる … evidence と見回り先のページで、日程と会場を目で確かめます。料金を動かす前に、必ず元のページを開きます
  3. 料金と販売の判断をする … レベニューの担当が料金の見直しの候補に入れるか、営業の担当が主催者へ提案するかを決めます
  4. 判断の結果を台帳に付ける … 見直した/見送った/誤り(日付・会場・催事の取り違え)のどれかを付けます

2番目を省かないでください。 日付を写し間違えると、催事の無い日に料金を上げることになります。

人へ回す件数が増えた週は、見回り先の構造が変わったか、会場の台帳が足りていません。

Step10

例外に対処する

起きること対応
見回り先の応答が無い・2xxでない取得の失敗として記録し、翌週まで続いたら人へ。その週の「変化なし」として扱わない
予定表の行が急に減った・0になったサイトの作り直しを疑い、エージェントに渡さず人へ。セレクターを直す
robots.txt で禁じられた・利用条件が変わったその見回り先を止め、人が見る一覧へ移す
年の書かれていない日付取得日より後の最も近い日として仮に置き、year_assumed の印を付けて人へ
会場が台帳に無いvenue_unknown。台帳に足すかを人が決める
同じ催事が複数の見回り先に出る会場と日付と名前の近さで1件にまとめ、見回り先は全部を記録する
行が消えたdisappeared。中止と書かれていなければ中止として知らせない
道具(予約・実績)が失敗した欄を空にし、tool_errors に記録。段階は規模だけで仮に決め、人へ
Max Iterations に届いた途中までの結果を捨て、見回り先を人へ回す

上から2行目がいちばん多く起きます。 会場や自治体のサイトは年に何度か作り直され、セレクターが合わなくなります。

Step11

記録を残す

  • 見回り先ごとの取得の日時、ステータス、切り出した本文と行の数
  • 前週との差の本文と、エージェントに渡したかどうか
  • エージェントの出力(JSONの全文)と、Return Intermediate Steps で残した道具の呼び出しの記録
  • 催事の台帳(催事ごとの内容の履歴、new/changed/cancelled/disappeared、知らせた段階)
  • 人の判断(見直した/見送った/誤り)と、誤りの種類
  • 見回り先ごとの robots.txt と利用条件の確認日

3つ目は、会場の取り違えが本文の読み違いか台帳の引き違いかを分けるために残します。 5つ目は、段階の規則を直す材料です。「見送った」ばかりの種類は、記録のみに下げます。

04実装レベルの3段階

最小構成:予定表の本文を手で生成AIに貼り、催事を表にさせる / 1ページごとの催事の拾い出し
半自動化:上記+毎週見回り先を取得し、前週との差のある本文から催事を拾って一覧にする / 取得、差の検出、催事の拾い出し
本格構成:上記+エージェントが会場・過去の実績・予約の入り方を道具で引き、知らせる段階を規則で決めてチャットへ送る / 見回りから、判断の材料と知らせまで

最小構成は、拾い出しの正確さを確かめるための段階です。 半自動化で、見回り先を開いて新しい催事を探す作業がなくなります。 ただ、拾った催事の規模と過去の効き方を調べる作業が人に残ります。本格構成で、その調べ直しまでエージェントが道具で行い、この段階が本記事の想定です。 段階を飛ばさないでください。 半自動化を1か月回すと、構造の変わりやすい見回り先と、台帳に無い会場が先に分かります。

05工数削減シミュレーション

前提値(モデル条件)
対象人数
3 名
月間件数
240 件
1件あたり現在時間
10 分
1件あたり導入後時間
3 分
現在  240件 × 10分 ÷ 60 = 40 時間/月
導入後 240件 × 3分 ÷ 60 = 12 時間/月
月間削減時間
28h
削減率
70%
年間削減時間
336h
年間金額換算(時間単価3,500円)
118万円
モデル条件による試算であり、実際の効果は業務内容・運用方法によって異なります。

自社条件で導入効果を整理したい方へ

このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。

AI活用について相談する

06向いている企業・向いていない企業

向いている
  1. アリーナ・ドーム・コンベンションセンター・大学・競技場の近くにあり、催事のある日に客室が早く埋まるホテル・旅館。料金と販売の担当が、会場のサイトや自治体のイベント情報を手で見に行っていて、担当者の休みや異動で見落としが出ている場合。同じ市内に複数の施設を持ち、施設ごとに見ている先がばらばらな場合。過去の催事の日の稼働と料金を、予約の記録から取り出せる場合。
向いていない
  1. 周辺に大きな会場が無く、需要が季節と曜日でほぼ決まる施設。団体や企業の契約で客室の大半が埋まり、個人向けの料金を動かす余地が小さい場合。見回る先が数か所で、週に一度見れば足りる場合。なお、料金をいくらにするか、販売を止めるかの判断と、予約サイトへの反映は、この構成では代替しません。

07最小構成で試す方法

  1. 過去1年で、催事のある日に客室が早く埋まった日を10日選ぶ(うち数日は、気づくのが遅れて料金を上げそびれた日を入れる)
  2. その10日の催事について、当時どの見回り先に、いつ発表が出ていたかを調べる
  3. 見回り先の予定表のページを開き、本文を手元の生成AIのサービスに貼り付ける
  4. 「この本文から催事を拾い、名前・種類・会場・日付・規模の記載を表にしてください。日付の年が書かれていなければ補わないでください。規模は本文に書かれていることだけにし、会場の収容人数で埋めないでください。根拠の文を写してください」と指示する
  5. 出てきた表を、当時の催事のメモと突き合わせる

10日は必ずやってください。 エージェントを組む前に、「ページの本文から催事を正しく拾えるのか」を確かめます。

出てきた内容判断
当時の催事がそろって拾えた見回り先の台帳とワークフローに進む
規模を収容人数で埋めた・年を補った指示の書き方で直る。構成は有効
予定表が画像やPDFで、本文が取れないその見回り先は人が見る一覧へ。 AIの問題ではない

3行目が出る見回り先は珍しくありません。 全体の何割がそうかが分かれば、自動で見回れる範囲が先に決まります。

08実装時につまずきやすいポイント

問題対策
規模が会場の収容人数で埋まる本文に書かれたことだけを写すと指示し、収容人数は別の欄に持つ
年の無い日付が今年として扱われる年は規則で補い、補った印を付けて人へ回す
行が消えただけで中止と知らせる本文に「中止」と書かれたときだけ cancelled。消えたものは disappeared
サイトの作り直しで催事が0件になる行の数を毎週記録し、急に減った先はエージェントに渡さない
同じ会場が別の名前で出る会場の台帳に旧名と略称を入れる
知らせが多すぎて読まれない段階を規則で決め、段階Bは週に1回の一覧にまとめる
詳細ページを取りに行きすぎる取りに行く条件を指示に書き、Max Iterations で上限を決める
定時に動かないタイムゾーンを Asia/Tokyo に。親と道具の両方を公開する
利用条件を確かめていない先を取る台帳の確認日の列が空の先は取得しない
同じサイトに短い間隔で何度も取りに行くBatch Interval で数秒の間隔を空ける
料金の案までAIに書かせる料金は人が決める。 出力の欄に料金を置かない

上の3行が、知らせの信頼を決めます。 どれも「書かれていないことを埋める」誤りで、1度でも催事の無い日に料金を上げると、担当者は知らせを信じなくなります。 4行目と5行目は、行の数の記録と会場の台帳の手入れを毎月の作業にして防ぎます。

09セキュリティ・AIガバナンス上の注意点

この構成で扱うデータ: 公開されている催事の予定、会場の情報、そして施設ごとの予約済みの室数、過去の稼働と客室単価です。

  1. 予約の個人の情報をエージェントに渡さない … 道具が返すのは日付ごとの室数と平均との差だけにします。宿泊者の名前や連絡先は、書き出しの段階で落とします
  2. 稼働と単価は社外に出さない情報として扱う … 生成AIに渡すのは道具の結果の範囲だけです。利用する生成AIのサービスで、入力がどう扱われるかを契約の条件で確かめてください
  3. 見回り先の利用条件を守る … 自動での取得を禁じている先、ログインが要る先は対象にしません。robots.txt はアクセスの許可の仕組みではないとされており、禁じられていないことは取ってよい根拠になりません
  4. 料金の決定を自動にしない … この構成が出すのは判断の材料までです。料金の変更と販売の停止は、人が理由を残して行います

誤りが起きた場合のリスクは、催事の無い日に料金を上げることと、需要の高い日を見落とすことの2つです。 前者は日付の写し違いと会場の取り違えで起き、後者は見回り先の構造の変化で起きます。前者は元のページを開く確認で、後者は行の数の記録で守ります。

10まず何から始めるか

1週目:見回り先の台帳を作る

レベニューと営業の担当がそれぞれ見ている先を、ブックマークとメモから全部書き出します。 URL・種類・対象の施設を並べ、利用条件と robots.txt を確かめ、自動で取れない先には印を付けます。

2週目:10日で試す

過去1年で客室が早く埋まった日を10日選び、当時の見回り先の本文を手元の生成AIに貼って催事を拾わせます。規模を収容人数で埋めていないか、年を補っていないかを最優先で見ます。

3週目:会場の台帳と過去の実績を作る

周辺の会場の収容人数の目安、距離、旧名と略称を並べます。PMSの記録から、過去の催事の日の稼働と単価を取り出します。 知らせる段階の初期値も、ここで決めます。

4週目:見回りと差の検出をつなぐ

n8n で毎週の取得と前週との差の検出を作り、差のあった見回り先の一覧だけをチャットに送ります。 この時点ではエージェントを使いません。

2か月目: エージェントに催事の拾い出しと道具の呼び出しをさせ、段階を規則で決めて知らせます。人の判断を台帳に付け始めます。3か月目以降: 判断の記録を見て段階の規則を直し、1件10分が何分になったかを実測します。見回り先の行の数の記録と、会場の台帳の手入れが毎月の作業として回り始めた時点で、この構成は完成です。


11関連ユースケース

12この仕組みを理解するための記事

13技術仕様の確認日・参考情報

技術仕様確認日:2026-10-06/最終更新:2026-10-06
確認した内容情報源確認日
Schedule Trigger の間隔(秒・分・時・日・週・月・Custom(Cron))。自前のインスタンスの既定のタイムゾーンが America/New York であること。保存して公開しないと定時に動かないことn8n Docs: Schedule Trigger node2026-10-06
Tools Agent の System Message、Max Iterations(既定10)、Return Intermediate Steps、Require Specific Output Format の各設定n8n Docs: Tools AI Agent node2026-10-06
Call n8n Workflow Tool の Description(いつこの道具を使うか)、Workflow Inputs、$fromAI()n8n Docs: Call n8n Workflow Tool node2026-10-06
HTTP Request ノードをAIエージェントの道具としてつなげること。Optimize Response、Selector(既定は body)、Return Only Content、Max Response Characters(既定1000文字)。Batching(Items per Batch、Batch Interval)と Timeoutn8n Docs: HTTP Request node2026-10-06
Structured Output Parser の2つの書き方。例から作ると全項目が必須になること。$ref が使えないことn8n Docs: Structured Output Parser node2026-10-06
Anthropic Chat Model ノードの Sampling Temperature(高いほどハルシネーションのおそれが増える)などの設定n8n Docs: Anthropic Chat Model node2026-10-06
robots.txt の規則がアクセスの許可の仕組みではないこと。キャッシュした robots.txt を、取得できない場合を除いて24時間を超えて使うべきでないことRFC 9309: Robots Exclusion Protocol2026-10-06

見回り先のサイトから自動で情報を取得してよいかは、各サイトの利用条件で確かめ、必要に応じて法務で確認してください。 本記事は上記の公開資料で確認できた範囲だけを扱っています。

実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。

自社の業務に使えるAI活用候補を整理します

このユースケース(UC-0562)についてのご相談はこちらから。

AI活用について相談する
目次