ホテルの周辺で開かれるコンサート・学会・スポーツの大会の予定をエージェントが毎週見回り、宿泊の需要が高まりそうな日を料金と販売の担当へ知らせる
ホテルの周辺の会場・自治体・主催者が公開している催事の予定を、エージェントが毎週見回ります。新しく出た催事を台帳にそろえ、過去の実績と予約の入り方に照らして、需要が高まりそうな日を料金と販売の担当へ知らせます。
- 生成AI
- ChatGPT/Claude/Gemini
- 連携・自動化
- Make/n8n/Power Automate/Python/Zapier
- 対象業界
- その他/不動産/宿泊/飲食
- 対象部門
- 営業/経営企画
- 対象業務
- 情報検索/集計・分析
- 主な課題
- 属人化している/情報が見つからない/期限・対応漏れが起きる
- AIで行う処理
- エージェント
- 主な効果
- 判断支援/属人化解消/工数削減/機会損失防止
- 導入難易度
- ★★★☆☆
- 実装レベル
- 本格構成
- 費用感
- API連携(中)
- 人間の確認
- 条件付き
01導入前 / 導入後の業務フロー
- 週に一度、レベニューの担当がブックマークを順に開き、会場の催事の予定表を見る
- 前に見たときから増えた催事を探す。増えたかどうかは記憶とメモで判断する
- 新しい催事があれば、会場の収容人数、主催者の過去の動員、遠方から来る客の多さを調べる
- 開催日の前後の予約の入り方をPMSで見て、すでに埋まり始めているかを確かめる
- 需要に響きそうなら、催事のメモ(スプレッドシート)に書き、料金の見直しの候補に入れる
- 営業の担当は、学会と企業の催しを別のメモで追い、団体の問い合わせに備える
- 月に一度、両方のメモを持ち寄り、翌月以降の料金と販売の方針を話し合う
- 人見回り先の台帳(URL・種類・見る範囲・会場)を整え、利用条件と robots.txt を確かめた先だけを登録する
- 自動毎週月曜の朝、ワークフローが動き、台帳の見回り先を順に取りに行く
- 自動ページの本文から催事の行の範囲だけを切り出し、前の週の内容との差を出す
- 自動差のあった見回り先について、エージェントが催事を拾い、会場・日程・種類・規模の手がかりを台帳の形にそろえる
- 自動エージェントが、会場の台帳、過去の催事の実績、開催日の予約の入り方を道具で引き、判断の材料を付ける
- 自動前の週までの催事の台帳と突き合わせ、`new`(新規)/`changed`(変更)/`cancelled`(中止)/`same`(変化なし)を付ける
- 自動規模と過去の効き方と予約の入り方から、知らせる段階(A/B/記録のみ)を規則で決める
- 自動段階AとBの催事を、施設ごとの一覧にして社内チャットへ送る
- 人レベニューの担当が一覧を見て、料金の見直しの候補に入れるかを決める
- 人営業の担当が、学会と企業の催しについて、主催者への提案の要否を決める
- 人判断の結果(見直した/見送った/誤り)を台帳に付ける
各工程の詳しい説明を読む
- 週に一度、レベニューの担当がブックマークを順に開き、会場の催事の予定表を見る
- 前に見たときから増えた催事を探す。増えたかどうかは記憶とメモで判断する
- 新しい催事があれば、会場の収容人数、主催者の過去の動員、遠方から来る客の多さを調べる
- 開催日の前後の予約の入り方をPMSで見て、すでに埋まり始めているかを確かめる
- 需要に響きそうなら、催事のメモ(スプレッドシート)に書き、料金の見直しの候補に入れる
- 営業の担当は、学会と企業の催しを別のメモで追い、団体の問い合わせに備える
- 月に一度、両方のメモを持ち寄り、翌月以降の料金と販売の方針を話し合う
(a)見る先が人の頭の中にある。 どのページを、どの順に、何を手がかりに見ているかが書かれていません。担当者が替わると、見回り先の半分が引き継がれません。 前の担当者が見ていた大学のページは、異動の後に誰も開いていませんでした。
(b)変更と中止に気づかない。 2番目は「増えたもの」を探す作業なので、日程が1日ずれた催事や、中止になった催事は目に入りません。 中止に気づかずに高い料金を出したままにすると、その日は空室が残ります。
(c)規模の見当を毎回調べ直す。 3番目で、会場の収容人数や主催者の前回の動員を毎回検索しています。同じ会場の同じ種類の催事なら、前回の調べた結果がそのまま使えるはずですが、残っていません。
(d)知らせる先が2つに分かれている。 レベニューと営業が別々のメモを持ち、同じ学会を両方が追う週も、どちらも追わない週もあります。
- 【人】 見回り先の台帳(URL・種類・見る範囲・会場)を整え、利用条件と robots.txt を確かめた先だけを登録する
- 【自動】 毎週月曜の朝、ワークフローが動き、台帳の見回り先を順に取りに行く
- 【自動】 ページの本文から催事の行の範囲だけを切り出し、前の週の内容との差を出す
- 【自動】 差のあった見回り先について、エージェントが催事を拾い、会場・日程・種類・規模の手がかりを台帳の形にそろえる
- 【自動】 エージェントが、会場の台帳、過去の催事の実績、開催日の予約の入り方を道具で引き、判断の材料を付ける
- 【自動】 前の週までの催事の台帳と突き合わせ、
new(新規)/changed(変更)/cancelled(中止)/same(変化なし)を付ける - 【自動】 規模と過去の効き方と予約の入り方から、知らせる段階(A/B/記録のみ)を規則で決める
- 【自動】 段階AとBの催事を、施設ごとの一覧にして社内チャットへ送る
- 【人】 レベニューの担当が一覧を見て、料金の見直しの候補に入れるかを決める
- 【人】 営業の担当が、学会と企業の催しについて、主催者への提案の要否を決める
- 【人】 判断の結果(見直した/見送った/誤り)を台帳に付ける
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 |
| 生成AI | Claude 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どうやって実装するのか
処理の起点を決める
毎週月曜の朝7時の定時実行にします。 会場や主催者の発表は週の後半に出ることが多く、週明けにまとめて拾えば、その週の料金の会議に間に合います。 Schedule Trigger は秒・分・時・日・週・月と Custom(Cron)を指定でき、ここでは「週」で月曜を選びます。
時刻の基準に注意してください。 Schedule Trigger はタイムゾーンの設定に従い、自前で立てたインスタンスの既定は America/New York です。 ワークフローの設定で Asia/Tokyo を指定しないと、日本時間の夜に動きます。
Schedule Trigger を起点にしたワークフローは、保存して公開しないと定時に動きません。 道具として呼ぶワークフローも同じです。親だけを公開して道具を公開し忘れるのが、最初の週にいちばん起きる失敗です。週1回では遅い見回り先だけは、台帳の「頻度」の列で毎日に指定します。
入力データを集める
| データ | 中身 | 取得元 |
|---|---|---|
| 見回り先の台帳 | URL、種類(会場の予定表/自治体・観光協会/学会の案内/競技の日程)、見る範囲のセレクター、対象の施設、頻度、利用条件と robots.txt の確認日 | 経営企画が作る表 |
| 見回り先のページ | 催事の予定表の本文(取得した日時つき) | 各見回り先 |
| 会場の台帳 | 会場名と表記ゆれ、収容人数の目安、施設からの距離、遠方からの来場が多い種類 | 経営企画が作る表 |
| 過去の催事と実績 | 催事の種類・会場・日付、その日と前日の稼働と平均の客室単価 | PMSの過去の記録から作る表 |
| 開催日の予約の入り方 | 開催日と前後1日の、施設ごとの予約済みの室数と、同じ曜日の平均との差 | PMSの予約の書き出し |
| 催事の台帳 | 前の週までに拾った催事と、その時点の内容、知らせた段階、人の判断 | この構成の保管 |
質を決めるのは、会場の台帳と過去の催事と実績です。 会場の台帳が無ければ、「〇〇ホール」が何人入る会場かを毎回エージェントが探しに行き、根拠の無い規模を書く余地が生まれます。 過去の実績が無ければ、「前回はどう効いたか」が言えず、知らせる段階が規模だけで決まります。
会場の表記ゆれは必ず台帳に入れてください。 命名権で名前が変わった会場は、旧名と略称を同じ行に並べないと過去の実績が引けません。
自動での取得を禁じている先、ログインが要る先は登録せず、人が見る一覧に回します。
データの取得方法を決める
| 取るもの | どこから | 何に使うか |
|---|---|---|
| 予定表の本文 | 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を選んで取りに行くことは、許可した先に限ります。 詳細ページを取る道具の側で、台帳に登録したドメインかどうかを先に確かめ、それ以外は取得せずに返します。 検索エンジンを道具としてつなぐことはしません。
AIへ渡す前に整形する
- 見る範囲の切り出し … 台帳のセレクターで、予定表の部分だけを取り出します。メニュー、広告、関連記事は落とします
- タグの除去 … HTMLのタグと属性を取り除き、本文の文字だけにします
- 前週との差 … 切り出した本文を前の週の本文と比べ、差の無い見回り先はエージェントに渡しません
- 日付の正規化の準備 … 「10/12(日)」「2027.1.18」「令和9年1月」のような表記を、年を補わずにそのまま残します。年の補い方はエージェントの判断に任せず、規則で行います
- 取得の失敗の記録 … 応答が無い、ステータスが2xxでない、本文が空、の3つを分けて記録します
- 構造の変化の検知 … 先週は催事の行が20あったのに今週は0、のように急に減った見回り先は、エージェントに渡さず人に回します
3番目と6番目が、量と誤りの両方を抑えます。 3番目で、エージェントが読むのは40か所のうち差のあった十数か所になります。6番目を入れないと、サイトの作り直しで予定表が取れなくなった週に「催事はすべて中止」という知らせが出ます。
AIに処理させる
させるのは、差のあった見回り先の本文から催事を拾い、台帳の形にそろえ、道具で判断の材料を付けることまでです。
| 見るもの | させること | 判断できないときの扱い |
|---|---|---|
| 催事の名前と種類 | 公演/学会・大会/スポーツ/展示会/地域の催し に分ける | 種類が読めなければ other |
| 会場 | 会場の台帳の名前に寄せる。表記ゆれと旧名を道具で引く | 台帳に無ければ venue_unknown |
| 日程 | 開始日と終了日を、本文の文字列のまま date_text に写す | 年が書かれていなければ年を補わない |
| 規模の手がかり | 本文にある公演数・日数・参加の見込み・席数の記載を写す | 記載が無ければ空。会場の収容人数で埋めない |
| 過去の効き方 | 同じ会場・同じ種類の過去の催事を道具で引き、稼働と単価を付ける | 該当が無ければ no_history |
| 予約の入り方 | 開催日と前後1日の予約の数と、同じ曜日の平均との差を道具で引く | 道具が失敗したら空のまま |
| 根拠 | 催事を拾った本文の文をそのまま写す | 写せなければ拾わない |
右端の列が、この構成でいちばん大事な決まりです。 とくに規模は、書かれていない人数を会場の収容人数から推定して書くと、満席の公演と空席の多い催しが同じ扱いになります。 会場の収容人数は会場の台帳の値として別の欄に持ち、催事の規模の欄には本文に書かれたことだけを入れます。
| させないこと | 理由 |
|---|---|
| 料金の案を出すこと | 料金はほかの日の予約・競合・団体の仮押さえを見て人が決める |
| 知らせる段階を決めること | 規則で決める。週ごとに基準が揺れないように |
| 年の補完 | 「1月18日」が今年か来年かは、取得日と規則で決める |
| 規模の推定 | 書かれていない人数を作らない |
| 台帳に無いサイトの取得 | 利用条件を確かめていない先に取りに行かない |
| 中止の断定 | 行が消えただけでは中止と言えない。消えた事実だけを記録する |
最後の行が、いちばん起きやすい誤りです。 予定表から行が消える理由は、中止のほかに、終わった催事を消した、月のページが切り替わった、もあります。「中止」「延期」と本文に書かれているときだけ cancelled にし、行が消えただけなら disappeared として人に回します。
指示内容を固定する
あなたはホテルの経営企画部で、周辺の催事の予定を整理する担当です。
渡された本文と、道具で引いた情報だけを使ってください。推測で埋めないでください。
【あなたの仕事】
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 の上限に先に届きます。
出力形式を固定する
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 で、どの文から拾ったかを開く前に読めることです。
システムへ連携する
| つなぎ先 | 方式 | 内容 |
|---|---|---|
| 見回り先の台帳 | 表の読み取り | URL・セレクター・頻度・確認日を引く |
| 見回り先のページ | HTTP Request ノード | 予定表の本文を取得する |
| 会場の台帳・過去の実績 | Call n8n Workflow Tool | エージェントの道具として引く |
| PMS | 予約の書き出しの読み取り | 開催日の前後の予約の数を引く |
| 催事の台帳 | データベースの表 | 拾った催事と、人の判断を残す |
| 社内チャット | Microsoft Teams への投稿 | 施設ごとの一覧と、段階Aの即時の知らせ |
PMSへは書き込みません。 予約の数を読むのも、夜間に書き出した表からです。PMSに直接つなぐと、エージェントの道具から予約の個人の情報まで届く経路ができます。書き出しの段階で、日付と室数だけの表にしておきます。 チャットへの投稿は施設ごとに1つにまとめ、段階Aだけはまとめを待たずに送ります。
人が確認する
人が見るのは、段階AとBの一覧と、人へ回したものだけです。 記録のみの催事は、月に一度、件数と見回り先を流し見ます。
- 人へ回したものを先に見る …
venue_unknownは会場の台帳に足すか、対象外にするかを決めます。disappearedは見回り先を開いて、中止か、終わっただけかを確かめます - 段階Aの根拠を確かめる …
evidenceと見回り先のページで、日程と会場を目で確かめます。料金を動かす前に、必ず元のページを開きます - 料金と販売の判断をする … レベニューの担当が料金の見直しの候補に入れるか、営業の担当が主催者へ提案するかを決めます
- 判断の結果を台帳に付ける … 見直した/見送った/誤り(日付・会場・催事の取り違え)のどれかを付けます
2番目を省かないでください。 日付を写し間違えると、催事の無い日に料金を上げることになります。
人へ回す件数が増えた週は、見回り先の構造が変わったか、会場の台帳が足りていません。
例外に対処する
| 起きること | 対応 |
|---|---|
| 見回り先の応答が無い・2xxでない | 取得の失敗として記録し、翌週まで続いたら人へ。その週の「変化なし」として扱わない |
| 予定表の行が急に減った・0になった | サイトの作り直しを疑い、エージェントに渡さず人へ。セレクターを直す |
| robots.txt で禁じられた・利用条件が変わった | その見回り先を止め、人が見る一覧へ移す |
| 年の書かれていない日付 | 取得日より後の最も近い日として仮に置き、year_assumed の印を付けて人へ |
| 会場が台帳に無い | venue_unknown。台帳に足すかを人が決める |
| 同じ催事が複数の見回り先に出る | 会場と日付と名前の近さで1件にまとめ、見回り先は全部を記録する |
| 行が消えた | disappeared。中止と書かれていなければ中止として知らせない |
| 道具(予約・実績)が失敗した | 欄を空にし、tool_errors に記録。段階は規模だけで仮に決め、人へ |
| Max Iterations に届いた | 途中までの結果を捨て、見回り先を人へ回す |
上から2行目がいちばん多く起きます。 会場や自治体のサイトは年に何度か作り直され、セレクターが合わなくなります。
記録を残す
- 見回り先ごとの取得の日時、ステータス、切り出した本文と行の数
- 前週との差の本文と、エージェントに渡したかどうか
- エージェントの出力(JSONの全文)と、Return Intermediate Steps で残した道具の呼び出しの記録
- 催事の台帳(催事ごとの内容の履歴、
new/changed/cancelled/disappeared、知らせた段階) - 人の判断(見直した/見送った/誤り)と、誤りの種類
- 見回り先ごとの robots.txt と利用条件の確認日
3つ目は、会場の取り違えが本文の読み違いか台帳の引き違いかを分けるために残します。 5つ目は、段階の規則を直す材料です。「見送った」ばかりの種類は、記録のみに下げます。
04実装レベルの3段階
最小構成は、拾い出しの正確さを確かめるための段階です。 半自動化で、見回り先を開いて新しい催事を探す作業がなくなります。 ただ、拾った催事の規模と過去の効き方を調べる作業が人に残ります。本格構成で、その調べ直しまでエージェントが道具で行い、この段階が本記事の想定です。 段階を飛ばさないでください。 半自動化を1か月回すと、構造の変わりやすい見回り先と、台帳に無い会場が先に分かります。
05工数削減シミュレーション
導入後 240件 × 3分 ÷ 60 = 12 時間/月
自社条件で導入効果を整理したい方へ
このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。
06向いている企業・向いていない企業
- アリーナ・ドーム・コンベンションセンター・大学・競技場の近くにあり、催事のある日に客室が早く埋まるホテル・旅館。料金と販売の担当が、会場のサイトや自治体のイベント情報を手で見に行っていて、担当者の休みや異動で見落としが出ている場合。同じ市内に複数の施設を持ち、施設ごとに見ている先がばらばらな場合。過去の催事の日の稼働と料金を、予約の記録から取り出せる場合。
- 周辺に大きな会場が無く、需要が季節と曜日でほぼ決まる施設。団体や企業の契約で客室の大半が埋まり、個人向けの料金を動かす余地が小さい場合。見回る先が数か所で、週に一度見れば足りる場合。なお、料金をいくらにするか、販売を止めるかの判断と、予約サイトへの反映は、この構成では代替しません。
07最小構成で試す方法
- 過去1年で、催事のある日に客室が早く埋まった日を10日選ぶ(うち数日は、気づくのが遅れて料金を上げそびれた日を入れる)
- その10日の催事について、当時どの見回り先に、いつ発表が出ていたかを調べる
- 見回り先の予定表のページを開き、本文を手元の生成AIのサービスに貼り付ける
- 「この本文から催事を拾い、名前・種類・会場・日付・規模の記載を表にしてください。日付の年が書かれていなければ補わないでください。規模は本文に書かれていることだけにし、会場の収容人数で埋めないでください。根拠の文を写してください」と指示する
- 出てきた表を、当時の催事のメモと突き合わせる
10日は必ずやってください。 エージェントを組む前に、「ページの本文から催事を正しく拾えるのか」を確かめます。
| 出てきた内容 | 判断 |
|---|---|
| 当時の催事がそろって拾えた | 見回り先の台帳とワークフローに進む |
| 規模を収容人数で埋めた・年を補った | 指示の書き方で直る。構成は有効 |
| 予定表が画像やPDFで、本文が取れない | その見回り先は人が見る一覧へ。 AIの問題ではない |
3行目が出る見回り先は珍しくありません。 全体の何割がそうかが分かれば、自動で見回れる範囲が先に決まります。
08実装時につまずきやすいポイント
| 問題 | 対策 |
|---|---|
| 規模が会場の収容人数で埋まる | 本文に書かれたことだけを写すと指示し、収容人数は別の欄に持つ |
| 年の無い日付が今年として扱われる | 年は規則で補い、補った印を付けて人へ回す |
| 行が消えただけで中止と知らせる | 本文に「中止」と書かれたときだけ cancelled。消えたものは disappeared |
| サイトの作り直しで催事が0件になる | 行の数を毎週記録し、急に減った先はエージェントに渡さない |
| 同じ会場が別の名前で出る | 会場の台帳に旧名と略称を入れる |
| 知らせが多すぎて読まれない | 段階を規則で決め、段階Bは週に1回の一覧にまとめる |
| 詳細ページを取りに行きすぎる | 取りに行く条件を指示に書き、Max Iterations で上限を決める |
| 定時に動かない | タイムゾーンを Asia/Tokyo に。親と道具の両方を公開する |
| 利用条件を確かめていない先を取る | 台帳の確認日の列が空の先は取得しない |
| 同じサイトに短い間隔で何度も取りに行く | Batch Interval で数秒の間隔を空ける |
| 料金の案までAIに書かせる | 料金は人が決める。 出力の欄に料金を置かない |
上の3行が、知らせの信頼を決めます。 どれも「書かれていないことを埋める」誤りで、1度でも催事の無い日に料金を上げると、担当者は知らせを信じなくなります。 4行目と5行目は、行の数の記録と会場の台帳の手入れを毎月の作業にして防ぎます。
09セキュリティ・AIガバナンス上の注意点
この構成で扱うデータ: 公開されている催事の予定、会場の情報、そして施設ごとの予約済みの室数、過去の稼働と客室単価です。
- 予約の個人の情報をエージェントに渡さない … 道具が返すのは日付ごとの室数と平均との差だけにします。宿泊者の名前や連絡先は、書き出しの段階で落とします
- 稼働と単価は社外に出さない情報として扱う … 生成AIに渡すのは道具の結果の範囲だけです。利用する生成AIのサービスで、入力がどう扱われるかを契約の条件で確かめてください
- 見回り先の利用条件を守る … 自動での取得を禁じている先、ログインが要る先は対象にしません。robots.txt はアクセスの許可の仕組みではないとされており、禁じられていないことは取ってよい根拠になりません
- 料金の決定を自動にしない … この構成が出すのは判断の材料までです。料金の変更と販売の停止は、人が理由を残して行います
誤りが起きた場合のリスクは、催事の無い日に料金を上げることと、需要の高い日を見落とすことの2つです。 前者は日付の写し違いと会場の取り違えで起き、後者は見回り先の構造の変化で起きます。前者は元のページを開く確認で、後者は行の数の記録で守ります。
10まず何から始めるか
1週目:見回り先の台帳を作る
レベニューと営業の担当がそれぞれ見ている先を、ブックマークとメモから全部書き出します。 URL・種類・対象の施設を並べ、利用条件と robots.txt を確かめ、自動で取れない先には印を付けます。
2週目:10日で試す
過去1年で客室が早く埋まった日を10日選び、当時の見回り先の本文を手元の生成AIに貼って催事を拾わせます。規模を収容人数で埋めていないか、年を補っていないかを最優先で見ます。
3週目:会場の台帳と過去の実績を作る
周辺の会場の収容人数の目安、距離、旧名と略称を並べます。PMSの記録から、過去の催事の日の稼働と単価を取り出します。 知らせる段階の初期値も、ここで決めます。
4週目:見回りと差の検出をつなぐ
n8n で毎週の取得と前週との差の検出を作り、差のあった見回り先の一覧だけをチャットに送ります。 この時点ではエージェントを使いません。
2か月目: エージェントに催事の拾い出しと道具の呼び出しをさせ、段階を規則で決めて知らせます。人の判断を台帳に付け始めます。3か月目以降: 判断の記録を見て段階の規則を直し、1件10分が何分になったかを実測します。見回り先の行の数の記録と、会場の台帳の手入れが毎月の作業として回り始めた時点で、この構成は完成です。
11関連ユースケース
12この仕組みを理解するための記事
13技術仕様の確認日・参考情報
| 確認した内容 | 情報源 | 確認日 |
|---|---|---|
| Schedule Trigger の間隔(秒・分・時・日・週・月・Custom(Cron))。自前のインスタンスの既定のタイムゾーンが America/New York であること。保存して公開しないと定時に動かないこと | n8n Docs: Schedule Trigger node | 2026-10-06 |
| Tools Agent の System Message、Max Iterations(既定10)、Return Intermediate Steps、Require Specific Output Format の各設定 | n8n Docs: Tools AI Agent node | 2026-10-06 |
Call n8n Workflow Tool の Description(いつこの道具を使うか)、Workflow Inputs、$fromAI() | n8n Docs: Call n8n Workflow Tool node | 2026-10-06 |
| HTTP Request ノードをAIエージェントの道具としてつなげること。Optimize Response、Selector(既定は body)、Return Only Content、Max Response Characters(既定1000文字)。Batching(Items per Batch、Batch Interval)と Timeout | n8n Docs: HTTP Request node | 2026-10-06 |
Structured Output Parser の2つの書き方。例から作ると全項目が必須になること。$ref が使えないこと | n8n Docs: Structured Output Parser node | 2026-10-06 |
| Anthropic Chat Model ノードの Sampling Temperature(高いほどハルシネーションのおそれが増える)などの設定 | n8n Docs: Anthropic Chat Model node | 2026-10-06 |
| robots.txt の規則がアクセスの許可の仕組みではないこと。キャッシュした robots.txt を、取得できない場合を除いて24時間を超えて使うべきでないこと | RFC 9309: Robots Exclusion Protocol | 2026-10-06 |
見回り先のサイトから自動で情報を取得してよいかは、各サイトの利用条件で確かめ、必要に応じて法務で確認してください。 本記事は上記の公開資料で確認できた範囲だけを扱っています。
実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。
自社の業務に使えるAI活用候補を整理します
このユースケース(UC-0562)についてのご相談はこちらから。
