Migrating from BlogEngine to GitHub Pages: BlogML to Markdown

#jekyll, #ntsystems edit this page

As promised here, I’m sharing the first part of our migration process from BlogEngine to GitHub Pages. A major part is, obviously, the migration of the content of the blog itself.


According to Wikipedia “BlogML is an open format derived from XML to store and restore the content of a blog.” Luckily, BlogEngine has an export option that exports all content (posts and pages) to a XML file.

Note: The XML file contains only the text content. So images, files and other assets have to be migrated separately.

I downloaded the BlogML file and started to look around for solutions to somehow convert the stuff to something Jekyll could use. After some googling, I found this blog describing something very similar. Apparently he was using a ruby script to create a properly formatted markdown (.md) file for each post in the BlogML file. Thankfully, the script could be found in his GitHub Repo.

The script was almost perfectly suited for our purposes after some small modifications I started it like so:

$ ruby -r './blogml.rb' -e 'Jekyll::BlogML.process("BlogML.xml")'

Note that in my case the BlogML.xml file is located in the same directory as the script and a new directory named “_posts” is created in the same path. Any existing directory with the same name will be deleted.

The modified version of the script is available here.


Once the posts (and the rest) was migrated, one has to start writing new stuff. Posts are written in plain text with markdown formatting so no super fancy editor is required and I’m getting along well with VS Code. I’m using the “Spelling and Grammar Checker” extension hoping it catches to most obvious typos ;)

Stay tuned for more. Tom