リンク切れ監視はじめました
目次
たまには技術系?っぽいブログを投稿してみます。
きっかけ
自サイトの古い記事(特にFC2ブログ時代の記事)を見ているとちょくちょくリンク切れのURL等を目にします。なので定期的にリンク切れをチェックするようにしてみました。今日はそんな話です。
それがこちら
hexoのプラグインとかもあったのですが、何か作ってみたかったということもあり自作してみました。完全に僕のサイト専用なのであまり潰しはきかないですw
内部で使用したものとか
broken-link-checker
仕事で使ったことあったので自分のサイトにも同じツールを使ってみました。コマンドラインからの使用です。
下記と同じようなものらしいです。WordPress のほうがやっぱりプラグインは豊富だし、使用事例も多いのでこういうときは WordPress いいなあと思ったりします。
@octokit/action
GitHub の API を簡単に使えるので使ってみました。リンク切れ発見時に Issue を発行する用途です。Issueを発行するツールは他にもいろいろあるのですが、octokit は GitHub API の公式クライアントらしいのでひとまずこれを選択しました。言語はなんでもいいんですが今回はJSにしてます。理由は特にないです。(結局API叩くだけなので一緒ですし)
GitHub Actions
CIツールで1日1回 cron
で実行させるために GitHub Actions を使いました。公開リポジトリなら無料+無制限なので、ブログのリポジトリとは別にしたという経緯です。
on: |
ただ、GitHub Actions のスケジュール実行はめっちゃズレるので、正確に実行させたいなら Circle CI とか使ったほうがベターですね。僕は個人利用で別に多少ズレても問題ないので無料の GitHub Actions で引き続きいきます。
簡単なフロー解説
- post-sitemap.xml から全記事のリストを取得
- post-list.txt ファイルとして保存
- post-list.txtを元に各URLへリンクチェックコマンドを実行
- リンク切れのURLをresult.txtへ保存
- result.txtにリンク切れURLが1件でもあればブログ用リポジトリ側Issueを発行
こんなかんじで特に難しいことはしてないです。なお、post-list.txt と result.txt は毎日自動更新しています。(post-list.txtは差分が無い場合は無駄な更新はせずスルーします)
結果
思ったよりリンク切れが大量に見つかりました\(^o^)/
まあ、ツールが仕事してくれたと前向きに考えます。ツールによる実害は今のところ特にないのでひとまずしばらくこのまま日々動かして様子をみてみます。