無料でウェブページを監視し、変更があった場合にメール・スマートフォン・その他の手段で通知を受け取れる「urlwatch」、オープンソースでセルフホスト可能

ブログや企業サイト、官公庁のお知らせページなど、更新を追いたいのにRSSが用意されていないページは今でも多く存在します。「urlwatch」を使うと、指定したページを定期的に取得して前回との差分を比較し、変更があった時だけ通知を受け取ることが可能です。メールやSlack・Discord・Telegramなどに対応しており、自分専用の更新通知システムを構築できます。
https://thp.io/2008/urlwatch/

thp/urlwatch: Watch (parts of) webpages and get notified when something changes via e-mail, on your phone or via other means. Highly configurable.
https://github.com/thp/urlwatch/
◆urlwatchの機能
Webページやローカルコマンドの出力を定期的に取得し、前回との差分を検出して通知するPython製の変更監視ツールです。
◆urlwatchのインストール方法
Windows 11上でUbuntu 24.04.4 LTSがセットアップされたWSL2にインストールします。pipxを利用するため、以下のコマンドでpipxを導入します。
sudo apt update
sudo apt install -y pipx
pipx ensurepath
いったんシェルを立ち上げ直し、urlwatchをインストール。
pipx install urlwatch
◆urlwatchの使い方
「urlwatch」を実行するたびに前回との差分を確認し、変更があれば通知する仕組みのため、cronやタスクスケジューラなどで定期実行する必要があります。
◆監視対象の設定方法
「urlwatch --edit」で設定ファイルを開き、監視する内容を記述します。サイト全体を監視する最もシンプルな設定は以下の通りです。
name: "urlwatch webpage"
url: "https://thp.io/2008/urlwatch/"
フィルター機能を使うとさまざまな条件で監視対象を絞り込めます。例えばGIGAZINEのトップページで最新記事のタイトルを監視することで、新しい記事が公開されたときに通知を受け取れます。
name: "GIGAZINE New Article"
url: https://gigazine.net/
filter:
- xpath: "(//h2/a)[1]"
- html2text
利用できる主なフィルターは以下の通りです。これらを組み合わせることで、Webページ上の特定の部分だけを監視したり、柔軟なデータ加工を行ったりすることが可能です。
Filter用途beautifyHTML整形cssCSSセレクターでXML/HTMLを抽出csv2textCSVをプレーンテキスト化element-by-classclass指定でHTML要素を抽出element-by-idid指定でHTML要素を抽出element-by-stylestyle指定でHTML要素を抽出element-by-tagtag指定でHTML要素を抽出format-jsonJSONを整形grep正規表現に一致する行だけ抽出grepi正規表現に一致する行を除外hexdumpバイナリを16進ダンプ化html2textHTMLをプレーンテキスト化pdf2textPDFをテキスト化pretty-xmlXML整形ical2textiCalendarをテキスト化ocrTesseract OCRで画像内テキストを抽出re.subPythonの re.sub で置換re.findallPythonの re.findall で抽出reverse入力項目を反転sha1sumSHA-1ハッシュ化shellpipeシェルコマンドをフィルターとして実行sortソートremove-duplicate-lines重複行削除strip前後空白削除striplines各行の前後空白削除xpathXPathでXML/HTMLを抽出jqJSONをjqで抽出・変換
Webページ以外にもあらゆる出力が監視対象になります。「データベースにユーザーが追加されたとき」は以下のように設定することで、出力件数の変化を検知して通知できます。
name: DB件数
command: mysql -e "SELECT COUNT(*) FROM users;"
◆urlwatchの通知方法
公式では以下の通知方法がデフォルトで用意されています。
・Pushover
・Pushbullet
・Telegram
・Slack
・Mattermost
・Discord
・Gotify
・ntfy.sh
・IFTTT
・Matrix
・Gmail SMTP
・Amazon SES
・SMTP
・XMPP
・Prowl
その他、Shellコマンドも実行できるのであらゆる通知方法に対応可能です。
urlwatchは2008年に公開された老舗のプロジェクトです。VisualpingのようなGUIで設定できる簡易ツールもある中、より高度な制御を求めるユーザーからは依然としてurlwatchが支持されています。
