Media > AI活用ユースケース > マーケティング > 自社サイトの古い記載と社内の正本との食い違いを毎月点検して、ページ担当者への修正依頼にまとめる

自社サイトの古い記載と社内の正本との食い違いを毎月点検して、ページ担当者への修正依頼にまとめる

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

自社サイトのページを毎月決まった本数ずつ巡回し、終わったキャンペーン、古い料金や営業時間、移転前の住所、提供を終えた製品名、切れたリンクを見つけて、ページ担当者ごとの修正依頼の一覧にします。修正そのものは担当者がCMSで行います。

サマリー
利用ツール
ChatGPT/Claude/Gemini/Make/n8n/Power Automate/Zapier
対象業界
IT・SaaS/不動産/宿泊/小売/飲食
対象部門
マーケティング/総務
対象業務
内容確認・チェック/分類・仕分け
主な課題
人手が足りない/期限・対応漏れが起きる/確認ミスが多い
AIで行う処理
エージェント
主な効果
品質標準化/工数削減/機会損失防止
導入難易度
★★★☆☆
実装レベル
半自動化
費用感
ノーコード連携(中)
人間の確認
条件付き
現在工数
40h/月
AI導入後
12h/月
想定削減
70%
年間削減
336h
モデル条件による試算値です。実在企業の実績ではありません。

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

導入前(Before)
  1. 店舗やコールセンターから「サイトの料金が違う」と連絡が来る
  2. Web担当が該当ページを開き、どこが古いかを確かめる
  3. 総務や事業部に、今の正しい値を問い合わせる
  4. 同じ古い値が他のページにも無いか、サイト内検索で探す
  5. 見つかったページの担当者を、CMSの作成者欄や過去のやり取りから探す
  6. 担当者にメールやチャットで修正を依頼する
  7. 修正されたかを、後日ページを開いて確かめる(しないこともある)
  8. 点検の担当者が時間を取れた月だけ、主要ページを上から順に読む
導入後(After)
  1. 自動毎月1日の朝、サイトマップから全ページのURLと最終更新日を取り込む
  2. 自動今月の点検対象200ページを選ぶ(重要ページ+割り当て分)
  3. 自動各ページの本文を取得し、ヘッダー・フッター・メニューを除いて本文だけにする
  4. 自動本文から金額・日付・電話番号・住所・製品名の候補を機械的に拾い、関係する正本の行を引く
  5. 自動本文内のリンクの行き先を確かめ、切れているものを記録する
  6. 【AI】 本文と正本を照らし合わせ、食い違いの箇所・種類・修正案を出す
  7. 自動ページ担当者ごとに修正依頼の一覧を作り、Web担当へ通知する
  8. Web担当が指摘を確かめ、誤検出を外してから担当者へ依頼する
  9. ページ担当者がCMSで修正し、一覧に「修正済み」と入れる
  10. 自動翌月、修正済みのページを再取得して、直っているかを確かめる
各工程の詳しい説明を読む
  1. 店舗やコールセンターから「サイトの料金が違う」と連絡が来る
  2. Web担当が該当ページを開き、どこが古いかを確かめる
  3. 総務や事業部に、今の正しい値を問い合わせる
  4. 同じ古い値が他のページにも無いか、サイト内検索で探す
  5. 見つかったページの担当者を、CMSの作成者欄や過去のやり取りから探す
  6. 担当者にメールやチャットで修正を依頼する
  7. 修正されたかを、後日ページを開いて確かめる(しないこともある)
  8. 点検の担当者が時間を取れた月だけ、主要ページを上から順に読む

問題は6つあります。

(a)気づくのがお客様の指摘の後になる。 古い料金を見て来店したお客様に、店頭で違う金額を伝えることになります。苦情になってから直すため、直す前に信用が削られています。

(b)正本の変更がサイトに届かない。 料金改定や店舗移転は社内で通知されますが、「サイトのどのページに書いてあるか」までは誰も調べません。 改定のたびに、古い値のページが少しずつ増えます。

(c)サイト内検索では見つからない書き方がある。 「9,800円」と「9800円」、「月額」と「月々」、住所の「1丁目2番3号」と「1-2-3」は、検索では別物です。1つ直して安心すると、書き方の違う残りが残ります。

(d)画像やPDFの中の記載は検索できない。 バナー画像の中の「期間限定」や、店舗紹介に貼られた古いチラシのPDFは、開いて目で見るしかありません。

(e)ページの担当者が分からない。 作成者が異動していたり、外部の制作会社が作っていたりします。依頼先を探すだけで、修正より時間がかかることがあります。

(f)上から順に読む点検は、途中で止まる。 1,100ページを通読する時間はありません。毎回トップページ付近だけが点検され、奥のページは何年も誰も開きません。

  1. 【自動】 毎月1日の朝、サイトマップから全ページのURLと最終更新日を取り込む
  2. 【自動】 今月の点検対象200ページを選ぶ(重要ページ+割り当て分)
  3. 【自動】 各ページの本文を取得し、ヘッダー・フッター・メニューを除いて本文だけにする
  4. 【自動】 本文から金額・日付・電話番号・住所・製品名の候補を機械的に拾い、関係する正本の行を引く
  5. 【自動】 本文内のリンクの行き先を確かめ、切れているものを記録する
  6. 【AI】 本文と正本を照らし合わせ、食い違いの箇所・種類・修正案を出す
  7. 【自動】 ページ担当者ごとに修正依頼の一覧を作り、Web担当へ通知する
  8. 【人】 Web担当が指摘を確かめ、誤検出を外してから担当者へ依頼する
  9. 【人】 ページ担当者がCMSで修正し、一覧に「修正済み」と入れる
  10. 【自動】 翌月、修正済みのページを再取得して、直っているかを確かめる

自動化されるのは「対象を選ぶ」「本文を取る」「正本を引く」「リンクを確かめる」「食い違いを探す」「担当者別に並べる」の6つです。残るのは、指摘が本当に誤りかを判断することと、ページを直すことです。

CMSへの自動書き込みはしません。 料金の書き換え1つでも、注記の文言や税込・税抜の表記、キャンペーン終了後に残すべき説明など、周りの文章と一緒に直す必要があります。AIが示すのは修正案までで、公開ページを変えるのは人です。

正本の側も直しません。 ページのほうが新しく、正本の更新が漏れていることもあります。その場合は正本の持ち主(総務や事業部)へ確認を回します。

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

構成図
社内の正本(Google スプレッドシート)
  料金表 / 店舗・拠点マスタ / 製品の提供状況 / キャンペーン実施期間 / ページ担当者表
自社サイト(sitemap.xml + 各ページ)
   │
   ▼【トリガー】毎月1日 7:00(Schedule Trigger)
n8n のワークフロー
   │
   ├──▶ HTTP Request で sitemap.xml を取得 → XML ノードでJSONに変換
   │
   ├──▶ 今月の点検対象200ページを選ぶ(Code ノード)
   │
   ├──▶ HTTP Request で各ページを取得(間隔を空けて順に)
   │       │
   │       ├──▶ HTML ノードで本文だけを抽出
   │       ├──▶ Code ノードで金額・日付・電話・住所・製品名を拾い、正本の行を引く
   │       ├──▶ 本文内リンクの行き先を HTTP Request で確認
   │       └──▶ Claude API ── 食い違いの箇所・種類・修正案(JSON)
   │
   ├──▶ ページ担当者表と突き合わせて依頼先を決める
   │
   └──▶ 修正依頼の一覧(Google スプレッドシート)へ追記 → Slack で通知
   │
   ▼
Web担当が確認して依頼 ──【人】
   │
   ▼
ページ担当者がCMSで修正 ──【人】 → 翌月に再確認
役割想定する製品代替候補
ワークフローn8nMake、Zapier、Power Automate
生成AIClaude APIOpenAI API、Gemini API
集計Google スプレッドシートExcel、Airtable
連携SlackMicrosoft Teams、メール
正本の保管Google スプレッドシート基幹システム、店舗管理システム
CMS既存のCMSWordPress、各社の製品

n8n を置いているのは、1回の実行で数百ページを順に取得し、その途中で表の参照とAIの呼び出しを挟む処理を、画面上で組めるためです。 Schedule Trigger ノードは秒・分・時・日・週・月の間隔か、cron式で起動を指定できます。月の間隔では、起動する日(1〜31)と時・分を決めます。31日のように、その日が無い月は起動しないと公式の説明にあるため、1日を選びます。

ページの取得には HTTP Request ノードを使います。応答の形式は「Autodetect」「File」「JSON」「Text」から選べ、「Items per Batch」と「Batch Interval」で、まとめて送る件数と間隔(ミリ秒)を決められます。 自社サイトでも、一度に200ページを叩くとサーバーの防御機能に止められることがあるため、この間隔を使います。

本文の抽出は HTML ノードの「Extract HTML Content」で行います。CSSセレクタで要素を選び、テキストで取り出し、「Skip Selectors」でメニューやフッターを除けます。 サイトマップは XML ノードの「XML to JSON」で、URLの一覧に変えます。

Make でも同じ流れは組めます。 既にMakeやPower Automateを使っているなら、そちらで構いません。この構成で結果を左右するのは、ツールより「正本がどこまで整っているか」です。

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

Step1

処理の起点を決める

毎月1日の朝7時を起点にします。Schedule Trigger の月の間隔で、Day of Month を1、Hour を7、Minute を0にします。

タイムゾーンを必ず確かめてください。 Schedule Trigger は、ワークフローかインスタンスのタイムゾーン設定に従います。セルフホスト版の既定は America/New_York です。そのままだと、日本時間の1日の夜に動きます。 ワークフローの設定で Asia/Tokyo を指定します。

ワークフローは保存して公開(有効化)しないと、スケジュールでは動きません。 作っただけで安心して、1か月後に何も出ていないことに気づく、という取りこぼしが起きやすい部分です。

もう1つの起点として、正本が変わったときの臨時点検を置きます。料金表の改定や店舗の移転が決まったら、Web担当が手動で「旧い値の全ページ検索」を走らせます。これはAIを使わず、旧い値(「9,800円」「〇〇町1-2-3」)とその書き換え(「9800円」「1丁目2番3号」)を文字列で全ページから探す処理です。月次の割り当てを待つと、古い料金が最長で6か月残るため、この経路だけは別に作ります。

Step2

入力データを集める

データ中身取得元
ページの一覧URL、最終更新日(lastmod)sitemap.xml
ページの本文ヘッダー・フッター・メニューを除いた本文のテキスト、本文内のリンク公開ページ
料金表サービス名、料金、税込・税抜、適用開始日、旧料金と終了日料金表のスプレッドシート
店舗・拠点マスタ店舗名、住所、電話番号、営業時間、定休日、移転・閉店日と旧住所総務の店舗マスタ
製品の提供状況製品名、提供状況(提供中/提供終了/名称変更)、終了日、後継製品名事業部の一覧
キャンペーン実施期間キャンペーン名、開始日、終了日、対象ページのURLマーケティング部の一覧
ページ担当者表URLの階層ごとの担当部署と担当者Web担当が作る表
前回の点検結果前回の指摘、修正の状況修正依頼の一覧

旧い値を正本に残しておくことが、この構成の要です。 料金表に「今の料金」しか無いと、ページに書かれた「9,800円」が旧料金なのか、別のサービスの料金なのか区別できません。旧料金と終了日、旧住所と移転日の列を正本に足してください。 正本の持ち主にとっても手間は数分です。

ページ担当者表は最初に作る必要があります。 /shop/ 以下は店舗運営部、/column/ 以下はマーケティング部、のようにURLの階層で決めると、1,100ページでも表は30行程度に収まります。

Step3

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

ページの一覧: HTTP Request ノードで sitemap.xml を取得し、XML ノードの XML to JSON で変換します。サイトマップが複数に分かれている(サイトマップの目次がある)場合は、目次を読んでから各サイトマップを取り直します。 CMSのプラグインが作るサイトマップでは、ページ種類ごとに分かれていることが多いためです。

今月の対象の選び方: Code ノードで決めます。

  • 重要ページ(トップ、料金、店舗一覧、会社概要、よくある質問など20本)は毎月
  • 残りは、URLを6つの組に分け(URLの文字列から番号を作り、6で割った余り)、月ごとに1組ずつ
  • 前回の点検から lastmod が新しくなったページは、組に関係なく今月に回す

3つ目で、書き換えた直後のページの取りこぼしが減ります。 担当者が料金だけ直して、注記を古いまま残す、ということが起こるためです。

本文の取得: HTTP Request ノードで取得します。Items per Batch を1、Batch Interval を2,000ミリ秒程度にし、順に取ります。「Include Response Headers and Status」をオンにして、ステータスコードも受け取ります。 「Never Error」をオンにすると、404や500が返ってもワークフローが止まらず、ステータスを見て「ページが消えている」という指摘に回せます。

自社のサーバーでも、事前に情報システムや制作会社へ連絡してください。 不正アクセスの防御機能が、巡回を攻撃と見なして止めることがあります。取得元の固定IPを許可リストに入れてもらうのが確実です。

本文の抽出: HTML ノードの Extract HTML Content で、本文の要素(mainarticle、CMSのテーマで決まるクラス名)をCSSセレクタで指定します。Skip Selectors に nav, footer, .sidebar, .related-posts のようにメニューや関連記事の枠を入れます。「Clean Up Text」で余分な空白を詰めます。

ヘッダーとフッターを除く理由は、同じ指摘が1,100回出るのを防ぐためです。 フッターの住所が古ければ、それは全ページに出ます。共通部品は、本文とは別に1回だけ点検します。

画像とPDF: 本文内の画像の代替テキストと、PDFへのリンクは拾いますが、中身は読みません。 「画像やPDFの中は未点検」と記録し、人が見る一覧に回します。

Step4

AIへ渡す前に整形する

  1. 本文の長さの確認 … 抽出した本文が極端に短い(300字未満など)ページは、セレクタが合っていないか、JavaScriptで中身を描くページです。AIに渡さず data_gaps に入れます
  2. 表記の正規化 … 全角数字、カンマの有無、「円」と「¥」、電話番号のハイフンを、照合用にそろえます。表示用には元の文字列を残します
  3. 候補の抽出 … Code ノードの正規表現で、金額、日付(「2025年3月31日まで」「今春」)、電話番号、郵便番号と住所、製品名の辞書に当たる語を拾います
  4. 正本の行を引く … 拾った値に関係する正本の行だけを取り出します。店舗ページなら、その店舗の行と、旧住所を持つ行。正本を丸ごとAIに渡さないためです
  5. リンクの確認 … 本文内のリンクを重複を除いて集め、HEADで状態を確かめます。404・410、別ドメインへの転送、社外リンクのタイムアウトを記録します。同じ行き先は1回の実行で1度だけ確かめます
  6. 前回の指摘との突き合わせ … 前回「修正済み」とされた箇所の文字列が、まだ本文に残っていないかを先に見ます

リンクの確認はAIにさせません。 切れているかどうかはステータスコードで決まる事実で、判断の余地がありません。

Step5

AIに処理させる

計算処理にさせること:

処理内容
対象ページの選定重要ページ、割り当ての組、lastmod の新しいページ
候補の抽出金額・日付・電話・住所・製品名を正規表現と辞書で拾う
正本の行の抽出拾った値や店舗名に関係する行だけを引く
リンクの状態ステータスコード、転送先
日付の経過本文中の日付と、今日との比較

生成AI(Claude API)にさせること:

処理内容
食い違いの特定本文のどの文が、正本のどの行と合わないか
種類の判定終了したキャンペーン/料金の不一致/営業時間の不一致/住所・電話の不一致/提供終了の製品/旧名称/期限切れの時期表現/正本に無い値
修正案本文の該当箇所を、正本に合わせて最小限に直した文
重要度お客様の行動に直結するか(料金・住所・営業時間は高い)
候補の読み分け拾った「9,800円」が、旧料金なのか、比較のための記載なのか、別サービスの料金なのか

5つ目が、機械的な文字列照合では出来ない部分です。 「以前は9,800円でしたが、現在は7,800円です」という文は、旧料金を含んでいても正しい記載です。文脈を読んで、誤りと正しい言及を分けることを、AIに任せます。

「今春オープン予定」「来月から」のような相対的な時期表現も、AIに見させます。 書いた時点では正しくても、2年後には誤りです。ページの最終更新日と今日を渡して、その表現がもう古いかを判断させます。

文章の良し悪しや、言い回しの改善はさせません。 指摘が文体の話で埋まると、事実の誤りが埋もれます。「校正」は、事実の食い違いを直す範囲に限ります。

Step6

指示内容を固定する

あなたは自社サイトの記載内容を点検する担当者です。
下のページ本文を、社内の正本と照らし合わせ、
お客様に誤った情報を伝えている箇所を見つけてください。

【厳守事項】
- 指摘は、ページ本文にそのまま書かれている文字列を page_quote に引用してください。
  引用は本文から一字一句そのまま写し、要約や言い換えをしないでください。
- 正本の値は、下に与えた正本の行からそのまま写してください。
  与えられていない正本の値を推測で書かないでください。
- 本文の値が正本のどの行とも対応しない場合は、誤りと決めつけず、
  type を "正本に無い値" にしてください。
- 旧い値に触れていても、正しい文脈の記載は指摘しないでください。
  例:「以前は9,800円でしたが、現在は7,800円です」は正しい記載です。
- 「今春」「来月から」「新しく」のような時期の表現は、
  下に与えた最終更新日と今日の日付を比べ、すでに古くなっている場合だけ指摘してください。
- 文体、言い回し、誤字の直しは指摘しないでください。事実の食い違いだけを扱います。
- suggested_fix は、page_quote を正本に合わせて最小限に書き換えた文にしてください。
  周りの文章の書き直しや、新しい説明の追加をしないでください。
- 食い違いが無ければ findings を空にし、no_issue を true にしてください。
  **無理に指摘を作らないでください。大半のページは問題がありません。**
- 本文に書かれていない内容(画像やPDFの中身)について推測しないでください。

【指摘の種類】
終了したキャンペーン ... 実施期間表で終了日を過ぎたキャンペーンを、実施中として案内している
料金の不一致 ... 料金表の現行料金と違う金額を、現在の料金として書いている
営業時間の不一致 ... 店舗マスタと違う営業時間・定休日を書いている
住所・電話の不一致 ... 店舗マスタの現住所・電話番号と違う。移転前の旧住所を含む
提供終了の製品 ... 提供状況が「提供終了」の製品を、申し込める・買えるものとして書いている
旧名称 ... 名称変更前の製品名・店舗名・部署名を使っている
期限切れの時期表現 ... 相対的な時期の表現が、今日の時点で古くなっている
正本に無い値 ... 金額・住所などが正本のどの行とも対応せず、正誤を決められない

【重要度】
high ... 料金、住所、電話、営業時間、終了したキャンペーンの申込案内
medium ... 提供終了の製品、旧名称
low ... 期限切れの時期表現、正本に無い値

【今日の日付】{today}
【ページのURL】{url}
【ページの最終更新日】{lastmod}

【ページ本文】
{page_text}

【本文から機械的に拾った候補】
{candidates}

【関係する正本の行】
{master_rows}

「一字一句そのまま引用」の1行が重要です。 引用が本文と一致すれば、後段の Code ノードで「本文にその文字列が含まれるか」を機械的に確かめられます。一致しない引用は、AIが作った文である可能性が高いので、一覧に出す前に外します。

「正しい文脈の記載は指摘しない」も必須です。 料金改定のお知らせ記事には、旧料金が必ず書かれています。これを全部指摘すると、改定のたびにお知らせのページが誤りとして並び、担当者は一覧を読まなくなります。

「正本に無い値」という逃げ道を用意してください。 これが無いと、AIは本文の金額を、正本のいちばん近い行に無理に結び付けて「料金の不一致」と言います。正誤が決められないものは、決められないと言わせるほうが、確認は速くなります。

お知らせ記事の扱いを先に決めてください。 「2024年4月より料金を改定します」というお知らせは、当時の事実を書いた記録です。過去の日付で公開されたお知らせを今の正本と比べると、ほぼすべてが食い違いになります。

扱いは3つに分かれます。

扱い内容向いている場合
点検から外す/news/ 以下を対象にしないお知らせが日付入りで、古いことが一目で分かるサイト
期限の案内だけ見る「お申し込みはこちら」のような、今も操作を促す箇所だけを指摘する古いお知らせから申込フォームへリンクしているサイト
注記を促す1年以上前のお知らせに「掲載時点の情報です」の注記が無いものを指摘する検索から古いお知らせに来る人が多いサイト

2つ目をおすすめします。 古いお知らせそのものは誤りではありませんが、終わったキャンペーンの申込ボタンが生きていることは、明らかな誤りです。 お知らせのページでは、次の指示をプロンプトに足します。

【厳守事項(お知らせ記事の場合)】
- このページは {published_date} に公開されたお知らせです。
  公開日時点の事実として書かれた記載は指摘しないでください。
- 今日の時点で、読者に申込・来店・購入を促している箇所
  (リンク、ボタン、「お申し込みはこちら」などの文)だけを点検してください。
Step7

出力形式を固定する

{
  "page_url": "",
  "checked_at": "",
  "no_issue": false,
  "findings": [
    {
      "type": "終了したキャンペーン | 料金の不一致 | 営業時間の不一致 | 住所・電話の不一致 | 提供終了の製品 | 旧名称 | 期限切れの時期表現 | 正本に無い値",
      "page_quote": "",
      "master_value": "",
      "master_source": "",
      "suggested_fix": "",
      "severity": "high | medium | low",
      "reason": ""
    }
  ],
  "data_gaps": []
}

Claude API では、output_config.formattype: "json_schema" とスキーマを渡すと、応答をスキーマに沿った形に制約できます。typeseverityenum で固定します。公式の説明では、文字列の長さの制約(minLength maxLength)や数値の範囲の制約はスキーマでは使えません。 page_quote が空でないこと、長すぎないことは、後段の Code ノードで確かめます。

master_source に、正本のどの表のどの行かを入れさせます。 「料金表 行18(スタンダードプラン、2025年10月改定)」のように書かれていれば、Web担当は正本を開かずに確認できます。

suggested_fix は、ページ担当者がそのままCMSに貼れる文にします。 担当者の多くはWeb担当ではなく、店舗運営や事業部の人です。「料金が違います」とだけ言われても、どう直せばよいかで手が止まります。

data_gaps には、点検できなかった範囲を入れます。「本文が300字未満でJavaScript描画の可能性」「画像内の文字は未点検」「PDF 2件は未点検」といった内容です。これが多いページは、人が目で見る一覧に回します。

Step8

システムへ連携する

修正依頼の一覧をスプレッドシートに作ります。1行を1つの指摘にし、ページ担当者の部署ごとにフィルタで見られるようにします。

中身
点検日 / URL / ページ名基本情報
担当部署 / 担当者ページ担当者表から
種類 / 重要度AIの判定
本文の該当箇所page_quote
正しい値 / 出典master_value / master_source
修正案suggested_fix
Web担当の確認人が入れる(依頼する/誤検出/正本側を直す)
修正の状況担当者が入れる(未着手/修正済み/対応しない)
翌月の再確認自動(直っている/残っている)

Web担当の確認を通ったものだけを、担当者へ依頼します。 Slack への通知は、確認が済んだ時点で担当部署のチャンネルへ、件数と一覧へのリンクだけを送ります。AIの出力をそのまま担当者に流さないでください。 誤検出が混ざった依頼を2回受け取ると、担当者は3回目から開きません。

共通部品(フッター・ヘッダー・サイドバー)の指摘は、別のシートにまとめます。 依頼先はページ担当者ではなく、CMSのテーマを管理する人か制作会社です。1か所直せば全ページが直るため、優先度は最上位に置きます。

同じ誤りが複数ページにある場合は、1つの依頼にまとめます。 旧住所が12ページに残っていれば、12行を1件の依頼にし、URLを並べます。担当者は1回の作業で全部を直せます。

CMSへの書き込みや、ページの非公開化は自動で行いません。 終わったキャンペーンのページも、非公開にするか、終了の注記を入れて残すかは、検索からの流入や問い合わせの扱いによって変わります。

Step9

人が確認する

severity が high の指摘と、正本に無い値 を、Web担当が確認します。

月200ページのうち、指摘が付くのは2〜3割程度のはずです。半分以上に付くなら、プロンプトか正本のどちらかに問題があります。

確認の深さを分けます。

  • 終了したキャンペーンの申込案内 … お客様が申し込んでしまう。その日のうちに依頼する
  • 料金・住所・電話・営業時間 … 正本の行と見比べて、その週のうちに依頼する
  • 正本に無い値 … 正本の持ち主に確認する。正本の漏れであることが多い
  • 提供終了の製品・旧名称 … まとめて月内に依頼する
  • 期限切れの時期表現 … ページ担当者の判断に任せる

確認を速くするための設計が効きます。

  • 本文の該当箇所と正本の値を、横に並べて表示する
  • ページのURLを開くと、該当箇所へ飛べるようにする(URLの末尾に文字列の位置を付ける)
  • 前回「誤検出」とした指摘と同じものには、印を付ける
  • 共通部品の指摘を最上部に固定する

3つ目が効きます。 誤検出として外した理由を一覧に残しておくと、翌月同じ指摘が出たときに一目で外せます。同じ誤検出が3か月続くなら、プロンプトに例外として書き足します。

Step10

例外に対処する

起きること対応
ページが404・410を返す「ページが消えている」として記録し、サイトマップから外すよう担当者へ依頼する
サーバーの防御機能に止められる取得を止め、残りを翌日に回す。取得元のIPを許可リストに入れてもらう
本文が極端に短いJavaScriptで描くページの可能性。data_gaps に入れ、人が見る
料金が画像の中にしか無い点検できない。「画像内は未点検」として人が見る一覧へ
正本の側が古い「正本側を直す」として正本の持ち主へ回す。ページは直させない
同じ古い住所が多数のページにある1件の依頼にまとめ、URLを並べる
フッターなど共通部品の誤り別のシートで、テーマの管理者へ依頼する
AIの引用が本文と一致しない一覧に出さずに捨てる。件数だけ記録する
担当者が決まっていないページ未割り当てとして集め、Web担当の上長へ送る
修正済みとしたのに翌月も残っている「残っている」として再依頼する。2回続いたら担当部署の責任者へ
店舗ごとに料金が違う正本に店舗別の列を持たせ、店舗ページではその店舗の行を渡す
会員向けなどログインが必要なページ対象から外す。点検が要るなら別の方法で
Step11

記録を残す

この記録は、古い記載がどこから生まれているかを知る材料になります。

  • 月ごとの点検対象、点検したページ数、指摘の件数と種類
  • 各指摘の Web担当の判断(依頼した/誤検出/正本側を直す)と理由
  • 修正までにかかった日数、翌月の再確認の結果
  • data_gaps の内容と、点検できなかったページの一覧
  • 正本が変わった日と、臨時点検で見つかったページ数
  • AIの引用が本文と一致しなかった件数

「正本が変わってから、サイトが直るまでの日数」を必ず残してください。 料金改定から全ページが直るまで何日かかったかが分かると、改定の手順に「サイトの臨時点検」を組み込む根拠になります。

種類ごとの件数の推移も見てください。 「終了したキャンペーン」が毎月多いなら、キャンペーンのページを作るときに終了日を決めて、終了後の扱いまで先に決める運用に変えるべきです。点検で直すより、作るときに防ぐほうが安く済みます。

04実装レベルの3段階

最小構成:本文と正本の行をチャット画面に貼り付けて、食い違いを出させる / 照合のみ
半自動化:月次で対象を選び、本文取得・候補抽出・リンク確認・照合・一覧作成まで / 巡回と照合
本格構成:上記+正本の変更を起点にした臨時点検+翌月の再確認+共通部品の点検 / 修正の確認まで

半自動化の時点で、12分が5分程度になります。 読む・照合する・リンクを開くが消えるためです。本格構成で3.6分になりますが、減るのは再確認と依頼先を探す手間です。 正本の変更を起点にした臨時点検は、半自動化の段階から入れてください。 月次の割り当てを待つと、料金改定から6か月経ってようやく奥のページが点検されます。この経路は文字列の検索だけで作れ、AIの費用もかかりません。 本格構成の「翌月の再確認」には、時間削減とは別の価値があります。 依頼したのに直っていないページが部署ごとに見えるため、どの部署でページの管理が止まっているかが分かります。

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

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

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

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

AI活用について相談する

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

向いている
  1. 自社サイトのページが500本以上あり、店舗・拠点・製品・キャンペーンのページを複数の部署が作ってきた企業。料金や営業時間、住所を変えたときにサイトのどこを直せばよいかが分からず、問い合わせや来店で古い記載に気づくことがある場合。料金表や店舗情報を表計算やデータベースで正本として持っている場合。
向いていない
  1. サイトが数十ページで、担当者が全ページの中身を把握している場合。料金や店舗情報の正本が社内に無く、サイトの記載そのものが正本になっている場合(まず正本を作るほうが先)。料金や住所をCMSの共通部品から差し込んでおり、ページ本文に手書きしていない場合。

07最小構成で試す方法

  1. 重要ページ10本と、2〜3年前に作ったページ20本の、計30ページを選ぶ
  2. 料金表と店舗マスタのうち、その30ページに関係する行を書き出す(旧料金・旧住所の行も)
  3. 各ページの本文を、ブラウザで開いてメニューやフッターを除いてコピーする
  4. 生成AIのチャット画面に、上記のプロンプトと本文・正本の行を貼り付ける
  5. 出た指摘を、Web担当が1件ずつ本文と正本で確かめる

見るのは次の3点です。

見る点判断
指摘のうち、本当に誤りだった割合7割を下回るなら、正本の行の渡し方か、プロンプトの例外を見直す
人が読んで気づいていた誤りを、AIが拾えたか取りこぼしの有無。拾えないなら正本に旧い値が無い可能性
引用が本文と一字一句一致しているか一致しないものが多ければ、機械での検証を必ず入れる

2つ目を必ず確かめてください。 試す前に、Web担当が30ページのうち数ページを自分で読み、誤りを書き出しておきます。AIの結果と突き合わせて、拾えなかったものが何かを見ます。 多くの場合、旧料金や旧住所が正本に残っていないことが原因です。

あわせて、過去の苦情で答え合わせをしてください。 直近1年でお客様や店舗から指摘された古い記載のうち、まだ直っていないページか、直す前の版をCMSの変更履歴から取り出せるものを使います。その誤りを拾えるかを確かめます。

ワークフローを作らずに、ここまでは試せます。所要は1〜2日です。

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

問題対策
フッターの住所が全ページで指摘されるSkip Selectors で共通部品を除き、共通部品は別に1回だけ点検する
料金改定のお知らせが全部誤りになるお知らせは、今も申込を促す箇所だけを点検する
旧料金を含む正しい文まで指摘される正しい文脈の例をプロンプトに書く
本文の金額を無理に正本の行へ結び付ける「正本に無い値」を選べるようにする
AIの引用が本文に無いCode ノードで本文との一致を確かめ、一致しないものを捨てる
夜中に動いていたタイムゾーンを Asia/Tokyo にする
1か月経っても何も出ていないワークフローを保存して公開したかを確かめる
巡回が防御機能に止められる間隔を空け、取得元のIPを許可リストに入れる
正本に旧い値が無く、古い記載を拾えない正本に旧料金・旧住所と終了日の列を足す
誤検出の多い依頼で担当者が読まなくなるWeb担当の確認を通ったものだけを依頼する
依頼したのに直らない翌月に再確認し、2回続いたら部署の責任者へ

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

この構成で扱うデータ: 公開ページの本文、料金表、店舗マスタ、製品の提供状況、キャンペーンの予定。公開ページは公開情報ですが、正本には未発表の情報が含まれます。

  1. 未発表の情報を外部AIへ送ること … 料金表や製品の一覧には、来月の改定や、まだ公表していない提供終了が入っていることがあります。AIへ渡すのは、適用日が今日以前の行と、終了済みの行だけに絞ってください。 前処理で機械的に絞れます
  2. 学習利用 … 入力を学習に使わないことが契約で保証されるサービスを選びます
  3. 店舗マスタの個人情報 … 店長名や担当者の携帯番号がマスタに入っていることがあります。照合に不要な列は渡さないでください
  4. ワークフローの認証情報 … 正本のスプレッドシートとSlackへの接続情報を n8n に持たせます。正本は読み取り専用の権限で接続し、書き込み権限を与えないでください
  5. CMSへの書き込み権限を持たせないこと … 誤った修正案が公開ページに出ると、お客様への誤案内になります。ワークフローにCMSの管理者権限を与えない設計にします
  6. 表示に関わる法令・規程の確認 … 料金やキャンペーンの表示の誤りは、景品表示や価格表示に関わることがあります。修正案の文言は、法務や表示の担当者が決めた社内の基準に沿っているかを、人が確かめてください。 AIの修正案は、事実を正本に合わせたものに過ぎません
  7. 担当者の評価に使わないこと … 部署ごとの指摘の件数は、ページの数と古さに左右されます。人事評価の材料にすると、担当者はページを消して件数を減らそうとします
  8. 自動実行してよい範囲 … 巡回、抽出、照合、一覧の作成、再確認までです。修正の依頼、ページの修正、非公開化の判断は人が行います

誤りが起きた場合のリスクは、古い料金や終了したキャンペーンによるお客様への誤案内、未発表情報の外部送信、誤った修正案の公開です。1番目は、正本をそのまま渡す作りにすると必ず起きるため、最初から絞り込みを入れてください。

10まず何から始めるか

1週目:正本を確かめ、旧い値の列を足す

料金表、店舗マスタ、製品の提供状況、キャンペーン実施期間表が、表として揃っているかを確認します。旧料金と終了日、旧住所と移転日の列が無ければ、正本の持ち主に足してもらいます。 ここが揃わないと、古い記載を拾えません。

2週目:30ページで試す

重要ページ10本と古いページ20本で、最小構成を試します。Web担当が先に自分で誤りを書き出し、AIの結果と突き合わせます。 誤検出の割合と取りこぼしを見て、プロンプトの例外を足します。

3週目:ページ担当者表と本文のセレクタを決める

URLの階層ごとの担当部署を表にし、CMSのテーマごとに本文を指すCSSセレクタを決めます。あわせて、情報システムか制作会社に巡回の許可を取ります。

4週目以降: n8n で月次の半自動化を作り、2か月運用します。正本の変更を起点にした臨時点検を最初から入れてください。 料金改定のあとの全ページ検索が、この構成でもっとも早く効果の出る部分です。

2か月目以降: 翌月の再確認と、共通部品の点検を足します。依頼したのに直らないページが部署ごとに見えるようになります。

6か月目以降: 全ページが一巡したら、種類ごとの件数を振り返ります。「終了したキャンペーン」が多ければ、ページを作るときに終了後の扱いを決める運用へ、「料金の不一致」が多ければ、料金をページ本文に手書きせずCMSの共通部品から差し込む作りへ変えます。 ここまで来ると、この仕組みは古い記載を見つける道具から、古い記載が生まれない作り方を決める道具になります。


11関連ユースケース

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

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

技術仕様確認日:2026-09-24/最終更新:2026-09-24
確認した内容情報源確認日
n8n の Schedule Trigger ノードで、秒・分・時・日・週・月の間隔か、cron式で起動を指定できること。月の間隔では起動日(1〜31)と時・分を指定し、その日が無い月は起動しないこと。タイムゾーンはワークフローかインスタンスの設定に従い、セルフホスト版の既定は America/New_York であること。スケジュールで動かすにはワークフローを保存して公開する必要があることn8n Docs: Schedule Trigger2026-09-24
n8n の HTTP Request ノードで、応答の形式を Autodetect・File・JSON・Text から選べること。Items per Batch と Batch Interval(ミリ秒)で送る件数と間隔を決められること。Include Response Headers and Status でステータスを受け取れ、Never Error で2xx以外でも処理を止めずに続けられることn8n Docs: HTTP Request2026-09-24
n8n の HTML ノードの Extract HTML Content で、CSSセレクタで要素を選んでテキストを取り出せること。Skip Selectors で除く要素を指定でき、Clean Up Text で余分な空白や改行を詰められることn8n Docs: HTML2026-09-24
n8n の XML ノードで、XML to JSON によりXMLをJSONに変換できることn8n Docs: XML2026-09-24
Claude API で output_config.formattype: "json_schema" とスキーマを渡すと、応答をスキーマに沿った形に制約できること。enum は使えるが、文字列の長さの制約(minLength・maxLength)と数値の範囲の制約は使えないことClaude Docs: Structured outputs2026-09-24

サイトマップの構成、本文を指すCSSセレクタ、ページがJavaScriptで描かれているかどうかは、CMSとテーマによって異なります。この部分は利用環境に応じた個別確認が必要です。 巡回がサーバーの防御機能に止められないかは、情報システム部門か制作会社に確認してください。料金やキャンペーンの表示の修正文言が社内の表示基準や関係法令に沿っているかは、法務や表示の担当者が確認してください。

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

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

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

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