【urlwatch】Web サイトの更新を検知して Slack やメールに通知する方法

  • URLをコピーしました!
目次

はじめに

Web サイトの更新状況を自動で確認し、変更があった際に通知を受け取りたいケースがあります。本記事では、オープンソースの監視ツール「urlwatch」を用いて、特定の Web ページを監視し、更新の差分を Slack やメールへ通知するシステムを構築する手順を解説します。

この記事でわかること
  • urlwatch の基本機能とインストール方法
  • 監視対象とする URL とフィルタ(要素の絞り込み)の設定
  • Slack や Gmail(アプリパスワード)を用いた通知先の設定手順
  • cron を使った定期実行(自動化)の基本

urlwatch とは?

urlwatch は、指定した Web ページや任意のシェルコマンドの出力を定期的に監視し、前回実行時との差分(変更点)を抽出して通知するコマンドラインツールです。Python で開発されたオープンソースソフトウェアとして公開されています。

Web ページやコマンド出力の差分を検知するツールの概要

主な特徴として、以下の機能を持っています。

特定要素の監視(フィルタリング)

Web ページ全体だけでなく、特定の HTML タグや CSS セレクタを指定して監視範囲を絞り込むことができます。これにより、ページ内の広告など動的に変わる要素による不要な通知を防ぎます。

多様な通知先

検知した差分データは、メール(SMTP)のほか、Slack、Discord、Telegram などの各種メッセージングサービスへ自動送信が可能です。

コマンド出力の監視

Web サイトの URL だけでなく、サーバー内で実行したシェルコマンドの標準出力を監視対象にすることも可能です。

インストール手順

urlwatch は Python で開発されているため、Python のパッケージ管理システム pip を使用してインストールします。この手順により、Linux、macOS、Windows など OS を問わず導入が可能です。

Python および pip の準備

インストールには、事前に Python 3 と pip が必要です。 Python がインストールされていない場合は、以下の記事を参照して環境を構築してください。

記事内のバージョン情報は適宜最新のものに読み替えてください

Windows 版 Python のインストーラー実行時に「Add Python to PATH」にチェックを入れてインストールしていれば、標準で pip コマンドが使用可能です。コマンドプロンプトまたは PowerShell を開き、以下のコマンドを実行します。

pip install urlwatch
💡「’pip’ は、内部コマンドまたは外部コマンド…」とエラーが出る場合

環境変数(PATH)が設定されていない状態です。その場合は、以下のコマンドに置き換えて実行してください。

py -m pip install urlwatch

インストール後、以下のコマンドでバージョン情報が表示されれば、正常に導入が完了しています。

urlwatch --version

通知先の設定(urlwatch.yaml)

監視した結果(差分)の送信先を設定します。以下のコマンドを実行すると、通知設定ファイル(urlwatch.yaml)がエディタで開きます。

urlwatch --edit-config

Slack へ通知する場合(Webhook の取得と設定)

Slack の特定のチャンネルへ通知を送る場合、事前に Slack のワークスペースで「Incoming Webhooks」アプリを追加し、Webhook URL を取得しておく必要があります。

設定ファイル内の slack: セクションを以下のように編集します。

slack:
  enabled: true
  webhook_url: 'https://hooks.slack.com/services/XXXX/YYYY/ZZZZ'

Gmail で通知する場合 ※アプリパスワードの取得と設定

Gmail の SMTP サーバーを利用してメール通知を送る設定です。 Google のセキュリティ仕様変更により、従来のパスワードや「安全性の低いアプリのアクセス」は使用できなくなりました。事前に Google アカウント設定の「セキュリティ」メニューから2段階認証プロセスを有効にし、「アプリ パスワード」を生成して取得してください。

セキュリティの観点から、通知送信用の専用 Google アカウントを新規作成することを推奨します。

設定ファイル内の report: セクションを以下のように編集します。

report:
  email:
    enabled: true
    method: smtp
    smtp:
      host: smtp.gmail.com
      port: 587
      starttls: true
      user: 'your_account@gmail.com'
      insecure_password: '生成した16桁のアプリパスワード'
    from: 'your_account@gmail.com'
    to: '通知を受け取るメールアドレス'
    subject: 'Webサイトの更新がありました: {jobs}'

動作確認と定期実行(自動化)の基本

設定が完了したら、実際にツールを動かして動作を確認します。

コマンドでの手動テスト(差分の確認)

以下のコマンドを実行して、登録したサイトの情報を取得します。

urlwatch

初回実行時は現在のページ状態が「基準」として保存されるため、通知は行われません。Web ページに変更があった後(またはテスト用に別の URL を設定した後)に2回目の実行を行うと、差分が検知され、設定した Slack や Gmail へ通知が送信されます。

定期実行の例

運用環境に合わせて、OS の標準機能で urlwatch コマンドを定期実行させることで監視を自動化します。

Windows の場合

「タスクスケジューラ」を使用し、特定の時間や一定間隔ごとに urlwatch コマンドを実行するタスクを作成します。タスクスケジューラの基本的な設定手順については、以下の記事も参考にしてください。

Linux の場合

cron に登録して自動化します(例:*/30 * * * * urlwatch で30分ごとに実行)。

まとめ

本記事では、urlwatch を使用して Web サイトの更新を検知し、自動で通知する仕組みの構築手順を解説しました。

  • urlwatch は Python 環境があれば OS を問わず導入でき、設定ファイルで柔軟な監視が可能です。
  • 動的ページの場合は filter を活用し、監視する HTML 要素を絞ることで不要な通知を抑制できます。
  • Gmail で通知を行う場合は、セキュリティ仕様に準拠した「アプリ パスワード」の設定が必須です。

以上、最後までお読みいただきありがとうございました。

よかったらシェアしてね!
  • URLをコピーしました!

この記事を書いた人

インフラ(クラウド/NW/仮想化)から Web 開発まで、技術領域を横断して活動するエンジニア💻 コンシューマー向けエンタメ事業での新規開発・運営経験を活かし、実戦的な技術ノウハウを発信中

[ Certs ] CCIE Lifetime Emeritus / VCAP-DCA ✒️ [ Life ] 技術書・ビジネス書愛好家📖 / 小・中学校で卓球コーチ👟

目次