AI知識まとめノート
入荷通知botを自作してみた|Playwright×Discord×無料VPSで24時間在庫チェック

AIと「本の入荷通知bot」を作ってみた。Playwright×Discordで在庫チェックを完全無料・24時間運用

· ENDY

ほしい限定本やカードゲームの完全版が、気づいたらいつも売り切れ。入荷してもあっという間になくなりますよね。

それなら「入荷した瞬間に教えてくれるbot」を作ればいいじゃないか、ということで、AIと一緒に在庫通知botを自作してみました。しかもクラウドの無料枠を使って、24時間ずっと動かしています。

この記事では、そのbotがどんな仕組みで動いているのかを、初心者の方にもわかるようにまとめていきます。


作ったものはこんなbot

やっていることはシンプルで、こんな見張り番です。

  • 監視したい本と書店をリストに登録しておく
  • 30分ごとに各書店の在庫ページを自動でチェック
  • 「在庫なし」から「在庫あり」に変わったら、Discordに通知が飛ぶ

人気商品は入荷から売り切れまでが本当に早いので、その「入荷の瞬間」を逃さないのが狙いです。スマホにDiscordの通知が来たら、すぐ買いに動けます。


全体の仕組み(ざっくり)

中身は、役割ごとに小さな部品に分かれています。

入荷通知botの全体構成。監視リスト(どの本をどの書店で見るか)をもとに、司令塔が各書店をチェック。ブラウザ自動操作で在庫ページを開き、在庫あり・なしを判定。前回の状態と比べて、変化があればDiscordに通知する流れ

  • 監視リスト … どの本を、どの書店で見るかを書いたファイル
  • 司令塔 … リストを上から順にチェックしていく親プログラム
  • 書店ごとの読み取り係 … 書店ごとにページの作りが違うので、それぞれ専用の読み方を用意
  • 記憶係 … 前回の在庫状態を覚えておき、今回と比べる
  • 通知係 … 変化があったときだけDiscordにメッセージを送る

ポイントは「書店ごとの読み取り係」を分けていることです。くまざわ書店、ジュンク堂、有隣堂、TSUTAYAなど、サイトごとに在庫の表示方法はバラバラなので、共通の土台は使い回しつつ、判定部分だけ書店ごとに差し替えられるようにしています。


どうやって在庫を見ているの?

ここが一番のキモです。最近の書店サイトは、JavaScriptで在庫情報をあとから表示するところが多く、ただページのHTMLを取得するだけでは在庫がわかりません。

そこで使ったのが「Playwright」というツールです。これは本物のブラウザ(Chromium)を裏側で自動操作してくれるもので、人間がページを開いたときと同じ状態のHTMLを取得できます。

1回のチェックは、こんな流れで動きます。

  1. 監視リストを読み込む
  2. 本ごと・書店ごとに、Playwrightでページを開く
  3. 表示されたHTMLから「在庫あり・なし」を判定する
  4. 前回の状態と比べて、変化があるか確認する
  5. 在庫が復活していたらDiscordに通知する
  6. 今回の状態を保存して、次回の比較に使う

これを30分ごとに自動でくり返しています。

情報

「人が見るのと同じ状態のページを取れる」のがPlaywrightの強みです。JavaScriptで描画される今どきのサイトでも、在庫の有無をちゃんと読み取れます。


いつ通知が来るようにしたか

ただ「在庫あり」のたびに通知すると、うるさくなってしまいます。そこで通知のルールを工夫しました。

  • 在庫なし → 在庫あり に変わった瞬間に通知(入荷検知!)
  • 在庫ありが続いている間は、数回までリマインド通知(買い逃し防止)
  • 売り切れたら静かになる
  • 日付が変わったらカウントをリセットして、また入荷時に通知

「入荷したときと、その直後だけ教えてくれて、売り切れたら黙る」という、ちょうどいい塩梅を目指しています。


こだわりポイント:完全無料で24時間動かす

自作botでいちばん悩むのが「どこで動かし続けるか」です。自分のPCをずっとつけっぱなしにするのは大変ですよね。

そこで、クラウドの「ずっと無料」で使える枠(無料VPS)に置いて、30分ごとの自動実行を仕込みました。これで、自分のPCを閉じても24時間ノンストップで在庫を見張ってくれます。電気代もかかりません。

ヒント

クラウドには「期間限定の無料お試し」と「ずっと無料」の2種類があります。この違いを理解して“ずっと無料”の枠を選ぶのが、長く無料で運用するコツです。

さらに、もし無料サーバーが止まってしまったときのために、手元のPCでも同じbotを動かせるように準備しておきました。住宅のネット回線から動かすと、サイト側にブロックされにくいというメリットもあります。普段はクラウド、いざというときは手元、という二段構えです。


作ってみた感想と注意点

実際に動かしてみると、ほしかった本の入荷通知がちゃんとスマホに届くようになって、かなり快適になりました。AIと一緒だと、書店ごとの読み取り部分もサクサク組めて、思ったより短時間で形になったのが驚きでした。

一方で、気をつけたい点もあります。

  • スクレイピングは各サイトの利用規約を必ず確認すること
  • アクセス間隔は十分に空けて、相手のサーバーに負担をかけないこと
  • あくまで個人的な「在庫チェック」の範囲で使うこと

このあたりのマナーを守るのは大前提です。


まとめ

「ほしい本の入荷を逃したくない」という小さな悩みから始めて、Playwrightで在庫を読み取り、Discordに通知し、無料枠で24時間動かす、というbotをAIと一緒に作ってみました。

仕組み自体は、在庫だけでなく「価格が下がったら通知」「再入荷を見張る」など、いろいろな自動化に応用できます。アイデア次第で、自分専用の便利botがどんどん作れるのが面白いところです。

次は、実際の作り方やコードまで踏み込んだ、より詳しい解説もまとめていく予定です。

関連記事