Using org-mode with Jekyll
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
;; 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
- Add a new file to
git/levlaz.org/_org/$DATE-$TITLE.org - Add the front matter shown above
- Blog my heart out
- Check my spelling with
ispell - Publish the org file with
C-c C-e P p, this moves the file fromgit/levlaz.org/_org/to/git/levlaz.org/_posts/2016/$DATE-$TITLE.html - Build and Deploy my site with my Rakefile:
rake deploy.
Conclusion
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
- My Custom Miniflux CSS Theme
- SQLite DB Migrations with PRAGMA user_version
- Making cgit Pretty
- 2024
- Setting up ANTLR4 on Windows
Recent Favorite Blog Posts
This is a collection of the last 8 posts that I bookmarked.
- Pluralistic: AI "journalists" prove that media bosses don't give a shit (11 Mar 2026) from Pluralistic: Daily links from Cory Doctorow
- Avi Alkalay: Uniqlo T-Shirt Bash Script Easter Egg from Fedora People
- Offline 23 hours a day from Derek Sivers blog
- Pluralistic: California can stop Larry Ellison from buying Warners (28 Feb 2026) from Pluralistic: Daily links from Cory Doctorow
- On Alliances from Smashing Frames
- Acting ethically in an imperfect world from Smashing Frames
- Diffusion of Responsibility from Smashing Frames
- My AI Adoption Journey from Mitchell Hashimoto
Articles from blogs I follow around the net
I was inconsiderate but now I’m everywhere
When I was in the music business, there was a record producer who lived in New Jersey, but refused to come into New York City. Anyone that wanted to meet with him had to drive all the way down to his little town. I thought, “What’s his problem? Is he lazy o…
via Derek Sivers blog March 12, 2026Pluralistic: AI "journalists" prove that media bosses don't give a shit (11 Mar 2026)
Today's links AI "journalists" prove that media bosses don't give a shit: In case there was ever any doubt. Hey look at this: Delights to delectate. Object permanence: Eggflation x excuseflation; Haunted Mansion stretch portraits; "Los…
via Pluralistic: Daily links from Cory Doctorow March 11, 2026Generative AI vegetarianism
For some spicier takes! Anthony Moser’s “I Am An AI Hater”, Jenny Zhang’s “choosing friction”, Rusty Foster’s “A.I. Isn’t People”, or Ed Zitron’s “The Case Against Generative AI” if you have most of an afternoon to read it. Emily Bender and Alex Hanna’s p…
via Sean Boots March 11, 2026Generated by openring