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

urlwatch monitors webpages for you (thp.io)

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が支持されています。