Newsletter
Join the Community
Subscribe to our newsletter for the latest news and updates
Notion + Next.js blog starter kit that generates a static ISR blog from a Notion page, with dark mode, comments, and more.

A clean, responsive Hexo theme with social-feed homepage, local/Algolia search, Gitalk comments, and dark mode.

Responsive Hugo blog theme ported from the Inkblot WordPress theme with TOC, Disqus comments, related posts, and social share buttons.

Eleventy theme for bloggers with auto SEO, focused on text and documentation.

An anime-themed Gatsby.js blog template with TypeScript, deployable to Netlify.
Notion Next.js Blog Starter Kit is a blog boilerplate that turns a Notion page into an ISR-generated static blog built with Next.js and TypeScript. It was created by 2skydev and is based on the transitive-bullshit/nextjs-notion-starter-kit, customized with extra features like comments, dark-mode sync, OG images, and Korean slug support.
Notion Next.js Blog Starter Kit is a startup kit that creates a blog using Notion as the content source and Next.js as the rendering framework. You write posts in a Notion root page, and the kit generates a static blog with automatic ISR revalidation. It produces a fully styled blog with light/dark mode, a right-side table of contents, comments, and social OG images. The repository is maintained by 2skydev, and its code comments and documentation are mainly written in Korean.
The kit takes a Notion root page ID and site configuration from site.config.ts as input, and outputs a Next.js static site ready for deployment on Vercel. It uses TypeScript for type safety and SCSS for styling, with global variables in styles/custom/vars.scss and Notion block styles in styles/custom/notion-blocks.scss. It also configures Yarn workspaces so individual modules can be customized in detail.
NOTION_API_KEY environment variable and enabling enableComment in site.config.ts.left or right) via contentPositionTextAlign.site.config.ts.styles/custom/vars.scss and styles/custom/notion-blocks.scss.enableComment and provide a Notion API key to add comment functionality to article pages.The blog uses Next.js ISR. On first visit to a new page, router.isFallback shows a loading state while getStaticProps fetches all pages from the Notion root page ID, builds a sitemap object, checks whether the requested address exists, and loads the matching page data. After a page is edited, revalidate: 10 triggers a background regeneration within 10 seconds of the last visit, so subsequent visitors see the updated version. Note that the kit reads Notion content using the same API the Notion web app calls internally, not the official Notion API; only the comment feature uses the official API.
Yes. The OG image generation and the comment feature both use the Notion API, so they require a valid NOTION_API_KEY environment variable. Basic blog content fetching does not need an official API key because it uses the internal Notion page API.
The author warns against using Notion's duplicate feature because it can load pages incorrectly. The blog's Notion pages should be created manually, matching the view type and property order shown in the author's Notion setup.
No, the code comments and explanation are mainly written in Korean. Some setup steps reference the original English README of the base kit, but the wiki and README for this customized kit are primarily Korean.
The repository is public on GitHub, so the starter kit is free to use. You can fork it or use the "Use this template" button, then replace files such as favicons, profile images, and loading effects with your own.
site.config.ts?You can set the root Notion page ID, site name, domain, author, description, default page icon, navigation links, comment enablement, date format (using date-fns format strings), default theme (light, dark, or system), hidden post properties, and table-of-contents text alignment.
