astro-notion-blog is a free, open source content management systems (cms) project written in Astro and released under MIT. It has 972 GitHub stars, 551 forks and 1 open issues, and was last pushed 17 days ago. On this registry it ranks #52 of 70 tracked projects in Content Management Systems (CMS), with 5 head-to-head comparisons available. It gained 4 stars over the last 30 tracked days.

What is astro-notion-blog?

astro-notion-blog is an MIT-licensed, Astro-based blog template that generates a static site from a Notion database using the official Notion APIs, built for writers and developers who want to publish from Notion without hand-building a website.

What it is

astro-notion-blog is a blog starter that lives in the JavaScript/Astro ecosystem and reads its content from Notion rather than from the repository. Post content is authored in a Notion database, and the project pulls that content through the official Notion APIs at build time, producing a statically generated site. The output is plain static pages, which the README describes as "blazing fast" page views. The text is customizable so the site's appearance can be adapted to the owner's liking.

The concrete problem it solves is the friction of a self-hosted static blog whose posts exist as files in a repository. Instead of editing and committing Markdown, an author duplicates a Notion template database into their own workspace, writes there, and rebuilds. That database becomes the content source, and the build step converts it into the deployed site. The supporting stack is Cloudflare Pages for hosting and Git for the source repository, so the workflow spans three systems: Notion for content, Git for code, Cloudflare Pages for delivery.

Key capabilities

  • Static site generation through Astro, so published posts are served as pre-built pages rather than rendered per request.
  • Content authoring in Notion, driven by a duplicate of the project's Notion template database.
  • Integration with the official Notion APIs using two environment variables: NOTION_API_SECRET (an Internal Integration Token) and DATABASE_ID (taken from the duplicated database URL).
  • Deployment to Cloudflare Pages using "Connect to Git" with the Astro framework preset.
  • Local development via npm install followed by npm run dev, serving the site at http://localhost:4321.
  • Customizable site appearance.
  • Bilingual documentation, with README.md in English and README.ja.md in Japanese, and issue reports accepted in either language.

Who uses it and how

  • Individual writers who keep their drafts and published posts inside Notion and want a site generated from that database instead of a separate authoring tool.
  • Developers who fork the repository as their starting point; the project shows 557 forks, which reflects that template-fork workflow.
  • Site owners deploying on Cloudflare Pages by connecting their forked repository and setting NODE_VERSION at 20.18.1 or higher alongside the two Notion variables.
  • Anyone who needs a recurring publish pipeline: the README notes that every new post or update requires a manual deployment, which can be triggered from the Cloudflare Pages dashboard or automated with CI tools such as GitHub Actions.
  • Contributors and maintainers working in a bilingual (English and Japanese) project, which the issue guidelines explicitly allow.

Getting started

Duplicate the project's Notion template database, create a Notion integration and share the database with it, then fork the repository and deploy it on Cloudflare Pages with "Connect to Git" and the Astro preset, setting NODE_VERSION, NOTION_API_SECRET, and DATABASE_ID as environment variables. For local work, install Node.js v20.18.1 or higher, export those two variables, and run npm install then npm run dev.

How it compares

The facts provided name no competing or similar tool, and no list of paid products this project replaces. Within this registry it stands alone, and it should be evaluated on its own terms.

When to use it โ€” and when not to

A self-hoster must operate a Notion workspace with an integration and a shared database, a Git repository, a Cloudflare Pages account, and Node.js v20.18.1 or higher for local builds. The clearest limitation is that publishing is not automatic: the README states that manual deployment is required after each new post or update unless a scheduled deploy is configured through CI. It is a poor fit for anyone who wants post content versioned as files in the repository, who does not want Notion as a hard dependency, or who expects publish-on-save with no deploy step; customization guidance is also kept largely outside the README, in the project wiki.

project readme (upstream, from github) โ€” read inline

English | ๆ—ฅๆœฌ่ชž

astro-notion-blog

GitHub stars GitHub license GitHub sponsors

astro-notion-blog enables you to create a blog using Notion and generates it statically, resulting in lightning-fast page views.

  • :rocket: Blazing fast page views
  • :pencil: With the ability to write blog content in Notion
  • :hammer_and_wrench: Customize your site's appearance to your liking
  • :white_check_mark: Take advantage of the official Notion APIs

:camera_flash: Screenshots

PC

Smartphone

:globe_with_meridians: Demo

https://astro-notion-blog.pages.dev

:motor_scooter: Quick Start

Requirements

Steps

  1. If you enjoy using this repo, don't forget to give it a star! :wink:
    • This is very motivating!
  2. Simply duplicate the blog template into your Notion workspace.
  3. Once you've duplicated the page (database), customize it to your liking by changing the icon, title, and description.
  1. For future reference, identify the DATABASE_ID by noting the portion of the duplicated page (database) URL that appears as https://notion.so/your-account/?v=xxxx.
  1. Create an integration and note "Internal Integration Token" as NOTION_API_SECRET
  2. To integrate your application with Notion, share a database with your integration.
  3. To make a copy of this repository in your own account, fork it by clicking on the 'Fork' button in the top-right corner of the repository page.
  4. Go to Cloudflare Pages and sign in
  5. Create new project with "Connect to Git" with your forked repository /astro-notion-blog, then click "Begin setup"
  6. In "Build settings" section,
    1. Select "Astro" as "Framework preset"
    2. Open "Environment Variables (advanced)" and set NODE_VERSION, NOTION_API_SECRET and DATABASE_ID
  1. After clicking the 'Save and Deploy' button, your Notion Blog will be published once the deployment process is complete.

Please note that the astro-notion-blog requires manual deployment every time you publish a new post or make updates. You can deploy manually from the Cloudflare Pages dashboard or set up a scheduled deploy using CI tools such as GitHub Actions.

:hammer_and_pick: How to customize

Additional requirements

  • Node.js v20.18.1 or higher

Steps

  1. To set your secrets as environment variables, run the following commands in your terminal:
export NOTION_API_SECRET=<YOUR_NOTION_API_SECRET>
export DATABASE_ID=<YOUR_DATABASE_ID>
  1. Install dependencies and start local server
npm install
npm run dev
  1. Open http://localhost:4321 in your browser
  2. Press Ctrl+C in the terminal to stop

For more information

See wiki.

:lady_beetle: Bug reports & feature requests

To report an issue, please create a new Issue. You can use either English or Japanese to describe the issue. :wink:

:two_hearts: Sponsorship

If you like astro-notion-blog, sponsor me so that I can keep on developing software. Thank you.

GitHub sponsors


astro-notion-blog is based otoyo/notion-blog

Frequently asked questions

Is astro-notion-blog free to use?

astro-notion-blog is open source under the MIT licence. There is no licence fee and no seat count โ€” you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does astro-notion-blog do?

๐Ÿš€ Begin building your very own Notion Blog with Astro.

What is astro-notion-blog written in?

astro-notion-blog is primarily written in Astro. Its source is publicly available at https://github.com/otoyo/astro-notion-blog, and it has 972 GitHub stars.