ブログContent Collection設計
Decision
- ブログ記事は
/blog配下の Markdown/MDX ファイルで管理する。 - Frontmatter は以下のスキーマとする。
title(必須・string)description(任意・string)publishedAt(必須・date)updatedAt(任意・date)draft(任意・boolean、デフォルトfalse)tags(任意・string[])image(任意・string)noindex(任意・boolean、デフォルトfalse)lang(任意・string、デフォルトja)slug(任意・string、未指定時はファイル名由来)prev(任意・true | false | string、明示的に前後リンクを制御)next(任意・true | false | string、明示的に前後リンクを制御)
- URL は i18n 方針に従い、
langとslugの組み合わせで決定する。言語違いの記事は同一のslugを使用する。 - 一覧の並び順は
publishedAtを基準とし、更新表示にはupdatedAtを使用する。 draftは公開一覧/フィード/ビルド対象から除外するためのフラグとする。noindexは検索エンジンのインデックス除外を意図するメタデータとする。
Context
ブログを長期的に運用するためには、記事の一覧・詳細・SEOメタデータを安定して生成できる統一スキーマが必要だった。i18n 方針(日本語をデフォルトとし、追加言語はサブディレクトリ)にも整合する必要がある。
Options
- Markdown/MDX + Content Collection
- 外部CMS(Headless CMS)
- JSON/TS での手動管理
Rationale
- Markdown/MDX は執筆・レビューのコストが低い。
- Content Collection のスキーマ定義により、ビルド時に整合性を担保できる。
- i18n 方針に合わせて
langとslugを明示し、URLの一貫性を保てる。
Consequences
- すべてのブログ記事は上記スキーマに従う必要がある。
draftとnoindexの運用ルールを共有し、公開判断の基準を明確にする。langの追加時は同一slugで翻訳版を作成する運用が前提になる。
hsb.horse