GitHubで管理しているZennのファイル名を一括修正した話
私は普段Zennの投稿をGitHubで管理しているのですが、記事のファイル名を一括で更新したので、その内容を共有しようと思います。
どうやってZennの記事をGitHubで管理しているか
Zenn公式が出している以下の記事に載っている方法で管理しています。
また、記事を作成するときはZennのCLIを利用しています。ZennのCLIについてはこちらを見ていただければ使い方がわかると思いいただければ使い方がわかると思います。私は入力を省略するため、以下のようなzenn_articleというコマンドを自作しており、タイトルだけ指定するとファイルが生成されるようにしています。
zenn_article() {
if [[ "$1" == "-h" ]] || [[ "$1" == "--help" ]]; then
echo "Usage: zenn_article <title>"
echo "Create a new Zenn article with the specified title"
return 0
fi
if [[ -z "$1" ]]; then
echo "Error: Title is required"
echo "Usage: zenn_article <title>"
return 1
fi
zenn new:article --title "$1" --type tech
}
この方法で記事を作成するとarticlesフォルダ以下にHEX14桁のファイル名でファイルが生成されます。つまり、何も指定しないと何のファイルかファイル名からは判断できない状態になります。例えばこの記事を生成したときの初期値はarticles/f51934c2c5e418.mdとなります。--slugというオプションを指定するとファイル名まで指定できるのですが、今までは面倒だったので指定していませんでした。
その結果、今までの大半のファイル名は何のファイルか分からず、とりあえず開いてみないとよく分からん状態でした。
ファイル名をどうやって一括変更したか
今回はclaudeさんを使って、ファイルの内容を確認して、それっぽいタイトルを作ってもらいました。
まずinstructions.mdに以下のようなシンプルな指示を記載しました。
# 目的
- articles以下にあるmarkdownのうち、ファイル名がランダム文字列のものについて、ファイルの内容に沿った内容にファイル名を変更する
# 制限
- ファイル名はアルファベットまたは数字のみとする
- 文字数は15文字以上かつできるだけ短くしてください
- ファイルは全て読み込む必要はなく、冒頭のYAML形式部分を読み込むだけで大丈夫です
これをGitHubで管理しているレポジトリのルートでclaudeに読み込ませると一括変更が始まりました。今回は300200ファイル以上あったためちょっと時間がかかり、20ファイルずつ読み込んで処理をするを繰り返しました。
実行結果
結果の一部だけですが、ファイル名変更の結果を載せておきます。みてわかる通り、変更前は何のこっちゃという感じですが、変更後はファイル名からざっくりどんなことをしているかわかるようになりました。

ファイル名のビフォーアフター
まとめ
今回はclaudeを使って今まで怠惰にしていたZennの記事ファイル名をちゃんとした内容にしてもらいました。今後はちゃんとファイル名をコンテンツの判別ができる形式にちゃんとしていこうと思います。
Discussion