前回の進捗から2日。この間に行った作業をまとめておく。
タグ・カテゴリページの復活
前回「Workers Paid ($5/月) でファイル上限を100,000に拡大する」と書いたが、これは誤りだった。Cloudflare のコミュニティフォーラムで確認したところ、Pages のファイル上限を引き上げるには Pages Pro/Business/Enterprise($20/月〜)が必要で、Workers Paid ではダメだった。
そこで方針を変え、20,000ファイルの制限内でタグ・カテゴリページを復活させる方向に切り替えた。
やったこと
- 使用頻度5回以下のタグを削除: 1,546 → 370タグに圧縮
- 2010年以前の記事を月別アーカイブに統合: 9,841記事を
draft: trueにし、月ごとの統合記事148本に変換 - taxonomy を再有効化:
disableKinds設定を削除し、タグページのリンクを復活
結果、ビルド出力は 9,040ファイル。20,000の半分以下に収まった。
タグ別サブドメインの展開
特定タグの記事だけを独立したCloudflare Pagesプロジェクトとしてデプロイする仕組みを構築した。本体の20,000ファイル制限に影響せず、それぞれFree枠で独立して運用できる。
| サブドメイン | タグ | 記事数 |
|---|---|---|
| fh.hide10.com | Forza Horizon | 50 |
| ai.hide10.com | AI | 127 |
| xbox.hide10.com | xbox | 469 |
| babymetal.hide10.com | BABYMETAL | 89 |
| cats.hide10.com | 猫・ネコ・サスケ・チャコ | 469 |
| movie.hide10.com | 映画 | 119 |
| machida.hide10.com | 町田 | 195 |
ビルドには自作のシェルスクリプト build-subdomain.sh を使っている。タグ名とbaseURLを引数に渡すだけで、該当記事の抽出からHugoビルド、Cloudflare Pagesデプロイまで一発で完了する。複数タグのOR検索にも対応しており、猫サブドメインのように "猫|ネコ|サスケ|チャコ" でまとめて指定できる。
各サブドメインには独立したRSSフィードも自動で生成される。
Google Analytics (GA4) 導入
Hugoの組み込みテンプレートを使い、GA4の計測タグを導入した。hugo.toml に googleAnalytics = "G-T1FR5FQGV2" を追記するだけで完了。ただしHugoのデフォルトでは respectDoNotTrack = true になっており、DNT設定のあるブラウザではトラッキングされない点に注意が必要だ。
X/Twitterポストの埋め込み
Markdown本文中にX(旧Twitter)のURLを裸で書くと、自動的に埋め込みツイートとして展開されるようにした。Hugoの render-link.html フックで実現している。Markdown記法のリンク [テキスト](URL) は通常のリンクのまま、URLだけが単独で書かれた場合のみ埋め込みになる。
widgets.js は記事ページかつ埋め込みが存在する場合のみ読み込む。
OGPアイキャッチの最適化
OGPカードで画像が小さく表示される問題に対応した。
- SVGアイキャッチ: GitHub Actionsのビルド時に
rsvg-convertで1200px幅のPNGに変換(既存) - 写真アイキャッチ: ビルド時にPillow(Python)で1200x630にクロップ・リサイズするステップを追加(今回新規)
OGPの推奨サイズは1200x630(1.91:1)。縦長の写真をそのまま使うとX等のカードで小さく表示されてしまうため、中央クロップで横長に変換している。
GitHub Actions自動デプロイ
main ブランチへのpush時に自動でビルド・デプロイが実行される。手動デプロイは不要になった。
ワークフローの流れ:
- SVGアイキャッチ → PNG変換
- 写真アイキャッチ → 1200x630クロップ
- Hugo ビルド(
hugo --minify) - Cloudflare Pagesデプロイ
- Telegram通知(成功/失敗)
次にやること
- DNS切り替え:
www.hide10.comを新サイトに向ける - 旧URLリダイレクト: WordPressの
/archives/{id}を/post/{slug}/にリダイレクト - サブドメインの自動デプロイ: 現在は手動。GitHub Actionsに組み込みたい
