1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

部品の相見積もり表を、毎週自動で作りたい。Claude Code × Bright Dataでやってみたら「エラーにならない間違い」に出会った【製造業・調達編】

1
Posted at

調達の仕事で、こんな作業をしていませんか。

購買サイトをいくつも開いて、

同じ部品の価格を探して、

Excelにコピーして、

入数が違うから1個あたりの単価を計算し直して……。

しかも、価格は毎週のように変わります。

「この相見積もり表、自動で作れないだろうか」

今回は、これを Claude Code と Bright Data のCLI でやってみました。

▶ Bright Data の無料トライアルに登録して、Webデータ収集を試す

対象にしたのは、製造業の現場で実際に買われている、ちょっとニッチな3品目です。

結論から言うと、価格比較表も、毎週取り直すスクリプトも、AIが作ってくれました。

ただし、そのスクリプトを実際に動かしてみると、

エラーは1つも出ていないのに、間違った価格が入っている

という問題が見つかりました。

今回は、そこも含めて書いていきます。

今回調べた3品目

品目 どんな場面で使うか
PEEK樹脂 丸棒(φ20mm × 長さ300mm前後) 半導体装置や医療機器の部品を削り出す素材
フッ素ゴム(FKM)Oリング P-20 設備の保全、薬品や油が流れるラインのシール
超硬スクエアエンドミル 2枚刃 φ1mm 精密部品の切削に使う、消耗品の刃物

どれも、一般の人はまず買わないけれど、工場では毎月のように買っているものです。

あわせて、超硬工具の主な原料である タングステンの価格(市況) も調べてもらいました。

この記事でやること

購買サイトを探す
       ↓
robots.txt と利用規約を確認して、対象にしていいサイトを決める
       ↓
価格・入数・出荷目安を集めて、比較表を作る
       ↓
市況(タングステン)も調べて、価格交渉の材料をまとめる
       ↓
毎週同じ比較ができるスクリプトを作る
       ↓
実際に動かして、本当に正しいか確かめる

最後の「本当に正しいか確かめる」で、問題が見つかりました。

! 始める前に:データ取得のコンプライアンスメモ

  • 扱うのは、ログインせずに見られる公開価格だけです。会員価格・見積価格は扱いません。
  • Bright Dataの利用ポリシー(Acceptable Use Policy)でも、ログインが必要なページの情報を集めることは禁止されています(利用ポリシーを読む)。
  • 取得する前に、各サイトの robots.txt と利用規約を確認します(STEP 2 でルールにしています)。規約を確認できなかったサイトは、毎週の取得対象から外します。
  • 同じサイトへのアクセスは、10秒以上の間隔をあけます。
  • 集めた価格は、社内の比較資料として使うことを前提にしています。サイトによっては、取得した情報の複製・転載を禁止しています。
  • 通販サイトの価格は頻繁に変わります。記事中の価格は、2026年10月12日時点のものです。

STEP 1. Bright Data CLI を準備する

ポイント:準備は npm install -g @brightdata/cli と bdata login の2行です。「Network request failed」と出たら、bdata zones で確認したゾーン名を --zone で指定すると動きます。

今回は、Bright Data の CLI(コマンドで動かすツール)を使います。

Claude Code が自分で bdata コマンドを実行して、検索やページ取得をします。

npm install -g @brightdata/cli
bdata login

! つまずきポイント
一つ注意点があります。
自分の環境では、CLI が最初から使おうとする「ゾーン」がアカウントに存在せず、
Network request failed という、ネット接続の問題に見えるエラーが出ました。
bdata zones でアカウントにあるゾーンの名前を確認し、
--zone でその名前を指定すると動きます。

bdata zones で、アカウントにあるゾーンを確認したところ
bdata zones で、アカウントにあるゾーンを確認したところ

▶ まだアカウントがない方は、ここから登録できます:Bright Data の無料トライアルに登録する

STEP 2. 「規約を確認してから取る」をルールにする

ポイント:CLAUDE.md に「取得する前に robots.txt と利用規約を確認し、自動取得を禁止しているサイトは外す」「すべての数値に取得元URLと取得日を付ける」「型番が一致しない品は類似品と明記する」などのルールを書きました。

価格を集めるときに一番気をつけたいのは、

そのサイトが自動での取得を認めているかどうか です。

そこで、CLAUDE.md にこう書きました。

# 調達・価格調査プロジェクト
 
あなたは製造業の調達担当を支援するアシスタントです。
 
## Web調査のルール
- Web上の情報は Bright Data CLI(bdata コマンド)で取得してください。
- 取得する前に、そのサイトの robots.txt と利用規約を確認してください。
  自動取得を禁止しているサイト・パスは対象から外し、外した理由を記録してください。
- 公開ページ(ログイン不要の価格)のみ。会員価格・見積価格は扱わない。
- 同じサイトへの連続アクセスは控えめに(1サイトあたり必要最小限のページ数)。
 
## 記録のルール
- 価格は「税抜/税込」「1個あたり/1パックあたり」をページ表記どおりに記録する。
- すべての数値に取得元URLと取得日を付ける。
- 型番・仕様が完全一致しない品は「類似品」と明記する(勝手に同等扱いしない)。

最後の 「類似品と明記する」 も大事です。

AIは、少し仕様が違うものでも「同じようなもの」として並べてしまうことがあるからです。

指示(prompts.md)には、3品目と、やってほしいことを書きました。

## やること
1. 各品目について、国内の工業用品・部品の購買サイトを3サイト以上探す
2. 各サイトの robots.txt・利用規約を確認し、対象にできるかを判断する
3. 対象にできたサイトから、価格・入数・1個あたり単価・出荷目安・メーカー/型番を取得
4. 毎週同じ比較ができるように、URL一覧を読み込んで価格を取り直すスクリプトを作る
5. 価格比較レポートを作る(市況の動きと、価格交渉で使える材料を含む)

STEP 3. Claude Code に任せる

ポイント:Claude Code は約14分で、検索21回・ページ取得57回(robots.txt・規約ページを含む)を行いました。Googleでキャプチャが出たときは、自分でBingに切り替えて続けました。

入力したのは、これだけです。

prompts.md の指示に従って作業してください。

Claude Code が検索・規約確認・価格取得を進める様子(実行ログより)
Claude Code が検索・規約確認・価格取得を進める様子(実行ログより)

途中で、Google の検索がうまくいかない場面がありました。

Error: waiting for selector "#main" failed: timeout 30000ms exceeded
Error: google_captcha detected

すると Claude Code は、自分で検索エンジンを Bing に切り替えて 続けていました。

(bdata search は --engine bing で検索エンジンを変えられます)

人が見ていなくても、詰まったら別の方法を試します(今回は Google でエラーが2種類出たあと、Bing に切り替えて検索を続けました)。

▶ --engine(検索エンジンの切り替え)や --zone など、bdata コマンドのオプションは公式ドキュメントで確認できます:Bright Data CLI の公式ドキュメントを見る

項目 結果
かかった時間 約14分
検索した回数 21回
取得したページ 57回(robots.txt・規約ページを含む)

STEP 4. 規約チェックの結果

ポイント:規約の本文が自動取得で読めないサイトは「保留」にして毎週の取得対象から外し、価格が画面上でしか表示されない大手購買サイト2つは対象外になりました。

まず、AIが作ったサイトの判定一覧です。

robots.txt と利用規約のチェック結果(data/site_check.md)
robots.txt と利用規約のチェック結果(data/site_check.md)

ここで、いくつか大事なことが分かりました。

1. 規約が読めないサイトは「保留」にしていた

あるサイトの利用規約には「禁止行為」の条文がありました。

ところが、その本文はページを開いたあとにプログラムで表示される作りで、自動取得では中身を読めませんでした。

AIは、ここを「たぶん大丈夫」で済ませませんでした。

「目で確認するまで、毎週の取得対象から外す」 と判断していました。

2. 価格が取れないサイトもあった

大手の購買サイトのうち2つは、価格が画面上でしか表示されない作りでした。

ページを取得しても、価格の部分が空っぽです。

そのため、今回は対象外になりました。

3. AIが「確認していない」と自白した部分もあった

ある大手通販サイトについて、AIは

「規約で自動収集が禁止されているため対象外にした」

と書いていました。

ただし、よく読むと

「規約ページの本文は今回取得していない。一般に知られている条項に基づく判断」

とも書いてありました。

結論として外したのは慎重な判断です。

とはいえ、根拠は確認していない、ということです。

こういう一文を見落とさないことが大事だと感じました。

STEP 5. 価格比較の結果

3品目とも、3サイト以上で価格を集めることができました。

たとえば、エンドミルの比較表はこうなりました。

超硬エンドミル φ1 の比較表
超硬エンドミル φ1 の比較表

ここで目を引いたのは、

まったく同じ型番の三菱マテリアル製エンドミルが、サイトによって約20%違う

という点です。

サイト 価格(税抜・1本)
たのめーる 1,820円
MonotaRO 1,998円
オレンジブック.Com 2,186円(オレンジブック価格)

さらにAIは、メーカー希望小売価格の表示がサイトによって違う ことにも気づいていました。

同じ型番なのに、2,690円と表示しているサイトと、1,820円(税抜)と表示しているサイトがありました。

「定価改定の前後で表示が混在している可能性がある。販売店に確認が必要」

というのがAIの見立てです。

これは、そのまま価格交渉の質問に使えます。

市況:タングステンは、国際価格と中国国内価格で動きが逆だった

タングステンの価格も、公開されている情報から時系列でまとめてくれました。

・国際価格(EU):2025年前半の約340ドルから、2026年9月には約2,900ドルへ
・中国国内価格:2026年3月がピーク。7月から10月にかけて約25%下落

さらに、こんな試算もしていました。

φ1エンドミル1本に含まれるタングステンは約6g
→ 原料分の値上がりは、1本あたり300円弱

「原料が上がったので値上げします」と言われたとき、

値上げ幅が原料分の上昇を大きく超えていないか を確かめる材料になります。

! 注意
試算には、AI自身が「仮定」として置いた数字が入っています。為替レートなどの前提は、使う前に必ず確認してください

価格交渉で使える材料

レポートの最後には、交渉で使える材料が事実ベースでまとまっていました。

価格交渉で使える材料(レポートより)
価格交渉で使える材料(レポートより)

STEP 6. 毎週取り直すスクリプトを、実際に動かしてみた

ポイント:AIが作った価格取得スクリプトを実行すると、9件中8件が [ok] でした。ところがそのうちPEEK丸棒は、別の商品の価格(税抜4,398円。正しくは9,398円)を拾っていました。

ここからが本番です。

AIは、毎週同じ比較をするためのスクリプト(tools/refresh_prices.py)も作ってくれていました。

ただし、レポートの最後にこう書いてありました。

「このスクリプトは、一度も実行していません」

実行に承認が必要な設定だったため、作るだけで終わっていたのです。

そこで、自分で実行してみました。

スクリプトの1回目の実行結果
スクリプトの1回目の実行結果

9件中8件が [ok]。

1件だけ parse_failed(価格を読み取れなかった)でした。

「8件取れたなら、まあまあかな」

そう思って CSV を開いたら、おかしな行がありました。

PEEK丸棒  税抜 4,398円  税込 10,338円  status: ok

税抜が4,398円なのに、税込が10,338円。

計算がまったく合いません。

正しい税抜価格は9,398円です。

にもかかわらず、status は ok になっています。

! つまずきポイント
エラーは出ていない。処理も成功している。でも、数字が間違っている。
これが一番怖いパターンです。

このまま毎週回していたら、間違った数字で相見積もり表を作り、間違った数字で交渉していたかもしれません。

STEP 7. Claude Code に直してもらう

おかしかった点を、そのまま Claude Code に伝えました。

不具合の修正を依頼したところ
不具合の修正を依頼したところ

AIが見つけた原因はこうでした。

不具合 原因
PEEK丸棒が 4,398円 ページの下の方にある「新着商品」欄の、別の商品(アクリル板)の価格 を拾っていた
エンドミルが parse_failed 価格の横に「値下げ」という表示が増えて、読み取りのパターンに合わなくなっていた

1つ目は、サイトの見た目が少し変わるだけで、別の商品の価格を拾ってしまう という問題です。

2つ目は、セールなどで表示が変わると、すぐ読み取れなくなるという問題です。

あわせて、同じ間違いに気づけるように、チェックを1つ追加してもらいました。

税抜 × 1.1 と 税込 が合わない行は、status を check_needed にする

ここでも1つ、やらかしがあった

修正のあと、AIは確認のために、ひとつのサイトだけを対象にしてスクリプトを再実行しました。

すると、その日のCSVファイルが、そのサイトの5行だけで上書きされ、ほかのサイトの4行が消えてしまいました。

AIはこれに自分で気づき、消えた4行を戻しました。

さらに、「一部のサイトだけで実行しても、ほかの行は消さない」作りに直していました。

直すこと自体はうまくいきました。

でも、その途中でデータを消していたのです。

直したあとも、ファイルの中身まで確認する 必要があると改めて感じました。

STEP 8. もう一度実行して、本当に直ったか確かめる

修正後のスクリプトを、全サイト分もう一度実行しました。

修正後の実行結果。9件すべて正しい値になった
修正後の実行結果。9件すべて正しい値になった

品目 修正前 修正後
PEEK丸棒(MonotaRO) 税抜 4,398円(間違い) 税抜 9,398円
三菱 MS2MSD0100(MonotaRO) parse_failed 税抜 1,998円

9件すべてが正しい値になりました。

追加したチェックも、前回の間違った組み合わせ(4,398円 / 10,338円)を、ちゃんと「おかしい」と判定することを確かめました。

ここまで確認して、ようやく

「毎週使える」

と言えます。

まとめ

良かったこと
・3品目 × 複数サイトの相見積もり表を、約14分で作れた
・robots.txt と利用規約を確認し、読めない規約は「保留」にする慎重さがあった
・同一型番で約20%の価格差、定価表示の食い違いなど、交渉材料を見つけてくれた
 
注意すること
・AIが作ったスクリプトは、「一度も動かしていない」ことがある
・エラーが出なくても、間違った数字が入ることがある(今回は別商品の価格)
・修正の途中で、データを消してしまうこともある
・「税抜×1.1=税込」のような、数字の整合性チェックを入れておく

AIに任せると、相見積もり表づくりは本当に速くなります。

ただ、本当に大事なのは

「動いたか」ではなく「正しい数字が入っているか」

を確かめることです。

今回は、税込と税抜の計算が合わなかったおかげで、間違いに気づけました。

もし税込価格を表示しないサイトだったら、気づけなかったかもしれません。

自動化するときほど、

「この数字、本当に合ってる?」

と疑うための仕組みを、一緒に作っておくのがおすすめです。

▶ 毎週取り直すと費用はいくらになるか、Bright Data の公式サイトで料金プランを確認できます:Bright Data の料金プランを確認する(公式サイト)

よくある質問(FAQ)

Q. 相見積もり表は、どれくらいの時間で作れましたか?

A. 3品目×複数サイトの価格比較表を、約14分で作れました。その間に、検索21回・ページ取得57回(robots.txt・規約ページを含む)を行っています。

Q. どのサイトからでも価格を取得してよいですか?

A. いいえ。取得する前に、各サイトの robots.txt と利用規約を確認し、自動取得を禁止しているサイトや、規約を確認できなかったサイトは対象から外しました。Bright Dataの利用ポリシーでも、ログインが必要なページの情報を集めることは禁止されています。

Q. 同じ型番でも、サイトによって価格は違いますか?

A. 違いました。三菱マテリアルの同じ型番のエンドミル(φ1)で、たのめーる1,820円、MonotaRO 1,998円、オレンジブック.Com 2,186円(いずれも税抜・1本、2026年10月12日時点)と、約20%の差がありました。

Q. エラーが出なければ、取得した価格は正しいですか?

A. 正しいとは限りません。今回はエラーが出ないまま、別の商品の価格(税抜4,398円)が入っていました。「税抜×1.1=税込」のような数字の整合性チェックを入れておくと気づけます。

Q. Googleの検索がうまくいかないときは?

A. 今回はキャプチャが出てタイムアウトしましたが、Claude Code が bdata search の --engine bing で検索エンジンを切り替えて続けました。

参考リンク

  • Bright Data CLI(公式ドキュメント)
  • 各購買サイトの利用規約・robots.txt
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?