AstroとNotionでブログを構築する
Astro を学習するにあたって、何かしら Web サイト作るのが近道だと考えブログを構築することにした。
最近は思いついたことを Scrapbox に吐き出してまとまった文章は Notion に書くというスタイルで情報を整理している。
なので Notion をブログの CMS とするのが自分のスタイルに適してそうだと思い Astro と Notion によるブログを実現することにした。
この記事では概要を説明したのちに、Notion ページが正しく Markdown に変換できているかの検証を行なっている。
概要
今回のブログ構築で用いた主要ツール/サービスは 3 つある。
- Notion
- ブログの CMS
- Astro
- Markdown を Web ページに変換する
- Notion ページ →Markdown への変換スクリプト(以下、変換スクリプト)もここで管理する
- Cloudflare
- Astro プロジェクトのデプロイ先
記事作成から公開までのワークフローは以下の通り。
- Notion でブログ記事を書く
- Astro プロジェクトで変換スクリプトを実行しブログ記事を Markdown に変換する
- ローカルもしくは Cloudflare Pages Preview deployments で表示確認する
- 問題なければ Astro プロジェクトに Markdown をマージする、誤りがあれば最初に戻る
Notion → Astro
Notion ページを Markdown に変換するために NotionAPI を使うことにしたので、ドキュメントに従いブログデータベースにインテグレーションを接続した。

Notion ページの変更イベントをトリガーにして変換スクリプトを実行したかったが、変更イベントを検知する方法が見つからなかったので cron
により変換スクリプトを定期実行することにした。
Astro → Cloudflare
将来的に SSR を有効にする可能性もあるため、SSR 可能なデプロイ先として Cloudflare を選択した。
Cloudflare Pages に Astro プロジェクトのリポジトリを接続しただけで特別な設定は加えていない。
表示確認
以降は Notion ページが Markdown に意図通り変換されているか確認するセクションである。
変換対応済みブロック
Heading1
Headin2
Heading3
テーブル
column1 | column2 |
---|---|
行 1_1 | 行 1_2 |
Row2_1 | Row2_2 |
ToDo リスト
- 未完了タスク
- 完了タスク
箇条書きリスト
- 箇条書きリスト
- 箇条書きリスト 2 行目
- ネストも可能
- ここまで深くしない
- ネストも可能
番号付きリスト
- 番号付きリスト
- 番号付きリスト 2 行目
- ネストも可能
- ここまで深くしない
- ネストも可能
引用
引用テキスト
複数行またがりの引用
コードブロック
function main(text: string) {
return `hello ${text}!!`;
}
main();
文字装飾
- 太字テキスト
- 斜体テキスト
- 下線テキスト
取り消し線テキストinline code
テキスト- Google リンクテキスト
分割線
Web ブックマーク

コールアウト
絵文字とテキストが表示される
変換未対応ブロック
これより下はまだ変換対応できていない。
変換対応が完了したら上に移動する。
トグルリスト
Unsupported type: toggle
トグルリストの子要素のテキストが
トグルリストにより隠されること
空行が空いていても子要素なので隠される
画像
数式
Unsupported type: equation
動画
Unsupported type: video
graph TD
Mermaid --> Diagram