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

“Plain text has been around for decades and it’s here to stay.”

There’s a category of “plain text” or “ASCII” diagramming and UI design tools: Mockdown – works immediately on the web, even on mobile Wiretext – works on the web, but desktop only Monodraw – a Mac app I believe these are used by people who prefer intentio...

via Unsung April 24, 2026

Pluralistic: A free, open visual identity for enshittification (24 Apr 2026)

Today's links A free, open visual identity for enshittification: No mere poop emoji! Hey look at this: Delights to delectate. Object permanence: RIAA v little girl; Portal turret Easter egg; Atari v indie games; Chabon's Phantom Tollbooth intro; The 0.1%;...

via Pluralistic: Daily links from Cory Doctorow April 24, 2026

Nicolas Solerieu

This week on the People and Blogs series we have an interview with Nicolas Solerieu, whose blog can be found at slrncl.com/blog. Tired of RSS? Read this in your browser or sign up for the newsletter. People and Blogs is supported by the "One a Month" club...

via Manuel Moreale — Everything Feed April 24, 2026

Generated by openring