Hugo のブログ記事に GitHub の編集履歴を埋め込む

執筆日時:

GitHub は API 経由で特定ファイルのコミットログを取得できる。GET リクエストを投げるだけなので簡単そうだ。

https://api.github.com/repos/daruyanagi/blog.daruyanagi.jp/commits?path=/content/entry/2020/05/12/0555/index.md

これを利用して、こんな感じの編集履歴画面を Hugo のブログ記事に埋め込みたいと思った。

編集履歴画面
編集履歴画面

{{- $json := getJSON $endpoint -}}
<ul class="list-group  list-group-flush">
    {{ range $json }}
        <li class="list-group-item">
        <a href="{{ .html_url | safeURL }}">
            <time class="text-mute" datetime="{{ .commit.author.date }}">
                {{ (time .commit.author.date).Local.Format "2006年1月2日15時04分" }}
            </time>
        </a></li>
    {{ end }}
</ul>

なかなかうまくいった。さっそくビルド&プッシュして本番環境に反映させよう……としたところ。

リクエストが多すぎるというエラーをもらってしまった。ウチのブログ記事は 2,000 ちょいあるが、それが一斉に API を叩いたものだから……そりゃあね。

というわけで、いいアイデアだと思ったのだが、残念ながお蔵入りとなってしまった。間にサーバーを挟んで、キャッシュ&API を叩く間隔を調整してもいいが、さすがにちょっと面倒くさいかな。

参考