I'm still trying to figure out what I want to use for my static site publishing.
I've looked at Hugo [0] and Haunt [1]. The former is powerful, but a bit challenging to configure and requires tons of golang libraries to build. Prohibitively many, since I want to run my server on Guix-SD. The latter is simple and clean, but only supports a few formats.
The main problem is that I use org-mode for my writing.
I probably just need to add a step in the build pipeline that runs Emacs to export the org-mode source in a different format amenable to haunt or similar. Some people just customize the org exporter and use that directly, but that seems like even more work.
I'm using a static site generator I wrote in arc. My workflow is as such:
1. Write my entries in an org file that contains all the entries.
2. Narrow to the subtree (C-x n s), and export to an HTML buffer (C-x C-e h H)
3. Manually copy the relevant part of the overly-large HTML file into a new file (blog-entry-name.html). This is only the content of a page; it does not include any headers, footers, navbar stuff, or the html wrapper around the body.
4. Insert by hand a serialized arc template, containing three keys: a url slug, the title of the page, and the publication date.
5. Update the frontpage of my site to link to the new page. This file is similarly formatted: an arc template, then html content.
6. Update a file that indicates which pages should go in the sidebar of my site.
7. Run an arc command to generate the entire static site.
8. Check it out locally, then rsync the content to my nearlyfreespeech.net server.
Obvious places for improvement are 3, 5, and 6.
I was thinking about this recently. There's something quite fun in writing extremely personal software. This is not a tool that is designed to be used by millions of people, and I'm ok with that. I'm actually quite happy with storing settings for the page and the html content in the same file! It seems like a neat hack to me.