NotionでブログをSSG運用する仕組み:Notionに書くだけで記事が公開されるまで

「ブログを始めたいけど、記事を書く以外の作業が面倒そう」と感じていませんか?

  • 「WordPressのアップデートやプラグインの管理が大変そう」
  • 「記事はいつも使っているメモアプリで書きたい」
  • 「サーバーの維持費をできるだけ抑えたい」

実はこのブログ(biliotech)は、Notionに書いた記事が、そのままWebサイトとして公開される仕組みで運営しています。

今回は、その仕組みの全体像と、Notion側でどんなことを設定しているのかを紹介します。


なぜNotionで書くのか

いちばんの理由は、普段使っているNotionで、そのまま記事を書けるからです。

  • 見出し、箇条書き、コード、画像など、Notionの機能でそのまま記事を書ける
  • スマホのNotionアプリから、思いついたときに下書きを進められる
  • 記事の管理(公開・非公開、タグ、公開日)をNotionのデータベースで一覧できる

「書く場所」と「管理する場所」が同じなので、ブログのための作業を最小限にできるのが大きなメリットです。


仕組みの全体像

このブログは、Notionをデータの置き場所(CMS)として使い、Astroというフレームワークで静的なWebサイトを生成しています。

ベースにしているのは、オープンソースの「astro-notion-blog」で、そこに独自のカスタマイズを加えています。

全体の流れは次のとおりです。

  1. Notionのデータベースに記事を書く
  2. GitHubのリポジトリの main ブランチに変更が反映されると、Cloudflare Pagesでビルドが自動で始まる
  3. ビルド時に、Notion APIから記事の内容を取得する
  4. Astroが記事をHTMLに変換し、静的なサイトとして公開する

ここでポイントになるのが、記事はビルドしたときに取得されるという点です。

Notionで記事を書いただけではサイトは更新されず、再ビルド(再デプロイ)したタイミングで反映されます。

NotionのAPIキーやデータベースIDは、コードには書かず、Cloudflare Pagesの環境変数として設定しています。

また、記事数が増えるとNotion APIの呼び出し回数の上限(レート制限)にかかることがあるため、上限にかかってもビルドが止まりにくいよう、再試行する処理を入れています。


データベースのプロパティ設計

記事を管理しているNotionのデータベースには、次のようなプロパティを用意しています。

  • Page:記事のタイトル
  • Slug:記事のURLになる文字列(例:/posts/python20260209/)
  • Date:公開日
  • Published:公開するかどうかのチェックボックス
  • Tags:記事のタグ
  • Excerpt:記事一覧に表示する概要文
  • FeaturedImage:アイキャッチ画像
  • Rank:人気記事などの並び順に使う数値

サイトに表示されるのは、Publishedにチェックが入っていて、Dateがビルド時点以前の記事だけです。

そのため、チェックを外しておけば下書きとして置いておけますし、Dateを未来の日付にしておけば、その日以降のビルドで公開されるようにもできます。


埋め込みの工夫

記事の中で商品や他の記事を紹介するときのために、埋め込みの表示もカスタマイズしています。

  • Amazonの商品:NotionのブックマークにAmazonのURLを貼ると、商品画像付きのカードで表示
  • ブログ内の記事:biliotech.comの記事のURLをブックマークにすると、専用のカードで表示
  • X(旧Twitter)のポスト:埋め込みとしてそのまま表示
  • 楽天アフィリエイト:Notionのコードブロックに楽天アフィリエイトのHTMLを貼ると、コードではなくバナーや商品リンクとして表示

とくに最後のコードブロックの仕組みは、Notionには「HTMLをそのまま貼る」機能がないため、コードブロックを目印にしてHTMLとして表示するように工夫したものです。

たとえば、こちらの記事では、メンバーの書籍をAmazonのリンクで紹介しています。

Pythonの処理が遅いと感じたとき、本当に見直すべきポイント

※2026年10月追記:メンバーの藤堂カイがGo言語の書籍『Go言語アンチパターン42問』も出版しました。


まとめ

今回は、Notionで書いた記事がそのままブログとして公開される仕組みを紹介しました。

  • Notionをデータの置き場所にして、Astroで静的サイトを生成する
  • Cloudflare Pagesで自動ビルドし、ビルドのたびにNotionから記事を取得する
  • Published・Date・Slugなどのプロパティで、公開する記事を管理する

「書くことに集中できるブログ」を作りたい人には、Notion × 静的サイトという組み合わせはとてもおすすめです。

興味のある方は、まずはNotionで記事用のデータベースを作るところから始めてみてくださいね。


メンバーのSNSアカウントはこちら

◆かいと:IT担当
X(旧Twitter)
Instagram