Building a Blog on the Notion API

Sep 30, 2022

Update: it’s live. This page you’re seeing is now rendered through this latest version of my website.

I’m going to try re-implementing this site using the Notion API as a backend. I’ve had a couple of blog posts saved as drafts in various places, and I’d like to reduce the friction to posting new things here.

Remaining To Do list

Project Goals

Most Important

Nice to Have


I’d like to at least keep feature parity with what’s live right now. That includes:


Pages / Sections

Features and Fixes


Monday, September 5, 10a

Ok I went for JSX instead of straight to html and that simplified things a lot. Feels like it’s halfway there now, but I need to get back to my day job for now.



One of the biggest unlocks is rendering notion blocks → jsx → html, instead of directly from notion → html.

Type hints in action:

Do captions work?

Do captions work?

Another nice realization is that we don’t have to implement the entire HTML spec. Only the types outlined in the Notion API client.

Sunday, September 4, 10:55pm



Sunday 9/4, 6pm

First version of Notion block → html renderer


Sunday morning