このサイトに docs/notes/ 以下の Markdown ファイルを書くだけで記事が公開される仕組みを作った。

経緯

今まで記事は管理画面のフォームから投稿していたが、長文を書くには IDE のエディタの方が断然使いやすい。ということで、IDE で Markdown を書いて git push したら自動で D1(Cloudflare の SQLite)に同期される仕組みを整えた。

仕組み

  1. docs/notes/ 以下に .md ファイルを置く
  2. ファイルの先頭に frontmatter(タイトル・カテゴリ・日付)を書く
  3. git push すると Husky の pre-push フックが docs/notes/ の変更を検知する
  4. bun run notes:sync が走り、wrangler d1 execute で本番 D1 に UPSERT される

ファイル構成の自由度

ファイルはフラットに置いても、シリーズごとにディレクトリを切ってもどちらでも良い。slug は frontmatter で明示するか、省略するとファイルパスから自動生成される。

docs/notes/
  single-article.md              # → /notes/single-article
  cloudflare-series/
    part1.md                     # → /notes/cloudflare-series/part1

よかった点

  • 書く摩擦がゼロになった。新しいファイルを作って書き始めればいい
  • git で記事の履歴が管理できる
  • excerpt は本文から自動生成されるので書かなくていい