sitemap.xml から全URLを再帰的に取り出す CLI「sitemap2urls」を公開しました
サイト移行やリンク監査では、まず「そのサイトにどんなURLがあるのか」を洗い出す必要があります。その入口として使えるツールを公開しました。
- リポジトリ: phrase-llc/sitemap2urls
- ドキュメント: phrase-llc.github.io/sitemap2urls
- ライセンス: MIT
何をするツールか
WordPress の sitemap.xml は、多くの場合それ自体がURLの一覧ではなく、post-sitemap.xml や page-sitemap.xml といった個別のサイトマップへのインデックスになっています。目的のURLに辿り着くには、インデックスを開いて、リンクされたサイトマップを1つずつ開いて、という手作業が必要でした。
sitemap2urls はこの入れ子を再帰的にたどり、最終的なURLをすべて標準出力に書き出します。
使い方
Ruby や Bundler を入れなくても、Docker だけで実行できます。
git clone https://github.com/phrase-llc/sitemap2urls.git
cd sitemap2urls
docker build -t sitemap2urls .
docker run --rm sitemap2urls https://example.com/sitemap.xml
ファイルに落とす場合はリダイレクトします。
docker run --rm sitemap2urls https://example.com/sitemap.xml > urls.txt
取得の過程を見たいときは --verbose を付けます。応答の遅いサイトに対しては --open-timeout と --read-timeout でタイムアウトを調整できます。
docker run --rm sitemap2urls --verbose https://example.com/sitemap.xml
docker run --rm sitemap2urls --open-timeout 5 --read-timeout 10 https://example.com/sitemap.xml
ローカルに Ruby 3.x 以降と Bundler がある場合は、Docker を使わず直接実行することもできます。
組み合わせて使う
出力が単純なURLの一覧なので、他のツールの入力にそのまま渡せます。たとえば同じく公開しているリダイレクトチェッカーや文字列チェッカーと組み合わせると、「サイトマップから全URLを取り出す → 各URLの状態を確認する」という流れをコマンドだけで完結できます。