予約サイトに載っている自館の施設情報・プランの説明・写真の説明文をエージェントが毎週見回り、館内の正本と食い違う営業時間・設備・料金の条件を拾って修正の依頼を作る
6館が載っている4つの予約サイトの掲載内容を毎週集め、館内の施設情報の正本と照らします。エージェントが営業時間・設備・料金の条件の食い違いと古い記載を拾い、修正の依頼の下書きを作ります。
- 生成AI
- ChatGPT/Claude/Gemini
- 連携・自動化
- Make/n8n/Power Automate/Zapier
- 対象業界
- 不動産/宿泊/飲食
- 対象部門
- マーケティング
- 対象業務
- 内容確認・チェック/比較検討
- 主な課題
- 人手が足りない/期限・対応漏れが起きる/確認ミスが多い
- AIで行う処理
- エージェント
- 主な効果
- 入力漏れ削減/工数削減/機会損失防止
- 導入難易度
- ★★★☆☆
- 実装レベル
- 本格構成
- 費用感
- API連携(中)
- 人間の確認
- 条件付き
01導入前 / 導入後の業務フロー
- 毎週、担当者が受け持ちの館の各サイトのページを開く
- 施設の説明、館内の設備、プランの説明、写真の説明文を順に読む
- 館の施設情報のスプレッドシートを横に開き、営業時間・設備・駐車場・料金の条件を見比べる
- 違う記載があれば、メモに書き出す
- 館に「どちらが正しいか」をチャットで確かめる
- 各サイトの管理画面で直す
- 直したことを館に伝える
- 自動毎週月曜の朝、ワークフローが館と予約サイトの一覧を読む
- 自動楽天トラベルは、公式のAPIで施設の情報とプランの説明を取得する
- 自動取得してよいと確かめたサイトは、自館のページを取得して本文を取り出す
- 【人/自動】 取得しないサイトは、担当者が前の週末までにページをPDFで保存し、ワークフローが文字を取り出す
- 自動前の週の掲載と比べ、変わったところと、変わっていないところを分ける
- 自動エージェントが、掲載の記載を正本と変更の履歴に項目ごとに照らし、食い違いと古い記載を拾う
- 自動エージェントが、サイトごとに修正の依頼の下書きを作る
- 人担当者が拾われた項目を確かめ、必要なら館に聞いてから、各サイトの管理画面で直す
各工程の詳しい説明を読む
- 毎週、担当者が受け持ちの館の各サイトのページを開く
- 施設の説明、館内の設備、プランの説明、写真の説明文を順に読む
- 館の施設情報のスプレッドシートを横に開き、営業時間・設備・駐車場・料金の条件を見比べる
- 違う記載があれば、メモに書き出す
- 館に「どちらが正しいか」をチャットで確かめる
- 各サイトの管理画面で直す
- 直したことを館に伝える
(a)24の掲載を毎週全部は読み切れない。 1つのサイトでも、施設の説明、設備の一覧、プランごとの説明、写真の説明文と、見るところが何十もあります。忙しい週は、変更のあった館だけを見ることになり、変更の無い館の古い記載は残ります。
(b)変更の反映漏れがサイトごとに残る。 館から「大浴場を23時までにした」と届くと、担当者は思いつくサイトから直します。4つ目のサイトや、プランの説明の中に書いた営業時間は、直し忘れます。
(c)予約客の指摘で初めて気づく。 「サイトに24時までと書いてあったのに入れなかった」と言われて初めて、そのサイトの記載が古いと分かります。館は謝り、場合によっては補償を考えることになります。
(d)何が古い記載かが分からない。 正本に変更の履歴が無いので、掲載の「24時まで」が誤入力なのか以前の値なのかを、館に聞くまで判断できません。
- 【自動】 毎週月曜の朝、ワークフローが館と予約サイトの一覧を読む
- 【自動】 楽天トラベルは、公式のAPIで施設の情報とプランの説明を取得する
- 【自動】 取得してよいと確かめたサイトは、自館のページを取得して本文を取り出す
- 【人/自動】 取得しないサイトは、担当者が前の週末までにページをPDFで保存し、ワークフローが文字を取り出す
- 【自動】 前の週の掲載と比べ、変わったところと、変わっていないところを分ける
- 【自動】 エージェントが、掲載の記載を正本と変更の履歴に項目ごとに照らし、食い違いと古い記載を拾う
- 【自動】 エージェントが、サイトごとに修正の依頼の下書きを作る
- 【人】 担当者が拾われた項目を確かめ、必要なら館に聞いてから、各サイトの管理画面で直す
8番目が、この設計の分かれ目です。 エージェントは管理画面に触れません。直すのは担当者で、エージェントが作るのは「どのサイトの、どこを、何から何に直すか」の下書きまでです。
6番目で変更の履歴を引かせるので、第3章の(d)の「館に聞くまで判断できない」が減ります。 掲載の値が正本の以前の値と一致すれば「古い記載」で、館に聞かずに直せます。館に聞くのは、正本のどの時点の値とも一致しないものだけです。
5番目で前の週と比べているのも、意図してのことです。 予約サイトの側が、掲載の文章を変えることがあります。担当者が直していないのに文章が変わったところは、別に知らせます。
02今回想定するシステム構成
館と予約サイトの一覧(スプレッドシート:館・サイト・施設番号やURL・取得の方法) 施設情報の正本(スプレッドシート:項目・現在の値・変更の履歴・適用日) │ ▼【トリガー】Schedule Trigger(毎週月曜 8時、Asia/Tokyo) n8n のワークフロー ├──▶ HTTP Request(楽天ウェブサービス:施設情報API・空室検索API) ├──▶ HTTP Request + HTML(取得してよいと確かめたサイトの自館のページ) ├──▶ 保存フォルダのPDF → Extract From File(Extract From PDF) ├──▶ 前の週の掲載との比較 ▼ AI Agent ノード(Tools Agent)+ Anthropic Chat Model │ 掲載ごとに、道具を選んで使う │ ・正本の現在の値を引く ・正本の変更の履歴を引く │ ・表記の言い換えの一覧を引く │ Structured Output Parser で決まった形のJSONを返す ▼ 点検の表(スプレッドシート)→ Web販売課のチャットへ通知 ▼【人】確認・館への問い合わせ・各サイトの管理画面での修正
| 役割 | 想定する製品 | 代替候補 |
|---|---|---|
| ワークフロー | n8n | Make、Zapier、Power Automate |
| 生成AI | Claude API(n8n の Anthropic Chat Model ノード) | OpenAI API、Gemini API |
| 連携 | 楽天ウェブサービスの楽天トラベル施設情報API・空室検索API | 楽天トラベルのページを担当者が保存する |
新しく足すのは、n8n のワークフローと、正本の変更の履歴の列だけです。 館ごとの施設情報のスプレッドシートを、項目、現在の値、以前の値、変わった日の形に作り直します。
楽天トラベルは、楽天ウェブサービスの楽天トラベル施設情報API(HotelDetailSearch)で取ります。 公式のページでは、版は2026-07-31で、applicationId と accessKey の両方が要り、accessKey はヘッダかクエリで渡します。施設番号の hotelNo を渡し、responseType で返す量を small、middle(既定)、large から選びます。
返る項目は、点検の対象とよく重なります。 施設の特色(hotelSpecial)、アクセス、駐車場の情報(parkingInformation)、チェックインとチェックアウトの時刻(checkinTime、checkoutTime、lastCheckinTime)、客室と館内の設備、朝食と夕食の会場、お風呂の種類と泉質と効能(aboutBath)、注意事項(note)、キャンセルの規定(cancelPolicy)などです。詳細の情報や設備・規定の情報が返るのは large と読めるので、responseType は large にし、取れた項目を初回に目で確かめます。
プランの説明は、空室検索API(VacantHotelSearch)で取ります。 公式のページでは、hotelNo は1回に15件まで渡せ、プラン名(planName)、夕食・朝食の有無、プランの内容(planContents)などが返ります。planContents は販売の形によって返らないことがあり、中の項目はページに書かれていません。 初回に自館のプランで返り方を確かめます。
03どうやって実装するのか
処理の起点を決める
毎週月曜の朝8時に、Schedule Trigger で動かします。 Schedule Trigger はワークフローのタイムゾーンを使い、無ければインスタンスのタイムゾーンを使います。セルフホストの既定は America/New York なので、ワークフローのタイムゾーンを Asia/Tokyo にします。 保存して公開しないと動きません。
月曜にしているのは、館の変更が週末の運営の振り返りで決まることが多いからです。 金曜までに館から届いた変更を正本に入れておけば、月曜の点検で、まだ直していないサイトが拾われます。 担当者が保存するサイトのPDFは、前の週の金曜までに保存フォルダに入れます。
正本を変えたときにも動かします。 正本の値を直した担当者が、その館だけを対象にした実行を手で起こします。変更から次の月曜まで待つと、その間の予約客に古い記載を見せることになるからです。
入力データを集める
| データ | 中身 | 取得元 |
|---|---|---|
| 館と予約サイトの一覧 | 館、サイト、施設番号またはURL、取得の方法(API/取得/保存)、確認日 | スプレッドシート |
| 楽天トラベルの掲載 | 施設の特色、アクセス、駐車場、チェックイン・アウト、設備、お風呂、注意事項、キャンセルの規定、プラン名とプランの内容 | 施設情報API・空室検索API |
| ほかのサイトの掲載 | 施設の説明、設備、プランの説明、写真の説明文の文字 | 取得したページ/保存したPDF |
| 施設情報の正本 | 項目(大浴場の営業時間、朝食の時間、駐車場の台数と料金、子供料金、添い寝など)、現在の値、以前の値、変わった日 | スプレッドシート |
| 表記の言い換えの一覧 | 「23:00」「23時」「午後11時」のような同じ意味の書き方 | Web販売課が作る |
質を決めるのは、正本の「以前の値」と「変わった日」の列です。 これが無いと、掲載の値が正本と違うときに、誤入力なのか直し忘れなのかが分かりません。 直し忘れなら担当者がすぐ直せ、誤入力なら館に確かめます。
正本の項目は、予約客が困るものから並べます。 営業時間、休止中の設備、駐車場、子供料金と添い寝、チェックインの最終時刻、キャンセルの規定です。眺望や客室の広さのような、めったに変わらない項目は後回しにします。
写真の説明文は、文字だけを見ます。 画像そのものが今の館と合っているかは、この構成では見ません。「露天風呂付き客室」の写真の説明文に、休止中の設備が書かれていないかを見ます。
データの取得方法を決める
サイトごとに、取得の方法を3つに分けます。
| 取得の方法 | 使うサイト | 取り方 |
|---|---|---|
| API | 楽天トラベル | HTTP Request で施設情報API・空室検索APIを呼ぶ |
| 取得 | 利用条件と robots.txt で自館のページの取得が断られていないと確かめたサイト | HTTP Request で自館のページを取り、HTML ノードで本文を取り出す |
| 保存 | それ以外のサイト | 担当者がブラウザで自館のページをPDFで保存し、Extract From File の Extract From PDF で文字を取り出す |
2行目の「取得」は、担当者が利用条件を読んで決めます。 robots.txt は RFC 9309 が定めるクローラーへの依頼の書き方で、RFC 9309 自身が、これはアクセスの許可ではないと書いています。 robots.txt が許していても、サイトの利用条件が自動の取得を断っていれば「保存」にします。一覧の「確認日」の列に、利用条件を読んだ日を残します。
APIの呼び方には、2つの注意があります。 公式のページでは、短い時間に同じリクエストのURLへ大量にアクセスすると一定時間利用できなくなる場合があるとされ、上限を超えると HTTP 429 が返ります。6館の呼び出しは HTTP Request の Batching で間をあけて送ります。 空室検索APIは hotelNo を15件までまとめて渡せるので、6館なら1回で足ります。
取得するページは自館のページだけです。 他の館のページや検索結果の一覧は取りません。HTTP Request の Timeout と、Include Response Headers and Status を設定し、ステータスコードが200でないときは、その掲載を「未取得」にします。
AIへ渡す前に整形する
- 項目ごとに分ける … APIの応答は項目名ごとに、ページとPDFの文字は見出し(設備、駐車場、お風呂、プランの説明など)ごとに分けます
- 前の週と比べる … 同じ掲載の前の週の文字と比べ、変わった項目に印を付けます
- 表記をそろえる … 全角と半角、時刻の書き方(「23:00」「23時」)をそろえます。意味の言い換えはそろえず、エージェントに任せます
- プランを絞る … プランの説明は長いので、営業時間・食事の時間・子供・駐車場・キャンセルに触れる文だけを残します
- 正本を付ける … その館の正本の現在の値を、項目ごとに付けます
2番目で、担当者が直していないのに変わった項目は、エージェントに渡す前に別の一覧に出します。 予約サイトの側の変更か、館の誰かが管理画面で直したかのどちらかです。どちらにしても、Web販売課が知らないまま掲載が変わったことになります。
4番目で文を絞るのは、プランの説明に宣伝の文が多いからです。 全部を渡すと、エージェントが「贅沢なひととき」のような文まで正本と照らそうとします。
AIに処理させる
させるのは、掲載の項目ごとに正本と照らし、食い違いと古い記載を拾って、サイトごとの修正の依頼の下書きを作ることです。
| 手順 | エージェントがすること | 使う道具 |
|---|---|---|
| 1 | 掲載の項目ごとに、対応する正本の項目を選ぶ | get_master |
| 2 | 値が同じか、言い換えで同じかを見る | get_aliases |
| 3 | 違う値なら、正本の以前の値と一致するかを見る | get_history |
| 4 | 項目ごとに区分を付ける | なし |
| 5 | サイトごとに、修正の依頼の下書きを作る | なし |
区分は、次の5つです。
| 区分 | 意味 | 次の作業 |
|---|---|---|
match | 正本と同じ(言い換えを含む) | なし |
outdated | 正本の以前の値と一致する | 担当者がすぐ直す |
mismatch | 正本のどの時点の値とも違う | 館に確かめてから直す |
not_in_master | 掲載にあるが、正本に項目が無い | 正本に足すかを館に聞く |
missing | 正本にある大事な項目が掲載に無い | 載せるかを担当者が決める |
outdated と mismatch を分けるのが、この構成の中心です。 outdated は直し忘れなので館に聞かずに直せ、mismatch は誤入力か正本の誤りかが分からないので館に聞きます。
| させないこと | 理由 |
|---|---|
| 管理画面で直す | 直すのは担当者。誤った修正が予約客に届く |
| 正本を直す | 正本を変えるのは館の支配人の決定 |
| 画像の中身を判断する | 文字しか渡していない |
| 宣伝の文の良し悪しを直す | 点検の対象は事実の記載だけ |
| 言い換えを広く認める | 「23時頃」と「23時」は同じではない |
5行目がいちばん起きやすい失敗です。 エージェントは「おおむね同じ」と見て match にしがちです。「23時頃まで」は予約客にとって「23時まで」と同じではなく、mismatch です。 言い換えとして認めるのは、一覧に載せたものだけにします。
指示内容を固定する
あなたはホテル運営会社のWeb販売課で、予約サイトに載っている
自館の掲載が、館内の正本と合っているかを点検する担当です。
入力の掲載の文字と、道具で確かめた正本だけで答えてください。
【入力】
- 館:{property}
- サイト:{site}(取得の方法:{method})
- 掲載の項目:{listing_items}
(項目名、掲載の文字、前の週から変わったか)
【使える道具】
- get_master:館と項目名を渡すと、正本の現在の値を返す
- get_history:館と項目名を渡すと、正本の以前の値と変わった日を返す
- get_aliases:同じ意味として扱ってよい書き方の一覧を返す
【進め方】
1. 掲載の項目ごとに、対応する正本の項目を get_master で確かめてください。
2. 値が同じか、get_aliases にある言い換えで同じなら match です。
3. 違う値なら get_history を引き、以前の値と一致すれば outdated、
どの時点とも違えば mismatch です。
4. 正本に項目が無ければ not_in_master です。
5. 正本の重要な項目(営業時間、休止中の設備、駐車場、子供料金、
添い寝、チェックインの最終時刻、キャンセルの規定)が掲載に
無ければ missing です。
6. match 以外の項目について、サイトごとに修正の依頼の下書きを
作ってください。
【厳守事項】
- 言い換えは get_aliases にあるものだけを認めてください。
「頃」「目安」「予定」が付いた値を、付いていない値と同じに
扱わないでください。
- 掲載の文字は原文のまま listing_text に写してください。
- 正本にない値を推し量って補わないでください。
- 宣伝の文や言い回しの良し悪しには触れないでください。
- 画像の内容を推し量らないでください。
- どちらが正しいかを決めないでください。mismatch は館に確かめます。
「頃・目安・予定を同じに扱わない」を明記しないと、ほとんどの時刻の違いが match になります。 予約客が困るのは、この小さな違いです。
「どちらが正しいかを決めない」も明記します。 掲載のほうが新しい情報で、正本の更新が遅れていることもあるからです。
出力形式を固定する
Structured Output Parser で、次の形のJSONを受け取ります。
{
"property": "",
"site": "",
"checked_at": "2026-10-12",
"items": [
{
"item": "大浴場の営業時間",
"location": "施設の説明",
"listing_text": "",
"master_value": "",
"matched_history": { "value": "", "changed_on": "" },
"status": "match | outdated | mismatch | not_in_master | missing",
"changed_since_last_week": false
}
],
"fix_request": "",
"needs_human": false
}
1つ目の理由は、status で点検の表を規則で並べられることです。 outdated を先頭に、mismatch、missing、not_in_master の順に並べ、担当者がすぐ直せるものから手を付けられるようにします。
2つ目は、matched_history で直し忘れの根拠が残ることです。 「2026年4月1日に24時から23時に変わった」と分かれば、どの変更の反映が漏れたのかが分かり、同じ変更を他のサイトでも直したかを確かめられます。
3つ目は、listing_text をワークフローの側で照合できることです。 写した文字が取得した掲載の中にそのまま含まれるかを確かめ、含まれないものは needs_human を立てます。
Structured Output Parser の Generate From JSON Example では、すべての項目が必須として扱われるとされています。空のときは空文字や false を返させます。
システムへ連携する
| つなぎ先 | 方式 | 内容 |
|---|---|---|
| 楽天ウェブサービス | HTTP Request ノード | 施設情報APIと空室検索APIで掲載を取る |
| 取得してよいサイト | HTTP Request ノード+HTML ノード | 自館のページの本文を取る |
| 保存フォルダ | ファイルの読み取り+Extract From File | 担当者が保存したPDFの文字を取り出す |
| 正本・言い換えの一覧 | Google Sheets ノード(道具のサブワークフロー) | 現在の値、以前の値、言い換えを返す |
| Claude API | Anthropic Chat Model ノード | 照合、区分、修正の依頼の下書き |
| 点検の表 | Google Sheets ノード | 項目ごとに1行ずつ書く |
| Web販売課のチャット | n8n のチャットのノード | 館とサイトごとの outdated・mismatch の件数を知らせる |
道具は、Call n8n Workflow Tool でサブワークフローとして持たせます。 公式のページでは、道具の Description がいつ呼ぶかをエージェントに伝え、本番ではサブワークフローを公開しておく必要があるとされています。
予約サイトの管理画面には、つなぎません。 修正は担当者が行い、直したら点検の表の「直した日」の列を埋めます。翌週の点検で match になれば、直しが反映されたことが確かめられます。
人が確認する
人が見るのは、match 以外の項目と、needs_human が立った掲載です。
outdatedを直す …matched_historyを見て、直し忘れだと確かめたら、管理画面で直しますmismatchを館に聞く … 下書きの文面を使って館に確かめ、正しい値で直します。正本の誤りなら、館に正本を直してもらいますmissingを決める … 載せるかどうかを決めます。休止中の設備は載せる方向で考えます- 前の週から変わった項目を見る … 担当者が直していないのに変わったものは、誰が変えたかを確かめます
2番目で、館の返事を待つ間に忘れないように、点検の表に「館に確認中」の印を付けます。 印の付いたまま1週間が過ぎた項目は、翌週の通知の先頭に出します。
目標は、96件をならして1件10分です。 変更の多い館の掲載は長く、変わっていない掲載は数分で終わります。保存のサイトのPDFを保存する時間は、この10分に含めています。
例外に対処する
| 起きること | 対応 |
|---|---|
| APIが429を返す | 間をあけて取り直す。続けば翌日に回す |
| APIの鍵の不備で取れない | 実行を止め、担当者へ知らせる |
planContents が返らないプラン | プラン名だけで点検し、プランの説明は保存のPDFで見る |
| 取得したページの本文が空 | スクリプトで描かれたページ。そのサイトを「保存」に切り替える |
| 保存のPDFが届いていない | その掲載を「未点検」にし、担当者へ知らせる |
| 写した文字が掲載に無い | 区分を採らず、needs_human にする |
| 正本の項目が見つからない | not_in_master。正本に足すかを館に聞く |
| Claude API が応答しない | 前の週から変わった項目の一覧だけを出し、照合は次の実行で行う |
4行目は、最初の1か月でよく起きます。 取得のつもりだったサイトの多くが、ページの中身をスクリプトで描いています。取れないサイトを早めに「保存」に分けると、運用が安定します。
記録を残す
- 実行の日時、サイトごとの取得の方法と結果
- 掲載ごとの、取得した文字の全文と、前の週との差
- エージェントの入力、道具の呼び出しの記録、結果のJSONの全文、写しの照合の結果
- 担当者が直した日、館に確かめた結果、正本を直した記録
- 各サイトの利用条件を確かめた日
取得した文字の全文を残すのは、予約客から「サイトにこう書いてあった」と言われたときに、その日の掲載を確かめるためです。 Tools Agent の Return Intermediate Steps を有効にすると、どの道具を引いて区分を決めたかも残ります。
04実装レベルの3段階
半自動化で、第4章の①が大きく減ります。 担当者はページを開かずに、取得した文字と前の週からの変化を表で読めます。本格構成で②と③が確認の作業に変わり、この段階が本記事の想定です。 差が大きいのは、②の正本と見比べる作業が、項目の数だけ繰り返される手作業だからです。 段階を飛ばさないでください。 半自動化を1か月回すと、取得できないサイトと、正本に項目の無い記載が分かります。そこを片付けてからエージェントを足します。
05工数削減シミュレーション
導入後 96件 × 10分 ÷ 60 = 16 時間/月
自社条件で導入効果を整理したい方へ
このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。
06向いている企業・向いていない企業
- 複数の館を運営するホテル・旅館の会社で、各館が3〜5の予約サイトに載っており、大浴場やレストランの営業時間、駐車場、子供料金などの変更がサイトごとの管理画面への手入力で反映されている場合。改装や人手の事情で設備の休止や時間の変更が多い場合。予約客から「サイトの記載と違う」と言われることがある場合。
- 1館だけで、載っている予約サイトが1〜2つの場合(担当者が見れば足りる)。施設情報の正本が館内で決まっておらず、どれが正しいかを誰も言えない場合(先に正本を作る)。予約サイトの掲載をサイトコントローラーなどで一括して配信できていて、手入力の経路が無い場合。なお、予約サイトの管理画面での修正そのものと、予約客への説明・補償の判断は、この構成では代替できません。
07最小構成で試す方法
- 館を1つ選び、正本の重要な項目(営業時間、休止中の設備、駐車場、子供料金、添い寝、チェックインの最終時刻、キャンセルの規定)に以前の値と変わった日を書き足す
- その館の4つのサイトのページをPDFで保存する
- 手元のAIサービスに、正本とPDFを貼る
- 「掲載の項目ごとに正本と照らし、match・outdated・mismatch・not_in_master・missing に分けてください。『頃』『目安』の付いた値を同じに扱わないでください」と指示する
- 担当者が同じ4つのページを見て拾った違いと見比べる
1館は必ず試してください。 ワークフローを組む前に、「正本の書き方で、直し忘れと誤入力を分けられるか」を確かめます。
| 出てきた内容 | 判断 |
|---|---|
| 担当者と同じ違いが拾われた | ワークフローの構築に進む |
| 正本の以前の値が分からず outdated が出ない | 館に過去の変更を聞いて履歴を作る。構成は有効 |
| 「23時頃」を match にした | 指示の書き方で直る。言い換えの一覧を作る |
2行目が出ることは珍しくありません。 失敗ではなく、どちらが正しいかを毎回館に聞いていた理由が分かったということです。
あわせて、楽天ウェブサービスでアプリを登録し、施設情報APIで自館の情報がどの項目まで返るかを確かめます。 返らない項目は、楽天トラベルでも保存のPDFで補います。
08実装時につまずきやすいポイント
| 問題 | 対策 |
|---|---|
| 直し忘れと誤入力が分からない | 正本に以前の値と変わった日を持たせる |
| 「23時頃」が「23時」と同じ扱いになる | 言い換えは一覧にあるものだけを認める |
| 設備や規定の項目が返らない | responseType を large にし、返る項目を初回に確かめる |
| プランの説明が返らない | planContents は販売の形で返らないことがある。保存のPDFで補う |
| APIが429を返す | 間をあけて送り、空室検索は hotelNo をまとめる |
| 取得したページの本文が空 | スクリプトで描かれたページ。「保存」に切り替える |
| 自動の取得を断っているサイトを取る | 利用条件を読み、取得の方法の列で止める |
| 宣伝の文まで照合する | プランの説明は、関わりのある文だけに絞る |
| 誰も直していないのに掲載が変わる | 前の週との差を別の一覧に出す |
| 館への確認が返ってこない | 「館に確認中」の印を付け、1週間で通知の先頭に出す |
上の2行が、この構成の中心です。 どちらも正本の書き方と言い換えの決め方の問題で、エージェントの賢さとは関係がありません。
09セキュリティ・AIガバナンス上の注意点
この構成で扱うデータ: 予約サイトに公開されている自館の掲載と、館内の施設情報の正本、変更の履歴、館とのやりとり、楽天ウェブサービスの鍵です。予約客の個人情報は扱いません。
- 予約客の情報を混ぜない … 点検に使うのは掲載と正本だけです。口コミや問い合わせの文は入力に入れません
- 各サイトの利用条件を守る … 取得の方法をサイトごとに決め、自動の取得を断っているサイトは担当者が保存します。 取得するのは自館のページだけです
- APIの鍵を守る …
accessKeyは n8n の認証情報に置き、ワークフローの中に書き込みません - 管理画面の操作は人が行う … エージェントの下書きをそのまま入力しません。誤った修正は、予約客に直接届きます
- 正本を変える権限を分ける … 正本はWeb販売課が勝手に直さず、館の支配人の決定で直します
誤りが起きた場合のリスクは、古い記載を見落とすことと、正しい掲載を誤った値に直すことの2つです。 前者は毎週の全件の点検で、後者は mismatch を館に確かめてから直すことで防ぎます。
10まず何から始めるか
1週目:正本の作り直しを始める
1館を選び、重要な項目に以前の値と変わった日を書き足します。この1年の変更から書きます。
2週目:1館で試す
その館の4つのサイトのページをPDFで保存し、手元のAIサービスで正本と照らさせます。「頃」「目安」の付いた値を同じに扱っていないかを最優先で見ます。
3週目:取得の方法を決める
4つのサイトの利用条件を読み、取得の方法(API/取得/保存)を一覧に書きます。楽天ウェブサービスでアプリを登録し、施設情報APIと空室検索APIで返る項目を確かめます。
4週目:取得と前の週との比較をつなぐ
n8n で掲載を取り、前の週から変わった項目を表に書き出すところまで作ります。この時点ではエージェントを入れず、取れない掲載が無いかを見ます。
2か月目: エージェントを足し、区分と修正の依頼の下書きを表に書きます。残りの5館の正本を順に作り直します。3か月目以降: 1件30分が何分になったかを実測し、outdated の件数が0の週が続いた時点で、この構成は完成です。
11関連ユースケース
12この仕組みを理解するための記事
13技術仕様の確認日・参考情報
| 確認した内容 | 情報源 | 確認日 |
|---|---|---|
施設情報APIの版(2026-07-31)とURL、applicationId と accessKey が要ること、hotelNo、responseType(small/middle/large)、返る項目(施設の特色、アクセス、駐車場、チェックイン・アウトの時刻、設備、お風呂、注意事項、キャンセルの規定)、短時間の大量アクセスと429 | 楽天ウェブサービス: 楽天トラベル施設情報API | 2026-10-12 |
空室検索APIの hotelNo が15件まで、プラン名・食事の有無・planContents(販売の形で返らないことがある)、429 | 楽天ウェブサービス: 楽天トラベル空室検索API | 2026-10-12 |
| robots.txt の位置づけと、アクセスの許可ではないこと | RFC 9309: Robots Exclusion Protocol | 2026-10-12 |
| Batching、Timeout、Include Response Headers and Status | n8n Docs: HTTP Request | 2026-10-12 |
| Extract HTML Content の CSS Selector と Return Value | n8n Docs: HTML | 2026-10-12 |
| Extract From PDF の操作があること | n8n Docs: Extract From File | 2026-10-12 |
| タイムゾーンの扱いとセルフホストの既定、保存と公開が要ること | n8n Docs: Schedule Trigger | 2026-10-12 |
| Return Intermediate Steps | n8n Docs: Tools Agent | 2026-10-12 |
| 道具の Description の役割と、サブワークフローの公開が要ること | n8n Docs: Call n8n Workflow Tool | 2026-10-12 |
| 例から作ったスキーマは全項目が必須 | n8n Docs: Structured Output Parser | 2026-10-12 |
予約サイトの掲載の修正と、予約客への説明や補償の判断は、Web販売課と館で行ってください。 本記事は上記の公式ページで確認できた範囲だけを扱っています。楽天トラベル以外の予約サイトの利用条件は、サイトごとに確かめてください。
実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。
自社の業務に使えるAI活用候補を整理します
このユースケース(UC-1269)についてのご相談はこちらから。
