Hugo PaperMod で datePublished が 0001-01-01 になるバグ:原因と解決策
エラーの概要 Hugo(PaperMod テーマ)で構築したサイトの構造化データ(JSON-LD)を Google のリッチリザルトテストで確認したところ、datePublished と dateModified に 0001-01-01T00:00:00Z という明らかに誤った日付が出力されていた。記事のフロントマターには正しく date: 2026-05-29 を設定していたにもかかわらず、構造化データには Go の「ゼロ値」に相当する日付が混入していた。 実際のエラー出力例 Google のリッチリザルトテストおよびページソースで確認された JSON-LD の内容: { "@context": "https://schema.org", "@type": "BlogPosting", "headline": "Docker の 404 エラー:原因と解決策", "datePublished": 0001-01-01 00:00:00 +0000 UTC, "dateModified": 0001-01-01 00:00:00 +0000 UTC, "publisher": { "@type": "Organization", "name": "ErrorLog" } } これは有効な JSON ですらなく、Google ボットがパースに失敗する状態だった。 原因 PaperMod テーマの themes/PaperMod/layouts/_partials/templates/schema_json.html における日付出力の実装が問題だった。 問題のあったテンプレートコード(Before): "datePublished": {{ .PublishDate }}, "dateModified": {{ .Lastmod }}, Hugo テンプレートで {{ .PublishDate }} を素のまま展開すると、Go の time.Time 型がデフォルト形式でシリアライズされる。この形式は 0001-01-01 00:00:00 +0000 UTC のような文字列になり、JSON として無効な出力になる。 さらに .PublishDate はフロントマターに publishDate を明示しない場合にゼロ値(0001-01-01)になることがある(Hugo のバージョンや設定により挙動が異なる)。lastmod も同様で、フロントマターに未設定の場合にゼロ値が返る。 ...