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 Rakefile: rake 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

I added a blogroll

I realized that it might be nice if you happen to stumble on this website if I had a way to recommend other websites you might enjoy. As it turns out this is a "blogroll", a concept I have never heard of before today but whatever. It'

via matduggan.com July 20, 2026

Long-delayed summer 2026 photos

I’ve been lax in posting my photos here. So here you have about two months’ worth of pictures from around Hveragerði. It’s a lot. I apologise in advance. Since I’m guessing many of you have had a somewhat stressful day like I did, here are a few photos of...

via Baldur Bjarnason's Notes on the Web July 20, 2026

“Try quickly typing 1+2+3. I bet you won’t get 6.”

Earlier this month, I talked about a rotation button in photos that behaved really nicely in iOS, and not so great on the Nothing Phone. Here’s a story of a similar fumble iOS once made that might bring the point home even more. The calculator app has been...

via Unsung July 20, 2026

Generated by openring