Ghost to Jekyll

OK I’ll admit, I have no excuse for the image this time, I just really enjoyed Darling in the Franxx, come at me 🥊

You may have noticed (or maybe not!) that my site changed a bit again. Every so often I like to redo my site, while experimenting with something new. In the past I’ve used Tumblr, WordPress and Ghost, but this time i’m trying out Jekyll.


Jekyll is a fairly well established static site generator, and it’s been really fun learning something new. I’m also a big fan of how neat and minimal the process has been building my site around it. I started out by watching this video, which is a nice introduction to the basics of Jekyll.

Converting my content

Transitioning from ghost to Jekyll was surprisingly easy. I used a program called jekyll_post_importer to convert my content from the ghost backup file to Jekyll’s markdown files.

After that, there was a little manual work needed to make sure all the images and tags worked ok. Luckily I’ve not written that much actual content!

Where are my tag pages??

Where are my dragons?!

So moving over from Ghost and Wordpress, I expected Jekyll to have some kind of tag structure, which it does… however Jekyll taxonomies don’t actually come with their own pages as you would expect.

In order to generate tag archive pages in the same way you’d get with a traditional blog CMS, something extra is needed.

While searching, I found this blog, which I couldn’t quite get working, but reassured me it’s possible. I then checked out this Jekyll plugin, and that pretty much solved the problem with only a little tweaking. 🙌

So as you can see, I’ve got a page for each of my tags, and even managed to get it to pull the most recent post’s image using a bit of good old interpolation.

Since all my content is tagged, I thought it might be cool to grab a related post if one is available. With very little searching I found this clever snippet, which I ended up modifying for my own use.

So that’s it!

It’s not the CMS for everyone, but so far I’m liking it and it certainly does the job. Bonus points for fulfilling my developer need for a performant and lean codebase.

It’s also nice to be writing this directly in Atom too, now to figure out the best way to push this to live… 👋