Media > AI活用ユースケース > マーケティング > 競合の製品・価格ページを毎週巡回して変更点を一覧にする

競合の製品・価格ページを毎週巡回して変更点を一覧にする

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

競合8社の製品・価格・事例ページを毎週決まった曜日に取得し、前回分との差分から意味のある変更だけを拾って一覧にします。担当者の作業は、各社のサイトを開いて読み比べることから、上がってきた変更点を見て社内に流すかを決めることに変わります。

サマリー
利用ツール
ChatGPT/Claude/Gemini/Google Apps Script/Make/n8n/Power Automate/Python/Zapier
対象業界
EC/IT・SaaS/商社/小売/製造
対象部門
マーケティング/営業
対象業務
情報検索/比較検討/集計・分析
主な課題
人手が足りない/判断に時間がかかる/情報が見つからない
AIで行う処理
エージェント
主な効果
判断支援/工数削減/機会損失防止
導入難易度
★★★★☆
実装レベル
本格構成
費用感
API連携(中)
人間の確認
条件付き
現在工数
18.7h/月
AI導入後
3.7h/月
想定削減
80%
年間削減
179h
モデル条件による試算値です。実在企業の実績ではありません。

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

導入前(Before)
  1. 担当者が週に1回、競合8社のサイトを順番に開く
  2. 価格ページを見て、前に見たときと違う点がないかを思い出しながら確認する
  3. 機能ページ、事例ページ、お知らせを同様に見る
  4. 変わっていそうな箇所をスクリーンショットに撮る
  5. 気づいた点をスプレッドシートに書く
  6. 重要そうなものを Slack の営業チャンネルに投稿する
  7. 四半期ごとに、競合比較表を作り直す
導入後(After)
  1. 毎週月曜の朝7時に巡回が自動で始まる
  2. 自動対象ページを1件ずつ取得する(間隔を空けて順番に)
  3. 自動HTMLから本文テキストを抜き出し、表記を揃える
  4. 自動前回保存分と比較して、変わった箇所を取り出す
  5. 自動変更が意味のあるものかをAIが判定し、区分と影響度を付ける
  6. 自動意味のある変更だけを一覧にして Slack へ投稿する
  7. 担当者が一覧を見て、営業へ流すもの・調べ直すものを決める
  8. 重要な変更は、担当者が実際のページを開いて裏を取る
  9. 自動今回取得分を次回比較用に保存する
各工程の詳しい説明を読む
  1. 担当者が週に1回、競合8社のサイトを順番に開く
  2. 価格ページを見て、前に見たときと違う点がないかを思い出しながら確認する
  3. 機能ページ、事例ページ、お知らせを同様に見る
  4. 変わっていそうな箇所をスクリーンショットに撮る
  5. 気づいた点をスプレッドシートに書く
  6. 重要そうなものを Slack の営業チャンネルに投稿する
  7. 四半期ごとに、競合比較表を作り直す

問題は4つあります。

(a)「前と違う」が記憶頼りになる。 前回のページを保存していないため、細かい変更は気づけません。価格表の注記が1行増えたような変更は、まず見落とします。

(b)巡回が飛ぶ。 他の業務が重なると、その週は見ません。飛んだ週に起きた変更は、次に誰かが気づくまで社内に共有されません。

(c)見ているページが担当者の頭の中にある。 どの会社のどのページを見るべきかは担当者しか知らず、担当が替わると巡回対象から作り直しになります。

(d)共有が遅い。 気づいてからSlackに書くまで数日空きます。商談中の案件に関わる変更でも、間に合わないことがあります。

  1. 毎週月曜の朝7時に巡回が自動で始まる
  2. 【自動】 対象ページを1件ずつ取得する(間隔を空けて順番に)
  3. 【自動】 HTMLから本文テキストを抜き出し、表記を揃える
  4. 【自動】 前回保存分と比較して、変わった箇所を取り出す
  5. 【自動】 変更が意味のあるものかをAIが判定し、区分と影響度を付ける
  6. 【自動】 意味のある変更だけを一覧にして Slack へ投稿する
  7. 【人】 担当者が一覧を見て、営業へ流すもの・調べ直すものを決める
  8. 【人】 重要な変更は、担当者が実際のページを開いて裏を取る
  9. 【自動】 今回取得分を次回比較用に保存する

自動化されるのは「見に行く」「覚えておく」「見比べる」の3つです。残るのは「これは重要か」を決めることと、重要なものを自分の目で確かめることです。

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

構成図
【トリガー】毎週月曜 07:00(Schedule Trigger)
   │
   ▼
n8n ワークフロー
   │
   ├──▶ 対象URL一覧(スプレッドシート)を読む
   │
   ├──▶ HTTP Request ノードで1ページずつ取得(間隔を空ける)
   │
   ├──▶ 本文テキストの抽出と正規化(Python)
   │
   ├──▶ 前回保存分との差分抽出(Python)
   │        └─ 差分がなければここで終了
   │
   ├──▶ Claude API ── 意味のある変更かを判定し、区分・影響度を付ける
   │
   ├──▶ Slack へ投稿 + スプレッドシートへ履歴を追記
   │
   └──▶ 今回分をストレージへ保存(次回の比較用)
   │
   ▼
【人が判断】担当者が一覧を見て、営業へ流すかを決める
役割想定する製品代替候補
ワークフローn8nMake、Power Automate、Zapier
処理PythonGoogle Apps Script
生成AIClaude APIOpenAI API、Gemini API
通知SlackMicrosoft Teams
履歴の保管Googleスプレッドシートデータベース

n8n を置いているのは、巡回の間隔・順番・エラー時の再試行を画面上で組めるためです。 同じことは Python のスクリプトと定時実行でも作れます。すでに社内にワークフローツールがあるなら、それを使ってください。この構成でツールの選択が結果を左右する部分はほとんどありません。

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

Step1

処理の起点を決める

曜日と時刻を決めた定期起動にします。n8n の Schedule Trigger ノードは、秒・分・時・日・週・月の単位、またはCron式で起動間隔を指定できます。週次であれば「Weeks」で曜日と時刻を指定します。

タイムゾーンには注意が必要です。n8n のタイムゾーンは、ワークフロー個別の設定があればそれが使われ、無ければインスタンスの設定が使われます。セルフホスト版の既定値は America/New_York です。日本時間で動かすつもりが、前日の夜に走っていたという取り違えが起きるため、ワークフロー側でタイムゾーンを明示してください。

週次にする理由は、価格や機能の改定が日単位で起きる市場はまれだからです。日次にすると差分の量に対して得られるものが釣り合いません。四半期に一度しか改定がない市場なら、隔週でも足ります。

Step2

入力データを集める

データ中身取得元
巡回対象の一覧競合名、ページ種別、URL、確認する観点スプレッドシート
前回取得分前回巡回時の本文テキストストレージ(1ページ1ファイル)
自社の基準何を重要な変更と見なすかの定義プロンプトに固定で埋め込む
自社の価格・機能比較の基準になる自社側の情報スプレッドシート

4番目を渡すと、判定の質が変わります。 「competitorが月額5,000円に改定」だけでは影響度が判断できませんが、自社が月額6,000円だと分かっていれば「自社より安い水準に入った」と書けます。

Step3

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

巡回対象: スプレッドシートで管理します。列は「競合名/ページ種別(価格・機能・事例・お知らせ)/URL/確認観点/最終取得日時/状態」です。ここを人が足し引きできる形にしておくことが、この構成を続けられるかどうかを決めます。

ページの取得: n8n の HTTP Request ノードでURLを取得します。取得時には次を守ります。

  • 相手サイトの利用規約と robots.txt を事前に確認する。 自動取得を禁じているサイトは対象に入れない
  • 1ページごとに数秒の間隔を空け、短時間に連続して叩かない
  • User-Agent に自社が分かる情報と連絡先を入れる
  • 会員登録やログインが必要なページには入らない。ログインが要る時点で対象外とする

この確認を飛ばさないでください。 技術的に取得できることと、取得してよいことは別です。判断に迷う場合は法務に確認し、対象から外します。外しても構成は成立します。その競合だけ手動で見る運用にすればよいだけです。

JavaScriptで描画されるページ: HTTP Request で取得したHTMLに本文が入っていない場合があります。ヘッドレスブラウザを使えば取れますが、負荷と保守の手間が増えます。まずは対象外にして、静的に取れるページだけで始めることを勧めます。

Step4

AIへ渡す前に整形する

ここがこの構成の要です。生のHTMLを差分にかけると、毎回大量の差分が出ます。

  1. 本文テキストの抽出 … ナビゲーション、フッター、サイドバーを落とし、本文だけを取り出します。タグの属性やクラス名は捨てます
  2. 動的要素の除去 … 現在日時、アクセス数、ランダムに並ぶ「おすすめ記事」、広告枠を落とします。ここを残すと毎回差分が出ます
  3. 表記の正規化 … 全角と半角、空白の連続、改行位置を揃えます。「5,000円」と「5000円」を別物として扱わないようにします
  4. 差分の抽出 … 前回分と行単位で比較し、追加・削除・変更された行だけを取り出します。変わっていないページはここで処理を終え、AIに渡しません
  5. 差分量の上限 … 差分が一定量を超えたページは、サイトの全面リニューアルである可能性が高いので、「大規模変更」として人に回し、AIには渡しません

4番と5番でAPIの呼び出し回数が大きく減ります。8社分を毎週渡す構成にすると費用も時間も無駄になります。

Step5

AIに処理させる

差分テキストを渡し、次の判定をさせます。

処理内容
意味の判定その変更が価格・プラン・機能・対応業種・導入企業・体制のどれに関わるか。どれにも当たらなければ「対象外」
区分付け価格改定/プラン追加・廃止/機能追加/表現変更/事例追加/その他
変更前後の要約何が何に変わったのかを1文で
影響度自社の価格・機能と比べて、提案や価格判断に影響するか(高・中・低)
確認すべき点人が実際のページで裏を取るべき箇所

「対象外」を積極的に出させることが重要です。 判定の価値は、拾うことより捨てることにあります。

Step6

指示内容を固定する

あなたは競合調査の担当者です。
あるページの前回と今回の差分を渡します。自社にとって意味のある変更かを判定してください。

【厳守事項】
- 差分に現れていない内容を推測しないでください。
  「おそらく値下げの前触れ」といった解釈を書かないでください。
- 金額、プラン名、機能名は、差分に書かれたとおりに転記してください。
  概算や言い換えをしないでください。
- 次のものは category を「対象外」としてください。
  更新日の表示、キャンペーンバナー、記事の並び替え、誤字修正、
  画像の差し替え、問い合わせ導線の文言変更。
- 影響度は、下に示す自社の価格・機能と比べて判断してください。
  自社情報と比べられない場合は "unknown" としてください。
- 差分の解釈に自信がない場合は confidence を low にし、
  needs_human_check に確認すべき箇所を書いてください。

【自社の価格・機能】
{own_product}

【対象ページ】
競合: {competitor}  種別: {page_type}  URL: {url}

【前回との差分】
{diff_text}

「対象外」の列挙を具体的に書くことが効きます。 抽象的に「重要でない変更は除外して」と書くと、判断が毎回ぶれます。実際に出てきたノイズを、この列挙に足していく運用にします。

Step7

出力形式を固定する

{
  "competitor": "",
  "page_type": "",
  "url": "",
  "checked_at": "",
  "changes": [
    {
      "category": "価格改定 | プラン追加・廃止 | 機能追加 | 表現変更 | 事例追加 | その他 | 対象外",
      "before": "",
      "after": "",
      "summary": "",
      "impact": "high | medium | low | unknown",
      "confidence": "high | medium | low",
      "needs_human_check": ""
    }
  ],
  "large_change": false,
  "fetch_error": ""
}

beforeafter には、差分の該当部分をそのまま入れさせます。要約だけを受け取ると、後から「本当にそう書いてあったか」を確認できません。

fetch_error を出力に持たせているのは、取得できなかったことを「変更なし」と区別するためです。ここを分けないと、ページ構造の変更で取得に失敗し続けているのに、「今週も変更なし」と報告され続けます。

Step8

システムへ連携する

出力は2か所へ流します。

出し先中身目的
Slack影響度 high と medium の変更だけその週に気づくべきことを届ける
スプレッドシート対象外を含む全件後から追える履歴を残す

Slackへの投稿は、競合ごとにスレッドをまとめます。1変更1投稿にすると、改定のあった週にチャンネルが埋まります。

Salesforce など営業側のシステムへの自動連携は、最初は作らないでください。競合の動きを案件へ自動で紐づけると、誤判定が商談の判断材料として流れてしまいます。 担当者が確認したものだけを、人の手で共有する形から始めます。

Step9

人が確認する

社内へ流す前に、必ず人が確認します。

理由は、差分の解釈を誤ったまま「競合が値下げした」と社内に流れると、営業が現場で誤った前提で話すためです。訂正しても、一度流れた情報は止まりません。

確認を速くするための設計が要ります。

  • Slackの投稿に、該当ページのURLと該当箇所を必ず含める
  • 影響度 high は、担当者が実際のページを開くまで「未確認」の印を付ける
  • 前回の巡回で「対象外」と判断した変更と同じ文面は、まとめて折りたたむ
  • 取得エラーは、変更とは別のチャンネルへ流す
Step10

例外に対処する

起きること対応
ページが取得できない(404・接続エラー)fetch_error に記録し、3週続いたら対象一覧の見直しを通知する。「変更なし」として扱わない
サイトが全面リニューアルされた差分量の上限で検出し、人に回す。前回分を新しい構造で取り直す
本文の抽出に失敗し、ナビゲーションが混ざる差分にメニュー項目が並ぶ。抽出ルールを見直す。この兆候を放置すると毎週ノイズが出続ける
JavaScriptで描画されていて本文が取れない対象外にして、そのページだけ手動確認にする
bot対策で遮断される回避策を実装しない。 対象から外し、手動確認に切り替える
価格がログイン後にしか出ない対象外。公開情報だけを扱う
差分はあるが意味がない変更ばかり「対象外」の列挙にその類型を追加する
巡回が失敗して気づかない巡回完了そのものを毎回通知する。無通知を異常と見なす運用にする
Step11

記録を残す

  • 取得したページの本文テキスト(日付付き。1ページ1ファイル)
  • 抽出した差分
  • AIの判定結果(対象外を含む全件)
  • 担当者が社内へ流したもの・流さなかったもの
  • 取得エラーの履歴

1番目を残すことが、この構成の資産になります。 半年分たまると、「競合A社は毎年4月に価格を見直している」といった周期が見えます。これは毎週の差分からは分かりません。

保存先は自社のストレージにします。取得したページの内容は、社内での検討材料としての利用にとどめ、社外への転載や公開資料への引き写しはしないでください。

04実装レベルの3段階

最小構成:手動でページを保存し、差分を生成AIに貼り付けて判定させる / 判定のみ
半自動化:定期起動で取得と差分抽出まで行い、差分をメールで受け取って人が読む / 巡回と差分抽出
本格構成:上記+AIによる意味判定と影響度付け+Slack投稿+履歴の蓄積 / 報告の作成まで

半自動化の時点で、35分が15分程度になります。 見に行く手間と、前回との比較が消えるためです。本格構成にすると7分程度になりますが、ノイズを抑える前処理と「対象外」定義の作り込みが必要です。 この業務は、半自動化で止める判断も十分あり得ます。 競合が3社程度なら、差分を人が読んでも数分で終わります。

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

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

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

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

AI活用について相談する

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

向いている
  1. 競合が5社以上おり、価格や機能の改定が四半期に複数回起きる市場。自社の提案や価格改定の判断に競合の動きを使っている会社。
向いていない
  1. 競合の情報が公開ページにほとんど出ていない業種。巡回対象が会員登録や見積依頼の先にしかない場合。相手サイトの利用規約が自動取得を禁じている場合。

07最小構成で試す方法

  1. 競合2社の価格ページだけを選ぶ
  2. 今日の時点のページ本文を手作業で保存する(ブラウザからテキストとして保存)
  3. 1週間後、同じページを保存する
  4. 2つの差分を取り、生成AIの画面に貼り付けて「意味のある変更か」を判定させる
  5. 判定結果を見て、自分の感覚と合っているかを確かめる

この2週間の検証で、ほとんどのことが分かります。 差分がそもそも出ない市場なら、週次の巡回を作る意味がありません。逆に差分が大量に出るなら、前処理の設計にどれだけ手をかけるべきかが見えます。

判断の目安は次のとおりです。

2週間で出た差分判断
意味のある変更が含まれていた週次で作る価値がある
差分は出たが全部ノイズだった前処理を先に作り込む。もしくは隔週・月次に落とす
差分が出なかった巡回頻度を月次にし、対象ページを増やす

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

問題対策
毎週大量の差分が出て読まれない本文抽出と動的要素の除去を作り込む。「対象外」の列挙を具体化する
更新日やアクセス数で毎回差分が出る前処理で落とす。落とす対象を一覧で管理する
ページ構造が変わって抽出が壊れる差分量の上限で検出する。抽出失敗を通知の対象にする
取得エラーが続いているのに気づかない巡回完了を毎回通知し、無通知を異常と見なす
「値下げした」の誤判定が社内に流れる社内共有の前に人が実ページで確認する。自動投稿を営業チャンネルへ直結させない
アクセス頻度が高すぎて相手に負荷をかける1ページごとに間隔を空ける。並列取得をしない
対象ページが増え続けて費用と時間が膨らむ四半期ごとに対象一覧を見直す。半年間ノイズしか出ていないページは外す
取得した内容を資料へそのまま転載してしまう社内の検討材料にとどめる運用を明文化する

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

この構成で扱うデータ: 競合各社が公開しているページの内容と、比較の基準になる自社の価格・機能情報。

  1. 取得先の規約 … 相手サイトの利用規約と robots.txt を確認し、自動取得を禁じているサイトは対象に入れません。bot対策に遭ったら、回避策を作らずに対象から外します。 ここは技術的な可否ではなく、方針として決めておく事項です
  2. アクセスの作法 … 取得間隔を空け、User-Agent に自社が分かる情報を入れます。相手のサービスに負荷をかけない範囲で行います
  3. 取得した内容の扱い … 社内の検討材料としての利用にとどめ、公開資料や提案書へそのまま引き写さないでください。引用が必要なら出典を明示し、引用の範囲を守ります
  4. 自社情報の入力 … 比較のために自社の価格・機能を生成AIへ渡します。未公開の価格改定案を渡すかどうかは、情報管理規程に照らして判断してください。渡さなくても構成は成立します
  5. 学習利用 … 入力を学習に使わない設定または契約のサービスを選びます
  6. 自動実行してよい範囲 … 巡回と判定までは自動で構いません。社内への共有、特に営業向けの共有は人が行います

誤りが起きた場合のリスクは、誤った競合情報にもとづいて価格や提案の判断をしてしまうことです。この構成が出すのは一次情報ではなく差分の解釈です。 重要な判断の前には、必ず実際のページを確認してください。

10まず何から始めるか

1週目:対象を決めて、今日の状態を保存する

競合2社の価格ページを選び、本文テキストを保存します。同時に、その2社の利用規約と robots.txt を確認します。ここで自動取得が禁じられていたら、その時点で対象を変えます。

2週目:1週間後の差分を見る

同じページを保存し、差分を取ります。生成AIに判定させ、自分の感覚と合うかを確かめます。合わなければ「対象外」の定義を書き足します。

3〜4週目:巡回を組む

対象を8社に広げ、定期起動で取得と差分抽出までを自動化します。まだAIの判定は挟まず、差分をそのままメールで受け取って読みます。ここでノイズの量が実測できます。

2か月目以降: ノイズの傾向が見えたら前処理を作り込み、AIの判定と Slack への投稿をつなぎます。並行して、取得したページの保存を積み上げ、四半期ごとに対象一覧を見直す運用を決めます。


11関連ユースケース

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

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

技術仕様確認日:2026-09-14/最終更新:2026-09-14
確認した内容情報源確認日
n8n の Schedule Trigger ノードで、秒・分・時・日・週・月の単位またはCron式による定期起動が設定できること。タイムゾーンはワークフロー設定が優先され、無ければインスタンス設定(セルフホスト版の既定は America/New_York)が使われることn8n Docs: Schedule Trigger2026-09-14
n8n の HTTP Request ノードで任意のURLへのリクエストと認証設定ができることn8n Docs: HTTP Request2026-09-14

取得対象サイトの利用規約、robots.txt の内容、および取得した内容の社内利用の範囲は、サイトごと・自社の方針ごとに異なります。この部分は法務への確認が必要です。 JavaScriptで描画されるページの取得可否も、対象サイトによって変わります。

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

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

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

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