〜 Bright Data × Claude Code × 社内AI 公開Webを毎日集めて、変化まで見つける完全実録 〜
僕はプログラミング未経験です。この記事では、AIに手伝ってもらいながら、Web情報を集めて変化を見つける社内AIを試作した手順を紹介します。
社内AIは、社内規程やマニュアルから質問に関係する情報を探し、その内容をもとに回答する仕組みです。
ただし、社内文書だけでは、競合の値上げや最新ニュースには答えられません。
「競合が値上げした」「新しいプランが出た」「業界でこんな導入事例が出た」。こういう情報は、Webの上で毎日変わっていきます。
今回は、Web情報を取得するBright Dataと、プログラム作成を支援するClaude Codeを使い、4つの仕組みを試作しました。
▶ Bright Data の無料トライアルに登録して、Webデータ収集を試す
| 作ったもの | Bright Dataの役目 |
|---|---|
| ① 業界ニュースも答える社内AI | Googleでニュースを検索して、記事の本文を取ってくる |
| ② 毎日自動でWebを見に行く「見張り番」 | 毎朝集め直して、新しい記事・書き変わった記事・消えた記事を見つける |
| ③ 競合の料金比較表 | 各社の料金ページを取ってきて、値段の変化を見張る |
| ④ 自分でWebを調べて答えるAIエージェント | AIが自分でGoogle検索とページ取得をする |
その結果—
- 社内文書だけでは「記載がありません」だった質問に、日付と出典URL付きで答えられるようになりました。
- 見張り番は、深夜に集めた資料を朝と昼に見直して新しいニュースを9件見つけ、社内AIの資料を10件から19件に増やしました。
- 競合4社の料金ページから28プランを抜き出して、Excelで開ける表にできました(ただし1社は値段を読み取れませんでした)。
- AIエージェントは、自分で検索23回・ページ11件を調べて、出典付きで答えました。
かかったお金は、Claudeが1.24ドル(約200円)、Bright Dataが約0.42ドル(約67円)。合わせて約270円でした。
しかも、自分で書いたコードはゼロ行。全部、Claude Codeに日本語で頼んで書いてもらいました。うまくいかなかったところも含めて、そのまま公開します。
📝 この記事の読み方 各章の「💬 Claude Codeへの指示」は、僕が実際にClaude Codeに頼んだ内容です。そのあとに「🤖 Claude Codeがやったこと」と、実際に動かした結果を書いています。
今回の全体像

図1:準備から検証までの流れ。以降の各章で操作手順を説明します。
| ステップ | やること |
|---|---|
| ① 社内AIとBright Dataの役目 | しくみを図でざっくり理解 |
| ② Bright Dataセットアップ | アカウント作成・APIキー取得 |
| ③ Claudeセットアップ | クレジット購入・APIキー取得 |
| ④ パソコンの準備 | Python(プログラムを動かすための言語)・作業フォルダ・部品の用意 |
| ⑤ 業界ニュースを集める | Bright DataでGoogleニュースを検索して、本文を取る |
| ⑥ 社内AIを動かす | 質問して答えてもらう |
| ⑦ 実験:ニュースあり vs なし | 外の情報を足すと何が変わる? |
| ⑧ 実験:Bright Dataあり vs なし | Bright Dataが本当に必要なのはどこ? |
| ⑨ 実験:ルールと他社の話 | AIは「うち」と「よそ」を区別できる? |
| ⑩ 毎日の見張り番 | 公開Webを毎日集め直して、更新・削除を見つける |
| ⑪ 競合の料金比較表 | 料金ページを集めて、値段の変化を見張る |
| ⑫ AIエージェント | AIが自分でWebを調べて、出典付きで答える |
| ⑬ かかったお金 | Bright DataとClaudeの実際の利用額 |
使ったものは、WindowsのPC、Bright Data(無料トライアル。100ドル(約16,000円)分の無料クレジット付き)、Claude(5ドル=約800円分のクレジット)、Claude Code(プログラムを書いてもらうAI)だけです。
💡 この記事では、1ドル=160円で円に直しています。
① 社内AI(RAG)と、Bright Dataの役目
今回の社内AIで使う仕組みが「RAG(ラグ)」です。質問に関係する資料を探し、その資料をAIに渡して回答を作ります。
- 質問されたら、まず棚から関係ありそうな資料を持ってくる(検索)
- その資料を読んで、答えをまとめる(生成)
普通の社内AIは、棚に「社内文書」しかありません。そこで今回は、Bright Dataで集めた「業界ニュース」も棚に足します。
青い枠が、今回の主役のBright Dataです。
ここで大事なのは、「棚に一度ニュースを並べたら終わり」ではないことです。Webの情報は毎日変わります。新しいニュースが出るし、記事が書き換えられたり、消えたりもします。古い情報のままの社内AIは、古い規程を読んだ社内AIと同じように、自信を持って間違えます。
そこで今回は、Bright Dataに次の仕事を任せました。
| Bright Dataの仕事 | どの章で使うか | ひとこと |
|---|---|---|
| Googleの検索結果をもらう(SERP API) | ⑤⑩⑫ | プログラムからGoogleの検索結果を直接取るのは難しく、Googleの利用規約でも禁止されています。ここはBright Dataの出番です |
| ページの本文を取ってくる(Web Unlocker API) | ⑤⑩⑪⑫ | 記事や料金ページを、AIが読みやすい文字にして渡してくれます |
| 毎日取りに行って、変化を見つける | ⑩⑪ | 上の2つを毎朝自動で動かし、前回との違いを探します |
この3つで、次のような使い方ができます。今回は、どれも実際に試しています。
- 市場動向・公開企業情報を集め続ける(⑤⑩)
- 競合の価格・商品情報を分析する(⑪)
- Webの情報を根拠に答えるAIエージェント(⑫)
② Bright Data セットアップ
ポイント:Bright Dataでは、SERP API(検索1,000回あたり1.50ドル)と Web Unlocker API(ページ取得1,000回あたり1.50ドル)の2つを追加し、APIキーを取得します。

図3:各ツールの役割。設定方法は後続の手順を参照してください。
Bright Dataは、プログラムからWeb検索結果やページ本文を取得するサービスです。サイトや設定によっては取得できない場合もあります。
はじめに:データ取得・スクレイピングのコンプライアンスメモ
手を動かす前に、ここだけは押さえておきましょう。この記事のプログラムは、公開されているWebページを自動で取りに行きます。便利な分、守るべきルールがあります。
- **Bright Dataの利用ポリシー(Acceptable Use Policy)を確認する:**ログインが必要なページの情報を集めることは禁止されています。政府系サイトなど、Bright Data側で取得できないようにしているサイトもあります(利用ポリシーを読む)。
- **サイトの利用規約と robots.txt を確かめる:**ニュースサイトによっては、プログラムで情報を集めることを禁止しています。
- **記事の本文をそのまま転載しない:**ニュース記事には著作権があります。ブログや社内資料には、要約と出典のリンクだけを載せましょう。
- **有料会員限定の記事は対象にしない:**会員限定・有料の記事は、公開部分だけを根拠にします(会員限定の記事では、公開部分では確かめられない数字が答えに混ざることがあります)。
- **個人の情報を集めない:**今回は企業のニュースだけを対象にしています。
- **相手のサイトに負担をかけない:**今回の見張り番は1日1回、20件ほどです。件数や回数を増やすときは、必要な分だけにしましょう。
- **会社で本格的に使うときは、法務や情報システム部門に相談する:**どこまで集めてよいかは、会社ごとにルールが違います。
STEP 1 アカウント作成・無料トライアル登録
Bright Data にアクセスして、「無料で開始」からアカウントを作ります。クレジットカードの登録は不要で、ログインすると無料クレジット(5,000)が付いていました。
💡 すでにアカウントをお持ちの方は、ログインから進めてください。
▶ まだアカウントがない方は、ここから登録できます:Bright Data の無料トライアルに登録する
STEP 2 2つの機能を追加する
今回使うのは、次の2つの機能です。
| 機能 | ひとことで言うと | 今回の使い道 |
|---|---|---|
| SERP API | 検索結果を、一覧表の形でもらえる | 「生成AI 社内 導入」などでニュースを検索する |
| Web Unlocker API | ページの中身を、読みやすい文章でもらえる | 見つかった記事の本文を取ってくる |
左の黒いメニューの「ウェブアクセス」(APIと書かれたマーク)を開き、「APIを追加」に進みます。「APIタイプを選択」で「SERP API(検索エンジン結果ページ)」を選んで「続行」を押し、画面に沿って作ります。続けてもう一度「APIを追加」に進み、今度は「ウェブ解除 API」(Web Unlocker APIの日本語名)を作ります。
💡 最初は「ブラウザ API」にチェックが入っています。今回は使わないので、選び直してから「続行」を押してください。
💡 設定画面で入れるのは「名前」だけでOKです。名前はあとで変えられないので、serp_api1 のような分かりやすい名前にします。説明や「Google 広告」はそのままで構いません。右側には料金(Rate $1.50/CPM=検索1,000回あたり$1.50)が表示され、支払いは成功した検索の分だけです。
💡 画面では「Webアンロッカー API」という名前で出てきます。この記事の「Web Unlocker API」と同じものです。料金は、ページを1,000回取ってきて1.50ドル(約240円)です。
⚠️ アカウントによっては、途中に「支払い方法を追加」のステップが出ます。僕の場合、最初のアカウントでは出て、作り直したアカウントでは出ずにそのまま追加できました。出たときは、画面に従ってクレジットカードを登録します。
💡 「プレミアムドメイン」(特に取りにくい一部のサイト用。追加料金あり)という項目が出たら、オフのままでOKです。
作り終わると「APIが正常に追加されました」と出て、「APIをテストする」の画面になります。ここに出るコマンドはMac向けなので、Windowsでは実行しなくて大丈夫です。画面に出ている zone の名前(ゾーン名)だけメモしましょう。
作った2つには、それぞれ名前(ゾーン名)が付きます。何も変えなければ serp_api1 と web_unlocker1 のような名前です。あとで使うのでメモしておきます。
💡 「ゾーン」は、機能ごとの契約の窓口のようなものです。名前だけ覚えておけばOKです。画面では「ゾーン」という言葉はあまり出てこず、作ったAPIの「名前」がそのままゾーン名です。あとから確かめるときは、左のメニューの「ウェブアクセス」を開くと、一覧の左端に並んでいます。
STEP 3 APIキーの取得
「ユーザーとAPIキー」の画面で、APIキーを作ってコピーします。メモ帳に貼っておきましょう。
💡 Bright DataのAPIキーは、英字と数字が長く並んだ文字列です。始まりの文字は決まっていません(僕の場合は数字から始まっていました)。③で作るClaudeのキーは「sk-ant-」から始まるので、始まりを見れば、どちらのキーか見分けられます。
⚠️ APIキーは、プログラムからBright Dataを使うための「合い鍵」です。他人に知られると、勝手に使われて料金がかかります。チャットやスクショには絶対に載せないでください。
③ Claudeのセットアップ
ポイント:Claude Console で5ドル(約800円)分のクレジットを購入し、「sk-ant-」から始まるAPIキーを作ります。
集めた情報を読んで答えを作るのは、AIのClaudeです。自分のプログラムからClaudeを呼ぶには、Claude側のAPIキーも必要です。
STEP 1 クレジットを購入する
Claude Console にログインして、「残高を追加」から5ドル(約800円。税込み5.50ドル)分のクレジットを購入します。使った分だけ減っていくプリペイド式です。
💡 購入したのに残高が$0のままなら、支払いが失敗しています。Claudeを作っているAnthropicはアメリカの会社なので、カード会社に「海外の支払い」として止められることがあります。カードの設定を確かめて、もう一度試しましょう。
STEP 2 APIキーを作る
左のメニューの「APIキー」→「APIキーを作成」を押します。
💡 途中で「ID連携を使用すれば、APIキーは不要です」という画面が出ますが、自分のPCで試すだけなら「APIキーで続ける」でOKです。
表示されたキーは、横のコピーボタンでコピーしてメモ帳に貼っておきます。この画面を閉じると、二度と表示されません。
💡 ClaudeのAPIキーは「sk-ant-」から始まる、100文字ぐらいの長い文字列です。Claude Consoleのキーの一覧には、「sk-ant-……」のように途中を省いた形でしか出ません。この省略された形をコピーしても使えないので、必ず作ったときの画面でコピーしましょう(僕はこれで一度つまずきました)。
⚠️ こちらもBright Dataと同じく、他人に見せてはいけない合い鍵です。僕は以前、うっかりAIとのチャットに貼ってしまい、すぐに削除して作り直しました。貼ってしまったら、同じように削除して作り直せば大丈夫です。
④ パソコンの準備
ポイント:Python 3.10 以上が入っているかを確かめ、作業フォルダと「道具箱」(.venv)を作って部品を4つ入れ、APIキーとゾーン名の4つを登録します。
ここが最初の「ちょっと詰まるポイント」です。でも、書いてあるとおりにコピペすれば大丈夫です。
STEP 1 PowerShellを開く
PowerShellは、Windowsに最初から入っている「文字で命令を打ち込む画面」です。スタートメニューで「PowerShell」と入力して開きます。
💡 この記事の灰色の枠(コマンド)は、1行ずつコピーしてPowerShellに貼り付け、Enterを押します。一番下に PS C:\Users\名前> が戻ってきたら、次の行へ進みます。
STEP 2 Pythonが入っているか確かめる
Pythonは、プログラムを動かすための言語です。
python --version
-
Python 3.10以上の数字が出た → OK。次へ進みます。 - エラーが出た、Microsoft Storeが開いた → 入っていません。python.org からインストールします。
💡 インストールするときは、最初の画面で「Add python.exe to PATH」に必ずチェックを入れます。終わったらPowerShellを開き直します。
STEP 3 作業フォルダと「道具箱」を作る
以下を1行ずつ実行します。
cd ~\Desktop
mkdir rag-brightdata
cd rag-brightdata
python -m venv .venv
.venv\Scripts\Activate.ps1
pip install anthropic rank_bm25 sentence-transformers requests
やっていることは、ざっくりこうです。
- デスクトップに「rag-brightdata」というフォルダを作って、中に入る
- この作業専用の「道具箱」を作って開く(行の頭に
(.venv)が付けば成功) - 道具箱に「部品」を4つ入れる(スマホでアプリを入れる感覚です)
最後の pip install は部品が大きいので、数分待ちます。英語がたくさん流れますが、最後に Successfully installed と出れば成功です。
STEP 4 APIキーを登録する
メモ帳に貼っておいた2つのキーを、PowerShellに教えます。" と " の間を、キーでまるごと置き換えてください。
$env:ANTHROPIC_API_KEY="ここにClaudeのキー"
$env:BRIGHTDATA_API_KEY="ここにBright Dataのキー"
$env:BRIGHTDATA_SERP_ZONE="serp_api1"
$env:BRIGHTDATA_UNLOCKER_ZONE="web_unlocker1"
💡 3行目と4行目は、②でメモしたゾーン名です。同じ名前ならそのままでOK。
💡 PowerShellを閉じると、登録したキーと開いた道具箱はリセットされます。開き直したときは、cd ~\Desktop\rag-brightdata と .venv\Scripts\Activate.ps1 を実行してから、上の4行をもう一度入れます。
ここまでの完了チェック
Bright Data側
- ☐ アカウント作成
- ☐ SERP APIとWeb Unlocker APIの追加(ゾーン名をメモ)
- ☐ APIキーの取得
Claude側
- ☐ クレジットの購入(残高が$5になっていることを確認)
- ☐ APIキーの取得
パソコン側
- ☐
python --versionで数字が出た - ☐ 行の頭に
(.venv)が付いた - ☐
Successfully installedと出た - ☐ キーを4行登録した
⑤ 社内文書と業界ニュースを集める
ポイント:Bright DataのSERP APIで「生成AI 社内 導入」を検索して記事10件を見つけ、Web Unlocker APIで10件中9件の本文(1件あたり上限6,000文字)を取得できました。
ここからは、Claude Codeが書いてくれたプログラムをパソコンに保存して使います。プログラムは長いので、別タブにまとめました。
🤖 Claude Codeがやったこと:練習用の社内文書(documents.py)、ニュースを集めるプログラム(collect.py)、社内AIの本体(rag.py)の3つを書いてくれました。どう動かすかも、PowerShellに打つコマンドごと教えてくれます。
保存のしかたは、どれも同じです。
- PowerShellで
notepad ファイル名を実行する(メモ帳が開きます) - 「新しく作成しますか?」→「はい」
- プログラム置き場からコピーして、メモ帳に貼り付ける
- Ctrl+Sで保存して閉じる
💡 プログラムはメモ帳に保存、python … で始まる1行はPowerShellで実行。この役割分担だけ覚えておけば迷いません。PowerShellにプログラムを貼ろうとして警告が出たら、「キャンセル」を押してください。
STEP 1 社内文書を用意する(documents.py)
本物の社内文書の代わりに、練習用の「にせ社内文書」を4つ使います。
| 文書 | 中身 |
|---|---|
| 生成AI利用ガイドライン | 使っていいのはClaudeだけ、社外秘は入力禁止、社外に出す前に人が確認 |
| 情報セキュリティ規程 | 社外秘は社内サーバーだけに保存、私物USBは禁止 |
| 旅費規程 | 出張の日当は1日3,000円 |
| 在宅勤務規程 | 在宅勤務は週3日まで |
notepad documents.py で保存します。
STEP 2 ニュースを集めるプログラムを用意する(collect.py)
notepad collect.py で保存します。このプログラムがやってくれるのは、次の3つです。
- search:Bright Dataにニュースを検索してもらい、記事の一覧を作る
- fetch:一覧の記事の本文を、Bright Dataに1件ずつ取ってきてもらう
- compare:Bright Dataを使わずに同じ記事を取りに行き、結果を比べる(⑧の実験で使います)
STEP 3 ニュースを検索する
python collect.py search "生成AI 社内 導入" --limit 10
💡 " の中の言葉は、自分の業界に合わせて変えてOKです。--limit 10 は「10件まで」という意味です。
記事のタイトル、サイト名、日付が並べば成功です。
つまずきポイント:実は最初に試したときは「0件」でした。Bright Dataからの返事が、たまに空っぽだったり時間がかかったりするようです。そこで、画面のスクショをClaude Codeに見せて「0件だった」と伝えると、原因を調べて「失敗したら自動でやり直す」仕組みを足してくれました。直した版で試したところ、今回も空の返事が2回続いたあと、3回目で無事に取れました。
💡 外のサービスを使うプログラムには、「失敗したらやり直す」仕組みが大事だと実感しました。「コピー用コード」の collect.py は、この仕組み入りの版です。
STEP 4 記事の本文を取ってくる
python collect.py fetch
1件ずつ取りに行くので、数分かかります。○ が取れた記事、× が取れなかった記事です。
結果は、10件中9件の本文が取れました。取れた記事はどれも上限の6,000文字いっぱいまで保存されていて、10件の取得は数分で終わりました。
ここでも「返事が空」「時間切れ」は何度か起きましたが、ほとんどは自動のやり直しで取れています。1件だけ、3回やり直しても取れない記事がありました(公的機関のページ)。無理に取ろうとせず、そのままにしています。
💡 「6000文字」は、プログラムで決めた1記事あたりの上限です。記事がそれより長いので、先頭から6,000文字で切って保存しています。
⑥ 社内AIを動かす
ポイント:社内文書と業界ニュースから質問に近い資料を4つ選んでClaudeに渡すと、社内文書だけでは答えられない他社の生成AI導入事例を、日付と出典URL付きで回答できました。
いよいよ本体です。プログラム置き場の「③ rag.py」を、notepad rag.py で保存します。
やっていることは、ざっくりこの3つです。
- ニュースの本文を、250文字ずつの小さなかたまりに切る(長いままだと探しにくいため)
- 社内文書とニュースの中から、質問に近いものを4つ選ぶ
- その4つだけをClaudeに渡して、「この資料だけで答えて」と頼む
💡 Claudeへのお願い(指示文)には、「当社のルールと世の中の動きは分けて書く」「ニュースを使ったら日付と出典を書く」と入れてあります。
STEP 1 まずは社内文書だけで試す
python rag.py "出張の日当はいくら?"
初回だけ、文章の意味を読み取るAIの部品(約470MB)のダウンロードで数分かかります。英語の Warning がたくさん出ますが、気にしなくて大丈夫です。
STEP 2 ニュースのことを聞いてみる
python rag.py "他社は最近、生成AIをどう導入している?"
画面の「■ AIに渡した資料」には、[社内] と [社外] の印が付きます。[社外] が出ていれば、集めたニュースが使われています。
![AIに渡した4つの資料は、すべて [社外] のニュースでした。答えは、こんな内容です。](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F4509138%2Fcad2157d-11db-450e-8143-7b80bc19a001.png?ixlib=rb-4.1.1&auto=format&gif-q=60&q=75&s=dfaf8a28e2ed4608c8eaf358de188921)
AIに渡した4つの資料は、すべて [社外] のニュースでした。答えは、こんな内容です。
- 社内文書(当社のルール):「資料に記載がありません」
- 社外ニュース(世の中の動き):
- NECが、提案書作成や議事録要約などに生成AIを使い、「生成AIを鵜吞みにしない」運用を掲げている(DXマガジン、2026年4月4日)
- Sansanの調査では、9割が「AIが社内の情報を把握すれば成果が変わる」と答えた一方、データが完全に整っている企業は22.2%(Sansan、2026年2月18日)
- 「AIツールを導入したが利益につながらない」と悩む企業も多い(パーソルグループの記事)
日付と出典URLが、きちんと付いています。 社内文書だけの社内AIでは絶対に答えられない質問です。
💡 よく見ると、AIに渡した4つのうち2つは、AIコンサルティング会社を紹介する同じ記事でした。ニュースを集めるときに、広告に近い記事も混ざるようです。どんな記事を集めるかは、人が選ぶのが大事だと思いました。
⑦ 実験:ニュースあり vs なし
ポイント:同じ質問でも、社内文書だけだと「資料に記載がありません」、ニュースを足すと出典URL3件・日付付きで他社の動向を回答しました。回答の中身は元の記事と照らし合わせて、一致を確認しています。
python rag.py "他社は最近、生成AIをどう導入している?" --no-news
python rag.py "他社は最近、生成AIをどう導入している?"
💡 --no-news を付けると、ニュースを使わずに社内文書だけで答えます。
結果はこうなりました。
| 社内文書だけ | 社内文書+ニュース | |
|---|---|---|
| AIの答え | 「他社の生成AI導入については、資料に記載がありません」 | NECの社内活用、Sansanの調査(担当者1,077名)、AI導入後の課題の3つを紹介 |
| 日付 | なし(「日付や出典もお示しできません」) | 2026年2月18日、2026年4月4日など |
| 出典URL | なし | 3件(DXマガジン、Sansan、パーソルグループ) |
社内文書だけだと、AIは他社のことを何も知りません。それでも、知ったかぶりをせずに「資料に記載がありません」と正直に答えたのは安心でした。そのうえで「参考:当社のルール」として、生成AI利用ガイドラインの中身を添えてくれました。
ニュースを足すと、同じ質問に日付と出典URL付きで、他社の具体的な動きを答えられるようになりました。外の情報を足したことで、答えに付いた出典URLは0件から3件になりました。
答えは本当に合っていた?
AIが出したURLを実際に開いて、その内容が本当に書いてあるか確かめました。AIは、それらしいけど間違ったことを言うことがあるからです。
NECの記事(DXマガジン)を実際に開いて、AIの答えと照らし合わせました。
| AIの答え | 記事に書いてあったか |
|---|---|
| 社内向けの生成AI環境を整えている | ✅ あった |
| 提案書作成・議事録要約・コーディング支援に使っている | ✅ あった |
| 「生成AIを鵜吞みにしない」運用を掲げている | ✅ あった(AIの出力をそのまま使わず、社内レビューを続けている) |
| 安全面の設計やルール作りをしながら進めている | ✅ あった |
AIの答えは、記事の内容とぴったり合っていました。「それらしいけど実は違う」ということは、今回はありませんでした。Sansanの調査(担当者1,077名、90.7%が「AIが社内の情報を把握すれば成果が変わる」と回答、データベースが完璧に整っているのは22.2%)も、記事を開いて確かめたところ、数字まで合っていました。
💡 社内AIを使うときも、大事な判断の前には出典を開いて確かめるのが安心です。出典が付いていれば、それがすぐにできます。
⑧ 実験:Bright Dataあり vs なし
ポイント:誰でも読める公開ニュース記事10件では、Bright Dataなしでも10件、Bright Dataありでは9件の本文が取れました。Bright Dataが欠かせなかったのは、本文の取得ではなくGoogleの検索結果の取得です。
参考として、Bright Dataを使わずに、同じニュース記事を取りに行ってみました。プログラムからのアクセスを断るサイトもあるので、差が出るはずです。
python collect.py compare
画面には、記事ごとに「Bright Dataあり / なし」で取れた文字数が並びます。最後の行に、取れた記事の数が出ます。
| Bright Dataあり | Bright Dataなし | |
|---|---|---|
| 取れた記事 | 9/10件 | 10/10件 |
| 取れなかった記事 | 1件(ライオンの記事。3回やり直しても取れなかった) | なし |
| 中身の形 | 見出しや改行が残る。ただし画像のデータ(意味のない英数字の列)も混ざる | 改行がなくなり、1行につながる。メニューやセミナー案内の文字も混ざる |

collect.py compare の実行結果(2026年10月)
💡 「なし」のほうは、メニューや広告の文字も混ざるので、文字数が多いほど良いとは限りません。気になる記事は、notepad news\articles.json で中身を見てみましょう。
正直に書きます。予想は外れました。 Bright Dataを使わなくても、10件すべて取れました。逆に、Bright Dataを使った側が1件取れていません。今回集まったのは、企業のお知らせページやニュースサイトなど、ふつうに誰でも読めるページばかりだったからだと思います。
つまり、「記事の本文を取ってくる」だけなら、今回の記事ではBright Dataがなくても困りませんでした。
では、中身はどう違うのか。NECの記事で、あり・なしの先頭400文字を並べてみました(使った peek.py は「コピー用コード」にあります)。
python peek.py 7

どちらも、先頭は本文ではなくサイトのメニューでした。違うのは形です。
-
Bright Dataあり:見出しや改行が残り、どこから本文かを人が追いやすい。ただし、ロゴ画像のデータ(
data:image/png;base64,iVBOR...のような英数字の列)が混ざっていて、その分だけ6,000文字の枠をむだに使っていました。 - Bright Dataなし:改行がなくなり、メニューもセミナー案内も本文も、1行につながっていました。
どちらが圧倒的に良い、とまでは言えません。それでもAIは、Bright Dataで取った記事からNECの話を正しく拾えていました(⑦で確認済み)。
💡 今回、Bright Dataがないと本当に困ったのは、Googleでニュースを検索するところです。プログラムからGoogleの検索結果を直接取るのは難しく、Googleの利用規約でも禁止されています。本文を取る部分は、アクセスを断るサイトが混ざったときに効いてくる、「保険」のようなものだと感じました。
では、Bright Dataが本当に力を発揮するのはどこか。答えは、毎日、たくさんのページを取りに行き続けるところでした。それが、このあとの⑩〜⑫です。
⑨ 実験:うちのルールと他社の話、混ざらない?
ポイント:社内文書4件に対してニュースのかたまりが270件あると、AIに渡す4つがすべてニュースになり、社内ルールが届きませんでした。「社内2つ+ニュース2つ」に枠を分けると、2つの質問とも期待どおりに答えました。
外の情報を入れたら、ちょっと心配になったことがありました。
「他社がやっていることを、AIがうちの会社のルールみたいに答えたらまずくない?」
たとえば、ニュースに「A社はChatGPTを全社導入」と書いてあっても、うちの会社のルールは「使っていいのはClaudeだけ」です。そこで、わざと紛らわしい質問をしてみました。
python rag.py "生成AIを仕事で使うときのうちの会社のルールと、他社の最近の動きを教えて"
python rag.py "仕事でChatGPTを使ってもいい?"
最初は、社内のルールが埋もれた
結果は、心配していた「混ざる」とは別の問題でした。そもそも社内文書がAIに届かなかったのです。
- 1つ目の質問では、AIに渡した4つが全部ニュース(しかも同じ記事が3つ)。当社のルールは「資料に記載がありません」でした。
- 2つ目の質問では、4つとも同じ記事のメニュー部分。「使えるのはClaudeだけ」というルールは届かず、「担当部署に確認してください」という答えになりました。
知ったかぶりをしなかったのは安心です。でも、社内AIが自分の会社のルールを答えられないのは困ります。
原因は、数の差でした。検索の対象は、社内文書が4件に対して、ニュースのかたまりが270件。上から4つ選ぶと、ニュースに枠を全部取られてしまいました。
「社内2つ+ニュース2つ」に枠を分けた
画面をClaude Codeに見せて相談すると、原因を説明したうえで、AIに渡す4つの枠を、社内文書から2つ、ニュースから2つ必ず選ぶように直してもらいました(「コピー用コード」の rag.py は、直した後の版です)。

rag.py の「AIに渡した資料」の表示から数えた(2026年10月)
| 質問 | 期待する答え | 直す前 | 直した後 |
|---|---|---|---|
| うちのルール+他社の動き | 「当社のルール」と「他社の動き」が分かれている | ❌ 当社のルールは「記載なし」 | ✅ 「当社のルール」「世の中の動き」を見出しで分けて回答 |
| ChatGPTを使ってもいい? | 「使えない(Claudeのみ)」 | ❌ 「担当部署に確認して」 | ✅ 「結論:使えません。ChatGPTは対象外」 |
直した後は、どちらも期待どおりでした。特に2つ目は、「ChatGPTは社内利用できる?」というニュースが渡されていても、社内ルールを優先して「使えません」と答えました。そのニュースについても、「中身はメニュー部分しかないので根拠にしていません」と断っています。外の情報と社内ルールが混ざることはありませんでした。
💡 外の情報をたくさん足すと、数の少ない社内文書が埋もれます。「社内からいくつ、外からいくつ」と枠を決めておくと安心です。
⚠️ この直しは、⑥と⑦の実験が終わったあとに入れました。そのため、⑥「社内AIを動かす」と⑦「ニュースあり vs なし」に載せたAIの答えの画面は、直す前の rag.py で動かしたものです。「コピー用コード」の今の rag.py で同じ質問をすると、「AIに渡した資料」に必ず [社内] が2つ入るので、画面が少し違います。
💡 今回は、AIに資料を渡すときに「社内文書」「社外ニュース」の印を付けています。外の情報を社内AIに入れるときは、この「出どころの印」が大事になります。
⑩ 毎日の見張り番:更新と削除を見つける
ポイント:見張り番(monitor.py)は、深夜に集めた10件の資料を朝と昼に見直して、新しい記事を合わせて9件見つけ、社内AIの資料を19件に増やしました。誤った「変わった」の判定は、直した版で2件から1件に減りましたが、記事の横の欄の入れ替わりは、まだ「変わった」と出ることがあります。
ここからが、Bright Dataの本領です。
📝 ⑩〜⑫の画面は、記事の公開前にMacで動かし直したものです(2026年10月27日)。Windowsでも、手順と結果の見方は同じです。
⑤で集めたニュースは、その瞬間のものです。次の日には新しいニュースが出ますし、記事が書き換えられたり、消えたりもします。そこで、公開Webを毎日見に行って、社内AIの資料を最新に保つ「見張り番」を作りました。
🤖 Claude Codeがやったこと:monitor.py を書いてくれました。1回動かすと、次の4つをします。
- Bright DataでGoogleニュースを「新しい順」で検索して、新しい記事があれば追加する
- 前に集めた記事をBright Dataでもう一度取りに行き、書き変わった行を見つける
- 消えた記事は、社内AIの資料から外す
- 結果を monitor_log.txt に記録する
STEP 1 見張り番を動かす
「コピー用コード」の「④ monitor.py」を notepad monitor.py で保存して、実行します。
python monitor.py "生成AI 社内 導入"
深夜1時に集めたニュースと、朝(10月27日 9:51)の見張りを比べた結果です。
| 結果 | 件数 |
|---|---|
| 新しい記事 | 7件(富士通、ゴールドウイン、三菱地所リアルエステートサービスなど) |
| 変わった | 2件 |
| 変化なし | 8件 |
| 取れなかった | 0件 |
ひと晩で、新しいニュースが7件。社内AIの資料は、10件から17件に増えました。「1回集めて終わり」だと、この7件は社内AIから見えないままでした。
STEP 2 毎朝自動で動くようにする
Windowsに最初から入っている「タスクスケジューラ」(決まった時間にプログラムを動かす機能)を使います。
まず、PowerShellを閉じてもキーが消えないように、今のキーをパソコンに覚えさせます(キーを打ち直す必要はありません)。
[Environment]::SetEnvironmentVariable("BRIGHTDATA_API_KEY", $env:BRIGHTDATA_API_KEY, "User")
[Environment]::SetEnvironmentVariable("BRIGHTDATA_SERP_ZONE", $env:BRIGHTDATA_SERP_ZONE, "User")
[Environment]::SetEnvironmentVariable("BRIGHTDATA_UNLOCKER_ZONE", $env:BRIGHTDATA_UNLOCKER_ZONE, "User")
次に、notepad run_monitor.bat で、自動で動かすためのファイルを作ります。
chcp 65001
cd /d %~dp0
.venv\Scripts\python.exe -X utf8 monitor.py "生成AI 社内 導入" >> monitor_run.txt 2>&1
最後に、毎朝7時に動くように予約して、試しに1回動かします。
schtasks /create /tn WebMonitor /sc daily /st 07:00 /tr "$PWD\run_monitor.bat"
schtasks /run /tn WebMonitor
💡 自動で動くのは、その時間にパソコンの電源が入っていて、ログインしているときだけです。止めたいときは schtasks /delete /tn WebMonitor で消せます。
見張り番が、最初は勘違いした
1回目の結果をよく見ると、「変わった」が2件ありました。でも、本当に記事が変わったわけではありませんでした。
変わっていたのは、ニコニコニュースの記事の横にある記事一覧と、山形新聞の「新着ニュース」の欄だけでした。画面をClaude Codeに見せると、原因を説明して直してくれました。直した版には、次の3つの直しが入っています。
| 起きること | 原因 | 直し方 |
|---|---|---|
| よこの「おすすめ記事」や広告が変わっただけで「変わった」 | ページ全体を比べていた | 見出しの一覧やリンクの行を外し、「。」で終わる文章だけを比べる |
| 前回だけ「ページが見つかりません」だった記事が、今回は読めた | 一時的に開けなかっただけ。記事は消えていなかった | 1回見つからなければ「消えたかも」、2回続けて見つからなければ「消えた」として外す |
| 検索の返事が空だった日に、全体が止まった | 検索に失敗すると終わる作りだった | 検索だけ休んで、今ある記事の見張りは続ける |
特に2つ目は大事です。1回開けなかっただけで「消えた」と判定すると、まだある記事まで社内AIから消してしまうところでした。
直した版(「。」で終わる文章だけを比べる版)で、続けて動かした結果です(9:54)。
「変わった」は2件から1件に減りました。ただ、残った1件も、よく見るとゴールドウインの記事の横にある「新刊案内」やAIツールの宣伝の欄の変化でした。宣伝文のように「。」を含む欄は、まだ本文と見分けられません。完璧ではありません。
数時間後にも見に行った
同じ日の13時に、もう一度見張り番を動かしました。これまでの回の結果は、次のコマンドで一覧にできます(Macでは grep "チェック結果" monitor_log.txt)。
Select-String "チェック結果" monitor_log.txt -Encoding utf8

monitor_log.txt の記録(2026年10月27日)
13時の回では、新しい記事が2件見つかりました。在ベトナムの日系企業向けに、生成AIを使うエンジニアチームを提供するサービスの記事と、生成AI経由の個人情報・機密情報の流出を送信前に止めるサービス(MugendAI)の記事です。社内AIの資料は、17件から19件に増えました。一方で「変わった」が3件出ましたが、3件とも記事の横にある記事一覧が入れ替わっただけでした。
なお、Macで動かし直した今回は、タスクスケジューラは使っていません。13時の回は、時間になったら1回だけ動くように待たせて実行したものです。Windowsでタスクスケジューラに登録した場合は、手で動かしたいときに次のコマンドも使えます(schtasks /run /tn WebMonitor)。
💡 タスクスケジューラは、最初の設定のままだと「その時間にパソコンが動いていて、電源につないでいるときだけ」動きます。ノートパソコンなら、次の1行で「動けなかったら、パソコンを開いたときにすぐ動く」「バッテリーでも動く」設定にできます。僕もこの設定に変えました(「State」の下に Ready と出れば成功です)。
Set-ScheduledTask -TaskName WebMonitor -Settings (New-ScheduledTaskSettingsSet -StartWhenAvailable -AllowStartIfOnBatteries -DontStopIfGoingOnBatteries)
💡 「変わった」と出たときに、どの行が変わったか(+と-の行)も一緒に表示されるので、人が一目で確かめられます。見張り番の結果は、最後は人が確かめる前提で使うのが安心です。
▶ 見張り番で使った2つの機能の仕様は、公式ドキュメントで確認できます:SERP API の公式ドキュメントを見る/Web Unlocker API の公式ドキュメントを見る
⑪ 競合の料金比較表を作る
ポイント:生成AIツール4社の料金ページから、合計28プランを抜き出してExcelで開ける表にできました(ChatGPTはプラン名6件のみで、値段は0件)。AIの書き方のゆれによる誤検知は、ページの変化をBright Dataで先に確かめる方式で、ページが変わらなかったGemini(2回目・3回目)とChatGPT(2回目)については防げました。
次は、競合の価格・商品情報です。題材は、生成AIツール4社(ChatGPT・Claude・Gemini・Microsoft Copilot)の料金ページにしました。
🤖 Claude Codeがやったこと:pricing.py を書いてくれました。
-
competitors.txtに書いた会社の料金ページを、Bright Dataで取ってくる(比べるため、Bright Dataなしで直接開けるかも試す) - Claudeが、ページから「プラン名・値段・月額か年額か・誰向けか」を抜き出す(ページにない値段は推測で埋めない)
- Excelで開けるファイル(prices_latest.csv)に保存する
- 2回目からは、前回と比べて「値段が変わった」「増えた」「なくなった」プランを教える
STEP 1 比べる会社を決めて、動かす
notepad competitors.txt で、「会社名,料金ページのURL」を1行ずつ書きます。
ChatGPT,https://openai.com/ja-JP/chatgpt/pricing/
Claude,https://claude.com/pricing
Gemini,https://gemini.google/subscriptions/
Microsoft Copilot,https://www.microsoft.com/ja-jp/microsoft-365/copilot/pricing
💡 料金ページの場所は変わることがあります。保存する前に、ブラウザで開いて料金の表が出るか確かめてください。
「コピー用コード」の「⑤ pricing.py」を notepad pricing.py で保存して、実行します。
python pricing.py

pricing.py の1回目の実行結果(2026年10月27日)
4社で合わせて28プランを抜き出せました。Microsoftは「Microsoft 365 Copilot Business アドオン(年払い)¥2,698(通常 ¥3,148)」と、割引前の通常価格まで拾えています。結果は、そのままExcelで開けます(start prices_latest.csv)。
正直に書くと、うまくいかなかったこともあります。
- ChatGPTは値段を読み取れませんでした。 Bright Dataで約1万文字(10,945文字)のページは取れて、AIはプラン名(無料版・Go・Plus・Pro・Business・Enterprise)の6件までは読めました。でも、値段の欄はすべて空のまま。料金の数字を「ページを開いたあとで組み立てる」作りのページだったようです。AIはページにない値段を推測で埋めないので、値段は0件でした。
- ChatGPTとMicrosoftは、Bright Dataなしでは開けませんでした。 ClaudeとGeminiの料金ページはBright Dataなしでも直接開けましたが、ChatGPTとMicrosoftは、プログラムから直接取りに行くと「403」(アクセスお断り)のエラーが返ってきました。この2社は、Bright Dataを通したから比較表に入れられました。
値段は変わっていないのに「変わった」
同じ日に続けてあと2回(2回目・3回目)動かすと、値段は変わっていないのに、こんな「違い」が出ました。
| 出た「違い」 | 本当は? |
|---|---|
| Claude:「Team Standard seat」「Team Premium seat」がなくなり、「Team (Standard seat)」「Team (Premium seat)」が増えた | 同じプラン。AIが書き方を変えただけ |
| Claude:Enterpriseの値段が「Seat price + usage at API rates(US$20/seat/month、年払い、最低20席)」→「US$20/seat/month」 | 同じ値段。説明が省かれただけ |
| Microsoft:6プランすべてが「値段変更」(例:「¥4,228(ユーザー/月)」→「¥4,228 ユーザー/月(消費税別)」) | 同じ値段。「消費税別」が付いただけ |
AIは、同じページを読んでも、毎回少しずつ違う書き方で表にします。AIの表どうしを比べると、そのゆれを「変化」と勘違いしてしまいます。
pricing.py には、こうした勘違いを減らすために、Claude Codeが提案してくれた順番で確かめる仕組みを入れてあります。
- まず、Bright Dataで取ったページが、前回と1文字でも変わったかを確かめる
- 変わっていなければ「値段の変更なし」。AIには聞かない(AIのお金もかからない)
- 変わっていたときだけAIに表を作り直してもらい、数字が同じかどうかで比べる
つまり、変化を見つけるのはBright Data、変化の意味を読むのはAIという役割分担です。「コピー用コード」の pricing.py も、この順番です。
2回目と3回目を、ページの文字数で比べた
それでも「違い」が出たのはなぜか。2回目と3回目の結果を、Bright Dataで取ったページの文字数と並べました。
| 会社 | ページの文字数(2回目→3回目) | どうなったか |
|---|---|---|
| Gemini | 21,611 → 21,611 | ✅ 「ページの中身は前回と同じ → 値段の変更なし(AIは使いません)」 |
| Claude | 22,240 → 22,261 | ページが少し変わったのでAIが読み直して ❌ 「増えた:Team Premium seat ほか」「値段変更:Pro、Enterprise」(書き方が2回目の前に戻っただけ) |
| ChatGPT | 10,945 → 10,937 | ページが少し変わったのでAIが読み直した。結果は ✅ 「前回との違い:なし」 |
| Microsoft Copilot | 19,002 → 18,266 | AIが読み直して ❌ 6プランすべて「値段変更」(「消費税別」の付け方が変わっただけ) |
結果は、半分うまくいったというところです。
- ページが本当に同じだったGemini(2回目・3回目)とChatGPT(2回目)は、AIを使わずに「変更なし」と判定できました。
- でも、ほかのページは、取るたびに値段と関係のないところが少しずつ変わっていました。そのたびにAIが読み直すので、ClaudeとMicrosoftでは、またAIの「書き方のゆれ」が出ました(同じプランを別の名前で書いた、値段に「消費税別」を付けたり外したりした)。
まとめると、料金の見張りは「変化があったかもしれない」というお知らせとしては使えます。でも、「増えた」「値段が変わった」をそのまま信じず、元のページを人が確かめる前提で使うのがよさそうです。
💡 もっと勘違いを減らすなら、「ページ全体」ではなく「ページの中の値段の数字」だけを比べる方法があります。これは今回は試していません。
💡 比べた値段を社内で使うときは、必ず元の料金ページを開いて確かめましょう。税込みかどうか、年払いか月払いかなど、条件で値段は大きく変わります。
⑫ 自分でWebを調べて答えるAIエージェント
ポイント:AIエージェントは、検索23回・ページ11件を自分で調べて回答しました。条件にぴったり合わない事例は「やや弱い」「除外した」と書き分け、確かめた記事の日付と内容は元の記事と一致しました。
ここまでは、「集める人(プログラム)」と「答える人(AI)」が分かれていました。最後は、AIが自分で調べて答える「AIエージェント」です。
🤖 Claude Codeがやったこと:agent.py を書いてくれました。AIに2つの道具を渡して、使い方はAI自身に任せます。
| 道具 | やること | 中身 |
|---|---|---|
| [検索] | Googleで検索する | Bright Data(SERP API) |
| [読む] | 見つけたページを開いて読む | Bright Data(Web Unlocker API) |
AIへのお願い(指示文)には、「検索結果の見出しだけで答えず、ページを読んで確かめる」「根拠にしたページのURLと日付を付ける」「分からないことは分からないと書く」と入れてあります。
STEP 1 質問してみる
「コピー用コード」の「⑥ agent.py」を notepad agent.py で保存して、実行します。
python agent.py "国内企業で、この1か月に生成AIを全社導入したと発表した事例を3つ、日付付きで教えて"
AIは、言葉を変えながら検索を23回し、ページを11件開いて読みました。そして、こう答えました。
- 結論:この1か月(9月27日〜10月27日)の事例を3件見つけた。ただし3件とも、導入した企業ではなく、AIサービスを提供する会社の発表だった
- 3件は、ウォーターエージェンシー(10月1日・ChatSenseを全社導入)、ヤマザワ(10月8日・ChatAIを「全社標準業務ツール」に)、東京パワーテクノロジー(9月29日・3,000以上のアカウントで全社展開。乗り換えなので「やや弱い事例」)
- 1年前の発表(NEWONE)、期間外の発表(TOMAコンサルタンツグループ)、全社ではない導入(花王の研究部門)は、理由を付けて除外。「取りこぼしがある可能性がある」と、分からないことも書いている
条件にぴったり合う答えが少ないときに、無理に3つを揃えず、確かさの違いを正直に書き分けたのは、社内で使うAIとして大事なポイントだと思いました。
答えは本当に合っていた?
ヤマザワの発表(ユーザーローカルのプレスリリース、2026年10月8日)を開いて、確かめました。
| AIの答え | 確かめた結果 |
|---|---|
| ヤマザワに「ユーザーローカル ChatAI」を提供開始 | ✅ 記事のタイトルにあった |
| 「全社標準業務ツール」と位置づけ、店舗と本部の双方で使っている | ✅ 担当者コメントにあった |
| 記事の日付は2026年10月8日 | ✅ 合っていた |
| 全従業員に広げたかどうか(人数など) | ✅ 記事に書かれておらず、AIも「確認できなかった」と答えていた |
大事なところは合っていて、記事に書かれていない人数などは「確認できなかった」と書き分けていました。指示文に入れた「分からないことは分からないと書く」が、そのまま効いた形です。
💡 AIエージェントが出典を付けてくれるのは、「信じていい」という意味ではありません。「すぐに確かめられる」という意味です。大事な判断の前には、出典を開いて確かめましょう。
⑬ かかったお金
会社で「これ、うちでも使えない?」と話すとき、必ず聞かれるのが「で、いくら?」ですよね。実験をすべて終えたあと、それぞれの管理画面で確かめました。
| サービス | 使ったこと | かかった額 |
|---|---|---|
| Bright Data | ニュースの検索と記事の取得(⑤)、見張り番(やり直した回も含む)、料金ページの取得(3回)、AIエージェントの検索と読み込み | 約0.42ドル(約67円)。検索(SERP API)が0.06ドル、記事・ページの取得(Web Unlocker API)が0.36ドル |
| Claude | 料金表づくり(3回)、AIエージェント(1回) | 1.24ドル(約200円)。使ったモデルは Claude Sonnet 5.5 |

Bright DataとClaude Consoleで確かめた利用額(2026年10月26日〜27日)
Bright Dataのうち、見張り番は1回あたり多くても約0.06ドル(約10円)でした(10月27日の分は、3回の見張りと動作確認で約0.18ドル)。毎日1回、1か月動かしても約2ドル(約300円)の計算です。
💡 正確に測るコツ:作業を始める前に、両方の管理画面で今の利用額をメモしておきます。終わったあとの額との差が、今回かかった額です。
💡 Claude Code(プログラムを書いてもらうAI)の利用料は、この表には入っていません。
実際に使ったお金は、合わせて約270円。Bright Data約67円+Claude約200円で、「毎日Webを見張る社内AI」の試作品が動きました。
▶ 自分の使い方だといくらになるか、Bright Data の公式サイトで料金プランを確認できます:Bright Data の料金プランを確認する(公式サイト)
つまずきポイント集
英語のエラーが出ても慌てなくて大丈夫です。ほとんどは下のどれかです。分からなければ、画面のスクショをClaude Codeに見せると原因を教えてくれます(APIキーが映らないように注意)。
| こんなとき | 原因 | どうするか |
|---|---|---|
| python が見つからない、Microsoft Storeが開く | Pythonが入っていない | ④のSTEP 2をやる |
| Activate.ps1 で赤いエラー | Windowsの安全設定 | Set-ExecutionPolicy -Scope CurrentUser RemoteSigned を実行し、Yで答えてもう一度 |
| cd ~\Desktop で「存在しません」 | デスクトップがOneDriveの中にある | cd ~\OneDrive\Desktop を試す |
| No module named … | 道具箱が開いていない | 行の頭に (.venv) があるか確かめ、④のSTEP 3をやり直す |
| can't open file | ファイル名が違う(メモ帳が .txt を付けた、など) | dir で名前を確かめ、Rename-Item "今の名前" rag.py のように直す |
| SyntaxError | ファイルの中身が違う(コマンドを貼った、など) | notepad ファイル名 で開き、全部消してプログラムを貼り直す |
| invalid x-api-key | Claudeのキーが間違っている | sk-ant- を自分で打ってから貼ると二重になります。キーをまるごと貼り直す |
| credit balance is too low | Claudeの残高不足 | Claude Consoleで残高を確かめる |
| BRIGHTDATA_API_KEY が登録されていません | PowerShellを開き直してキーが消えた | ④のSTEP 4をやり直す |
| 401 や Unauthorized | Bright Dataのキーが間違っている | キーをコピーし直して登録し直す |
| zone を含むエラー | ゾーン名が違う | ②でメモした名前で、④のSTEP 4の3・4行目を登録し直す |
| 見つかったニュース: 0件 や「JSONとして読めませんでした」 | 検索結果が予想と違う形で返ってきた | スクショをClaude Codeに送る。下の「URLを自分で集める方法」でも先に進められる |
URLを自分で集める方法
ニュース検索がうまくいかないときは、読みたいニュース記事のURLを自分で集めてもOKです。
-
notepad urls.txtでメモ帳を開き、記事のURLを1行に1つずつ貼って保存(5〜10件) - 次のコマンドで本文を取る
python collect.py fetch --urls urls.txt
⑧の実験も python collect.py compare --urls urls.txt で同じようにできます。
※データを集めるときの注意は、②の最初の「はじめに:データ取得・スクレイピングのコンプライアンスメモ」に移動しました。
まとめ:コード未経験でも、ここまでできた
- Bright DataとClaudeでAPIキーを取得すること
- Claude Codeに、やりたいことを日本語で頼むこと(うまくいかないときは、画面のスクショを見せること)
- Claude Codeが書いたプログラムを、メモ帳にコピペして保存すること
- PowerShellでコマンドを実行すること
よくある質問(FAQ)
Q. プログラミング未経験でも作れますか?
A. 作れます。この記事では、自分で書いたコードは0行です。Claude Codeに日本語で頼んで書いてもらったプログラムをメモ帳に保存し、PowerShellで実行しただけです。
Q. かかった費用はいくらですか?
A. 今回の実行(⑤のニュース集めと⑩〜⑫)では、Bright Dataが約0.42ドル(約67円)、Claudeが1.24ドル(約200円)でした(やり直した回も含みます)。Claude Code自体の利用料は含みません(1ドル=160円で換算)。
Q. Bright Dataは何に使っていますか?
A. SERP APIでGoogleの検索結果を取得し、Web Unlocker APIで記事や料金ページの本文を取得しています。⑩の見張り番、⑪の料金比較、⑫のAIエージェントも、この2つの機能を使っています。
Q. Bright Dataを使わなくても、記事の本文は取れますか?
A. 今回の公開ニュース記事10件では、Bright Dataなしでも10件すべて取れました。Bright Dataが必要だったのはGoogleの検索結果を取るところで、プログラムから直接取るのは難しく、Googleの利用規約でも禁止されています。
Q. 外の情報を入れると、社内ルールと混ざりませんか?
A. 何もしないと、ニュースの数が多すぎて社内ルールが埋もれました。AIに渡す4つの枠を「社内文書2つ+ニュース2つ」に固定すると、社内ルールを優先して答えるようになりました(⑨)。
Q. 見張り番は毎日自動で動きますか?
A. Windowsのタスクスケジューラで、毎朝7時に動くよう予約できます。ただし、その時間にパソコンが起動していないと動かないため、「StartWhenAvailable」(動けなかったら次に起動したときに動く)の設定をおすすめします(⑩)。
Q. Webのデータを集めるときに、気をつけることは?
A. Bright Dataの利用ポリシーと、各サイトの利用規約・robots.txtを確認してください。記事本文の転載や、個人の情報の収集はしないでください。詳しくは②の「はじめに:データ取得・スクレイピングのコンプライアンスメモ」にまとめています。






























