メモの外部リンクが切れているとそれなりのダメージを受ける。ただし、わざわざリンク先をローカルに保存しておくわけにはいかないし、リンク切れを検知してwayback machineのリンクに貼り替えるプログラムがほしい。

WikipediaにはInternetArchiveBotというボットが動いていて、壊れたリンクをアーカイブリンクに修復してくれる。これに似た仕組みをObsidian Vaultにも導入できないか調べていたらぴったりな記事を見つけた。

https://benjamincongdon.me/blog/2021/09/19/Preventing-Link-Rot-in-my-Obsidian-Vault/ Rust製だし要件はマッチしていそうだが、Star数が少なくて消えないか心配なのでフォークしてそれをローカルで使う。Cargoは--gitでGitから読める

$ gh repo fork bcongdon/wayback-archiver
 
$ cargo install --git https://github.com/yutakobayashidev/wayback-archiver --locked

あとはいい感じにシェルスクリプト実行すればよさそう

#!/usr/bin/env zsh
set -e
 
cd "$(dirname "$0")"
 
find . -name "*.md" ! -path "*.obsidian/*" ! -path "*.trash/*" \
  -exec grep -Eo "(http|https)://[a-zA-Z0-9./?=_%:-]*" --no-filename {} + |
sort | uniq |
grep -Ev "youtube\.com|wikipedia\.org|wikiwand\.com|d\.hatena\.ne\.jp/keyword|kagifeedback\.org|web\.archive\.org" | 
wayback-archiver --out archive.json --merge
$ ./archive.sh                                                            
 
[1/306]   Done: https://web.archive.org/web/20250207064306/http://docs.jstor.org/statement-swartz.html
[2/1829]   Done: http://web.archive.org/web/20130131133552/http://ashiyane.org/forums/showthread.php?t=20570
[3/1829]   Done: https://web.archive.org/web/20250311180051/https://accounts.hatena.ne.jp/login?location=https%3A%2F%2Fb.hatena.ne.jp%2Fadd%3Fmode%3Dconfirm
[4/1829]   Done: https://web.archive.org/web/20250307173342/https://beej.us/guide/
[5/1829]   Done: http://web.archive.org/web/20111102034222/https://blogs.zoho.com/general/how-we-recruit-on-formal-credentials-vs-experience-based-education
[6/1829]   Archiving failed: Wayback Machine unable to archive this URL (http://books.example.org/b/30283833)
[7/1829]   Archiving failed: Wayback Machine unable to archive this URL (http://books.example.org/b/3j7is)
[8/1829]   Archiving failed: Wayback Machine unable to archive this URL (http://books.example.org/b/3j7is.html)
[9/1829]   Archiving failed: Wayback Machine unable to archive this URL (http://books.example.org/b/3j7is.json)
[10/1829]   Archiving failed: Wayback Machine unable to archive this URL (http://books.example.org/b/3j7is.json?callback=myCallback)
[11/1829]   Archiving failed: Wayback Machine unable to archive this URL (http://catb.org/)
[12/1829]   Done: http://web.archive.org/web/20210729053203/http://www.chipsandchange.com/
[13/1829]   Done: http://web.archive.org/web/20250201184335/https://cr.yp.to/qmail/guarantee.html
[14/1829]   Done: http://web.archive.org/web/20250307032834/https://creativecommons.org/licenses/by-sa/2.0/deed.en
[15/1829]   Done: http://web.archive.org/web/20250305100232/https://creativecommons.org/licenses/by/2.0/deed.en
[16/1829]   Done: http://web.archive.org/web/20250311023308/https://creativecommons.org/licenses/by/4.0/
[17/1829] ⠂ Archiving http://cve.mitre.org/ ...