Hugo Archetypes で日付付きファイル名から title を生成する方法

このドキュメントは、Hugo の archetypes で YYYY-MM-DD-title.md 形式のファイル名から 日付を除外した title を自動生成する方法 と、Hugo が提供する case(文字変換)の種類をまとめたものです。


1. 前提

ファイル名の形式

content/posts/2026-01-09-regex-test.md

目的

  • frontmatter の date には日付を保持する
  • title からは日付を除外する
  • 表示用 title の case を制御する

2. 基本となる archetypes 設定

+++
date = '{{ .Date }}'
draft = true
title = '{{ $name := replaceRE `^[0-9]{4}-[0-9]{2}-[0-9]{2}-` `` .File.ContentBaseName }}{{ replace $name `-` ` ` | title }}'
+++

3. 正規表現の解説

使用している正規表現

^[0-9]{4}-[0-9]{2}-[0-9]{2}-

意味

部分説明
^文字列の先頭
[0-9]{4}年(4桁)
-ハイフン
[0-9]{2}
-ハイフン
[0-9]{2}
-日付直後の区切り

4. パイプ処理の流れ

.File.ContentBaseName
→ replaceRE(日付を除外)
→ replace(ハイフンをスペースに)
→ case 変換

5. Hugo の case 変換一覧

title(Title Case)

| title
regex test → Regex Test
  • 英語圏の見出しで一般的
  • 技術記事・ドキュメント向き

humanize

| humanize
regex-test → Regex test
  • 先頭のみ大文字
  • 日記・メモ向き

lower

| lower
Regex Test → regex test
  • 完全に小文字
  • 私的メモ向き

upper

| upper
regex test → REGEX TEST
  • 強調・分類用途

変換なし

{{ replace $name `-` ` ` }}
regex test
  • 入力に忠実
  • 最も素朴

6. 設計思想メモ

  • date はデータ
  • title は表示
  • ファイル名は構造
  • 表示はあとから何度でも変えられる

この分離により、

  • 並び順が安定する
  • URL が壊れない
  • 表示ルールを一括変更できる

7. まとめ

  • Hugo archetypes では正規表現を使うと安全
  • TOML + template ではバッククォートが安定
  • case 変換は後から簡単に変更可能
  • Title Case は「少し公的」で読み返しやすい