Table of Contents

I use Zettelkasten via org-roam to manage 15+ years of org notes. Following Jethro Kuan's slip box approach, notes are organised into four directories:

  1. main - Quick thoughts and snippets
  2. reference - Ideas from books, articles, and other sources
  3. article - Long-form content: paper reviews, essays, synthesis of multiple notes
  4. project - GTD-style task management, kept separate so org-agenda doesn't scan thousands of zettels

Publishing

Notes are published to a static blog using orgroam-publish, a static site generator built on ox-publish. The blog setup can be found here.

Two outputs are generated:

  • Public (public/) — only files tagged publish are included, deployed to my site
  • Private (private/) — full local preview including drafts, never committed

Three tags control publishing:

publish Include in the public blog
sitemapignore Publish the HTML but exclude from the sitemap
notitle Suppress the <h1> title in the exported HTML

The generator is configured via a single site-config.el file that points to this org-roam directory and customizes navigation/styling.

Emacs Config

org-roam setup: my-org-roam.el. org-agenda uses ripgrep to surface TODOs from project files only.

Last Modified: February 19, 2026