Scheduled Web Automation Pipeline
公開APIを持たないレガシーWebポータルを自動操作するPythonパイプライン。Playwrightのヘッドレスブラウザでログイン・DOMスクレイピング・フォーム送信を行い、日本の祝日を考慮したスケジューラ、またはHMAC検証付きLINE Webhook経由のチャットコマンドで起動。実行結果はLINEとメールに通知し、失敗時はスクリーンショットを証跡として保存。
自動化する価値のあるシステムが、APIを一切持っていないことがある。これはそういうレガシーなWebポータルを、唯一可能な方法——Playwrightで動かすヘッドレスの実ブラウザ——で操作するパイプライン。セッションログイン、DOMスクレイピングで現在の状態を読み、フォームを埋めて送信する。
起動のトリガーは2つ。日本の暦を理解するスケジューラで、土日祝は空振りせずスキップする。もう1つはチャットコマンドで、小さなFlaskのWebhookがLINEの署名をHMACで検証してから初めて実行する。リクエストでブラウザを起動するエンドポイントは、署名の無い入力を絶対に受け付けてはいけない類のものだ。
実行結果は必ず2系統に通知する——宛先別ルーティング付きのLINEプッシュと、SMTPのメール。黙っている自動化は、壊れている自動化と見分けがつかないからだ。失敗時はブラウザが終了前にスクリーンショットを撮る。ログに残るのが「失敗した」だけでなく「その瞬間ページがどう見えていたか」になる。この習慣ひとつで、デバッグの大半が推測から読解に変わった。
Pythonで約5,700行。技巧的なところは何もない。壊れやすい連携を観測可能にし、放っておいても安全に回る状態にするための、地味な作業がほとんどを占めている。
技術スタック
PythonPlaywrightWeb ScrapingLINE Messaging APIFlaskScheduling
