Jan-Lukas Else

Thoughts of an IT expert

I can now use Micropub to publish to my blog

Published on in ✍️ Posts
Short link: https://b.jlel.se/s/b3
⚠️ This entry is already over one year old. It may no longer be up to date. Opinions may have changed. When I wrote this post, I was only 20 years old!

I can now make use of Micropub to post on my blog!

More information:

I am in search for an easier way to blog from the go for quite some time now. Recently, I implemented a web-based form to submit new posts using the API of my self-hosted Gitea. While that worked, it was still not optimal.

I already heard of Micropub before, since I joined the IndieWeb, but I was always a bit scared of complexity to develop my own solution. So I searched instead for already existing solutions, which I could modify to better fit my custom requirements.

I found indiekit, which looked very promising, but it only supported Github. I am already using Gitea, so I would have had to change some of the JavaScript code.

After a bit more searching, especially for projects not written in PHP or JavaScript, I found gozette, which is written in Go. I’m quite familiar with and like Go for multiple reasons, so it was my perfect starting point. Although I rewrote like 80% of the code, until I was able to use it for my setup, I now have a Micropub endpoint for my Hugo blog. But not only that: Due to the rewrite I know the codebase and can easily add missing basic features, as well as more advanced features, I may need or want.

The code is public in a repository on Codeberg: hugo-micropub.

It is definitely not made as a generic solution, but it may be helpful for everyone needing a starting point or some inspiration themselves.

Compared to the original gozette I made the following significant changes:

  • Removed all dependencies and rewrote the HTTP handling with the Go standard library
  • Added support for Gitea and removed everything related to Github (seems like the Gitea API, or the one used endpoint, is actually much simpler than Github’s API)
  • Added support for multipart-data (some clients require this)
  • Added a custom hack to add a post to a content section using a prefixed category
  • Added another custom hack to also set a custom slug with clients that support categories, but not slugs (also done via adding a category with a specific prefix)
  • Adapted the post generation to my setup (YAML front matter instead of TOML etc.)
  • A lot more code restructuring etc.

My next planned steps include:

  • Adding support for posts without titles to my Hugo theme
  • Adding support for more post types including likes, replies, etc.
  • Adding a section for microblog interactions on my blog that isn’t shown on the homepage or in feeds
  • Automatic webmention sending after posting

In the end, after rewriting much of the code and actually reading parts of the Micropub specification, I found out, that Micropub isn’t as complicated as I feared earlier. Micropub is awesome!

Doing things like this is so interesting! Although it doesn’t have much practical value (I could just use a WordPress site and wouldn’t have all those problems), I’m learning a ton of new stuff and it’s just fun!

Tags: , , ,

Jan-Lukas Else
Interactions & Comments