GitベースのコンテンツCMS
Gitリポジトリ上のMarkdownファイルをコンテンツの単一ソースとして管理するアーキテクチャ。専用CMSを使わず、Gitのバージョン管理とMarkdownの可搬性を活かしてコンテンツを管理する。
概要
従来のCMS(WordPress、Notionなど)を使わず、Markdownファイルをリポジトリ内に配置し、ビルド時にHTMLに変換してデプロイする方式。SSoTとして機能し、コンテンツの管理・執筆・デプロイが一つのフローで完結する。
基本構成
content/
├── blog/
│ ├── ja/
│ │ └── {slug}.md
│ └── en/
│ └── {slug}.md
└── portfolio/
└── {slug}.md
- YAMLのfrontmatterでメタデータ(title, description, date, tags等)を管理
- ビルド時にgray-matterでfrontmatter解析、MDXレンダリングライブラリで変換
- Next.jsの
generateStaticParams()等でビルド時に静的生成
外部CMSとの比較
| 項目 | 外部CMS(Notion等) | GitベースのCMS |
|---|---|---|
| 依存 | 外部APIに依存 | なし(ローカルファイル) |
| オフライン | 不可 | 可能 |
| 執筆環境 | CMS UI | 任意のエディタ |
| バージョン管理 | CMSに依存 | Git |
| 移行コスト | 高い | 低い |
| ビルド | 外部API通信が必要 | 不要 |
メリット
- ポータビリティ: Markdownはツール非依存なドキュメントであり、エディタやレンダリング環境を自由に選べる
- 外部依存ゼロ: ビルド時に外部APIを叩かないため、API障害やレート制限の影響を受けない
- 執筆環境の統一: ObsidianなどのMarkdownエディタで執筆・管理が完結する
- バージョン管理: Gitの差分管理・ブランチ・ロールバックがそのまま使える
- メンテコストの低さ: ブロックごとのコンポーネント対応(Notion APIでの開発)が不要
デメリット
- 非エンジニアには難しい: Git操作やMarkdown記法の学習コストがある
- リアルタイムプレビューが限定的: 専用CMSと比べてWYSIWYG体験に劣る
- 画像管理が煩雑: CMS側でアップロードする体験と比べて手動での管理が必要
Obsidianとの相性
Obsidianでナレッジ管理している場合、vault内のMarkdownをそのままコンテンツとして使える。執筆からデプロイまでのフローがシンプルになり、ツールを横断する必要がなくなる。
関連
- ツール非依存なドキュメント - Markdownの可搬性の原則
- Obsidian - 執筆環境としてのMarkdownエディタ
- SSoT - コンテンツの単一ソース管理
- バージョン管理 - Gitによるコンテンツ履歴管理
- [[Next.js]] - GitベースCMSと組み合わせるフレームワークの例