Andrew Lamichhane
Back to all notes
Emacs Org-Roam Note2026-10-222 min read

Transitioning My Second Brain from Org-Roam to the Web

How I publish interconnected Emacs Org-roam nodes directly to my Next.js digital garden without leaving an Org buffer.

#emacs#org-roam#typescript
:ID: 8f4b2c10…

Why Org-Roam as a Blog Source?

For a long time my blog lived exclusively inside Notion, while my actual daily thinking, technical notes, and architecture sketches lived inside Emacs using org-roam. That split created friction: every time I wanted to turn an evergreen note into an article, I had to manually copy, reformat, and fix links.

Now, this blog natively parses .org files via uniorg and resolves internal Org-roam ... links automatically—like my note on Building a Procedural Pixel Sakura Tree in TypeScript.

Frictionless Publishing Workflow

To promote any note from my Zettelkasten to the blog, I simply add the :blog: tag in the file header:

Running npm run sync:roam scans my ~/org-roam directory, copies only nodes tagged with :blog:, and gracefully unwraps links to private notes so broken links never leak to production.

Multi-Source Architecture

Instead of locking into a single CMS, the content engine aggregates three adapters into one unified TypeScript interface:

SourceFormatBest For
Emacs Org-Roam.orgEvergreen notes, bidirectional backlinks, literate code
Local Markdown.md / .mdxQuick standalone posts & repo documentation
Notion CMSAPIDrafting on mobile when away from Emacs

The best publishing workflow is the one that meets your notes where they already live.

Linked to this note (1 Backlink)