Using org-mode with Jekyll

| ruby | programming |

Since my journey into Google Docs’s Hell I have been getting more reacquainted with org-mode for other purposes as well. Traditionally, I have been writing this blog using Markdown and publishing it with Jekyll. I love Markdown, and while it is fine for most cases, but what better way to gain more experience with org-mode than to blog with it! The best tutorial that I have found so far is this one from the org mode web site: Using org to Blog with Jekyll. One “gotcha” that I have ran into so far, is everything breaking if I include a table of contents (which happens by default when you export to HTML). The simplest solution for this is to add the following to the top of your org flavored file.

#+OPTIONS: toc:nil

This allows the front-matter to be exported properly. I am also choosing not to include section numbering for my posts. So the complete front-matter for this post looks like this:

#+OPTIONS: toc:nil num:nil
#+BEGIN_HTML
---
layout: post
title: "Using org-mode with Jekyll"
permalink: /:title/
tags: hacking
---
#+END_HTML

Configuration

My jekyll blog project looks like this:
;; File ~/.emacs.d/customizations/setup-org.el
;; ...

;;;;
;; Projects
;;;;

;; levlaz.org Blog
(setq org-publish-project-alist
      '(("levlaz"
         ;; Path to org files.
         :base-directory "~/git/levlaz.org/_org"
         :base-extension "org"

         ;; Path to Jekyll Posts
         :publishing-directory "~/git/levlaz.org/_posts/2016/"
         :recursive t
         :publishing-function org-html-publish-to-html
         :headline-levels 4
         :html-extension "html"
         :body-only t
         )))

Workflow

My current workflow looks something like this:
  1. Add a new file to git/levlaz.org/_org/$DATE-$TITLE.org
  2. Add the front matter shown above
  3. Blog my heart out
  4. Check my spelling with ispell
  5. Publish the org file with C-c C-e P p , this moves the file from git/levlaz.org/_org/ to /git/levlaz.org/_posts/2016/$DATE-$TITLE.html
  6. Build and Deploy my site with my Rakefilerake deploy.

Conclusion

There is definitely some room for improvement here such as macros for dumping in the front-matter, easier deployment, and more automation. I plan on seeing what I can do to make this process a bit smoother for me and update this post when I do.

Thank you for reading! Share your thoughts with me on bluesky, mastodon, or via email.

Check out some more stuff to read down below.

Most popular posts this month

Recent Favorite Blog Posts

This is a collection of the last 8 posts that I bookmarked.

Articles from blogs I follow around the net

Announcing Live AI & Design Systems Jam Sessions!

Ian, TJ, and I are excited to announce live AI & Design Systems Jam Sessions with our AI & Design Systems course community! Our first jam session will be Thursday, February 26 at 10AM ET. In these recurring biweekly Zoom […]

via Blog – Brad Frost February 16, 2026

I Sold Out for $20 a Month and All I Got Was This Perfectly Generated Terraform

Until recently the LLM tools I’ve tried have been, to be frank, worthless. Copilot was best at writing extremely verbose comments. Gemini would turn a 200 line script into a 700 line collection of gibberish. It was easy for me to, more or less, ignore LLM…

via matduggan.com February 16, 2026

Pluralistic: The online community trilemma (16 Feb 2026)

Today's links The online community trilemma: Reach, community and information, pick two. Hey look at this: Delights to delectate. Object permanence: Bruces x Sony DRM; Eniac tell-all; HBO v PVRs; Fucking damselflies; Gil Scout Cookie wine-pairings; Bi…

via Pluralistic: Daily links from Cory Doctorow February 16, 2026

Generated by openring