はじめに
皆さんはGitHub Pagesというものを使ったことはありますか?
詳しい仕組みはそこまで理解していませんが、簡単に静的サイトを公開ができるものとして私は使っています。
しかし、GitHub Pagesのサイトを複数作っていくと、今どのようなものが公開されているかどうかがわからなくなってしまいます。
そこで今回は、自分のGitHubアカウントのGitHub Pagesを全部自動で集約するHubサイトを作ったので、その紹介をします。
念の為、ここで長く説明するより、コードを直接見てもらう方が早いのでRepoを貼っておきます。
GitHub: https://github.com/Aotumuri/hub
GitHub Pages: https://aotumuri.github.io/hub/
簡単な紹介
コードはCodex CLIに書かせました。
「Codexがどれくらいの精度でコードを書けるのか」を確認する目的で作ってみたのですが、予想以上に優秀でした。
実際、構文エラー等はもちろん、ほとんど直す箇所はありませんでした。
実際の画面
仕組み
仕組みとしては、GitHub Actionsが定期的にPythonスクリプトを実行してGitHub APIからリポジトリ情報を取得し、projects.json を更新します。
(私は毎回コミットするという更新方法しか思いつかなかったのですが、もし他に良い方法をご存じの方がいれば教えてください。)
そのjsonをJekyllが読み込み、一覧ページとして描画します。
jsonの中身は以下のようになっています。
言語や更新日を記録している理由は特にありませんが、星の数(スター数)だけを表示すると少し寂しく見えたため、補足情報として入れています。
本当に各サイトに飛ぶだけを目的とするならnameとurlだけでいいと思います。
{
"name": "hub",
"url": "https://Aotumuri.github.io/hub/",
"github_url": "https://github.com/Aotumuri/hub",
"description": "私の全てのサイトを確認できます。",
"updated_at": "2025-11-30T02:29:10Z",
"stars": 1,
"language": "Python"
}
GitHub Pagesはサーバーサイドの動的処理ができないため、
「Actions でデータを作る(Python使用)」->「Jekyllで静的に表示する」
という構成になっています。
問題点
このリポジトリの問題点としては、GitHub Actionsが毎回jsonを更新するため、コミットがmain(master)ブランチに大量に積み上がってしまうことです。
コミットする前にgit reset HEAD~ -–hardで戻してからgit push -fすれば履歴をきれいにできますが、あまり良い方法ではないと思います。
おそらく、更新用の専用ブランチを作り、そのブランチでjsonの更新を行い、Pages側でそのブランチをホストするという構成にすれば解決すると思います。(まだ試してはいませんが)
おわりに
GitHub Pagesを大量に作りがちな人にとって、このHubサイトはかなり便利だと思います。
Pagesの運用管理が一気に楽になるので、同じ悩みを持っている人がいればぜひ参考にしてみてください。
おそらくですがForkすれば自動で動くと思います。
ここまで読んでいただき、ありがとうございました。
追記
このツールを作ってから普段使いしていたのですが、正直なところコミットログまではあまりチェックしておらず、コミットが自己増殖していく不具合 に気づけていませんでした。
今回、この記事を読んで教えてくださった優しい方がいらっしゃって、そのおかげで無事に修正することができました。
本当にありがとうございます。
(修正方法としては、特定のサイトの更新を除外する形で対処しました。)
