Claude CodeでNotionをCMSにしたブログを作る方法
ブログを作りました。Notionで記事を書くと、そのまま公開されるしくみです。この記事が1本目になります。
構成
- Notion: 記事を書く場所。「Blog Posts」というデータベースを作り、Title / Slug / Description / Tags / Status / Date のプロパティを持たせています
- Astro: 静的サイトジェネレーター。NotionのAPIから記事を取ってきて、HTMLを組み立てます
- Cloudflare Pages: できあがったHTMLを配信するホスティングサービスです
書く場所はNotionだけ。ふだんの記録がぜんぶNotionにあるので、書く場所を増やさないことを優先しました。
作り方
実装はClaude Codeに任せました。私がやったのは2つだけです。
- 「Notionで書いてそのまま公開できるブログにしたい」と構想を伝える
- NotionとCloudflareの設定画面でアクセストークン(外部ツールに操作を許可する鍵)を発行して渡す
あとはClaude Codeがデータベース設計からAstroのコード、Cloudflareへのデプロイまで進めてくれました。エラーが出ても、Claude Codeが自分で直していきます。
再現手順
再現したい方向けに、自分の手でやる部分だけ具体的に書いておきます。ここ以外はClaude Codeに頼めば進みます。
- Notionでデータベースを作る。名前は「Blog Posts」。プロパティは Title / Slug(テキスト) / Description(テキスト) / Tags(マルチセレクト) / Status(セレクト) / Date(日付) の6つです
- Notionのトークンを発行する。インテグレーション設定で新規作成し、シークレットをコピーします。そのあとデータベース右上の「⋯」→「コネクト」で、作ったインテグレーションを接続してください。この接続を忘れると、トークンが正しくても記事が読めません。いちばんつまずきやすいポイントです
- Cloudflareのトークンを発行する。ダッシュボードの「APIトークン」画面で「Cloudflare Pagesの編集」権限を付けて作成します。アカウントIDも控えておきます
- GitHubのSecretsに登録する。リポジトリの Settings → Secrets and variables → Actions に
NOTION_TOKEN/CLOUDFLARE_API_TOKEN/CLOUDFLARE_ACCOUNT_IDの3つを入れます
ここまでできたら、Claude Codeに「NotionをCMSにしたブログを作りたい。構成はNotion + Astro + Cloudflare Pages、公開はGitHub Actionsで」と伝えるだけです。
公開方法
公開も2ステップです。
- Notionで記事のStatusをPublishedに変える
- GitHubのActions画面で「Run workflow」ボタンを押す
ボタンを押すと、GitHub Actions(GitHubの自動実行サービス)がNotionから記事を取得して、ビルドと公開までやってくれます。反映までは1〜2分。スマホのGitHubアプリからも押せるので、外出先でも公開できます。
本当はStatusを変えたら自動で公開されるのが理想です。Notion Workerとか。無料の範囲では使えないので、このボタン1つだけ手動で残しています。使ってみると、これくらいは手動のほうが「公開した」実感があってちょうどよく感じています。
拍子抜けした話
正直、拍子抜けしました。構想を伝えて、鍵を渡して、それでもう動いている。簡単にできすぎて、作った実感が薄いくらいです。
基盤はできたので、あとは書くだけ。作ったけどどうしよ。