setting up POSSE-style microblogging with a Hugo static site and Micro.blog
- 10 minutes read - 2025 words - kudos:I was recently talking to some friends about how I’ve been working to make my Hugo blog the center of my online presence. In particular, even though I didn’t know the term at first, I’ve been trying since 2019 to follow the POSSE strategy of “Publish (to) Own Site, Send Elsewhere” (note that, in the grand tradition of many tech acronyms, everyone agrees what the acronym means, but there are multiple ways of understanding what it stands for exactly).
This began back in 2019 as publishing short posts to my website (which would forward to the fantastic indie platform Micro.blog) and then reposting them to Twitter (at first, awkwardly appending a link to the website-version of the post in each tweet). During the summer of 2022, I more or less quit Twitter, divided my site into four subsites (so I could blog on topics as disparate as French, family, faculty life, and faith without “crossing the streams”), and redid my POSSE approach so that all content was going to Micro.blog (and a Buttondown newsletter) and each subsite was forwarding to a different Mastodon account.
The whole experience has been a lot of fun and taught me a lot. In fact, I’m tempted to write all of this effort up as professional development, because it’s been fantastic for my teaching of a Content Management Systems class (ICT 302) at the University of Kentucky every fall. I’ll be slipping into CMS-speak for parts of this post, as I respond to one of my friend’s request by writing up how exactly I’ve done all of this, in the hopes of encouraging others to do the same thing. I note first that platforms like Micro.blog (which is, itself, based on Hugo), WordPress, and Ghost are (or will soon be) Fediverse-compatible out of the box, which frankly makes them easier for establishing a POSSE setup. For those already committed to Hugo though (or who would like to switch over—I think it’s a fun platform to work with), this is how I make everything work.
A couple of caveats before I begin! First, I readily acknowledge that some of this is kind of Rube Goldberg-esque—I offer it as what works for me and not as an exemplary setup. Second, I’m intentionally not getting into the technical weeds for some of these steps, especially since those weeds are so context-dependent. I’m happy to provide more technical details on any of these steps to anyone who asks.
microblogging with the Hugo content model
One of the reasons that I like having my ICT 302 students work with Hugo is because of the way it demonstrates that a lot of tech things boil down to individual files that are carefully formatted and carefully organized. Every post on Hugo is ultimately a .md
text file with a few elements making up its content model. There are a surprising (to me) number of elements that you can fit into a Hugo post, but the key ones are a date
, a title
, and then (below the header), the content
of the post itself.
These posts assume traditional, longform blogging, but there’s nothing stopping them from containing short posts à la Mastodon or Twitter. The way I (currently) do this is simply leaving the title
element blank, treating the date
normally, and making sure that the content
sticks to a 300-character limit (so that it shows up as a microblog-style post on Micro.blog).
aggregating microblog posts in a Hugo theme
As I’ve just written, because the content model of a Hugo post expects a longform blog post doesn’t mean that you can’t impose your own constraints to make it support microblog-style posts, too. However, the way that Hugo aggregates content (i.e., combines content for the purpose of presenting or organizing it) also expects longform blog posts with titles, etc., so to really make this work smoothly, you also need to muck around with the templates to your Hugo theme.
In short, when a Hugo theme provides a list of posts on your site (whether “recent posts,” posts that correspond with a particular tag, or some other kind of list), it’s likely to use the title of the post in some way. In fact, in a list of posts, a Hugo theme may only display the titles of those posts. If you’ve followed my earlier advice and left titles out of microblog posts, those posts may/will not show up (at least not properly) in lists of posts, making it confusing for people to browse content on your Hugo site. One workaround, is to include the content of the post as the title of the post. That ensures that short posts show up in your Hugo lists, but it also makes it awkward if someone goes to the post page itself—then, the content will show up twice, once as the title and once as the actual post. This is how I used to do things, but it truly is awkward, so I don’t really recommend it.
What I prefer is to start by picking a Hugo theme that includes a summary of each post in any list of posts. For the past couple of years, I’ve been using the default Hugo theme Ananke; it supports summaries in lists and has lots of other nice features that I’ve enjoyed working with. In short, if you have summaries in lists and don’t include titles for your microblog posts, then the entirety of your microblog posts will show up in those lists (without a title, which is a nice visual cue that this is a different kind of post) while previews (and titles) of your longform posts also show up in the same aggregation.
Almost immediately after setting this up, I realized that there was an issue. Even if you don’t strictly need a title for microblog posts in Ananke, the theme still uses those titles as the links back to the individual posts. If anyone wanted to visit the specific page (to comment on it, see its tags, get the URL, etc.), they’d have no way of getting there. So, I had to change the summary.html
template (under layouts
, then _default
) in Ananke to include a timestamp for each post and wrap that timestamp in a link to the post. This solved my problem, and the presence of timestamps frankly just makes the lists look better and more helpful.
With all those tweaks, microblog posts fit pretty organically alongside longer posts in my Hugo site. Technically, there’s no real difference between the two post types—it’s a single content model for both—but by using the content model differently and tweaking the Hugo templates, I can do two different kinds of writing with clear visual cues as to what’s what.
supporting microblogging with Siri Shortcuts
Let’s be honest: It’s great that I can publish short posts to my Hugo blog, but I’d never really do this if I had to manually go through the process of creating a new .md
file for each post and making sure that it was formatted just so. On a related note, I do all of my longform blogging from a laptop or desktop, and microblogging is one of those things that’s begging to be done from a phone.
I’m really going to skip over the technical details here, but I want to acknowledge how I tackle this. My Hugo site is essentially a GitHub repository with a hosting service (Netlify) pointed at it (I’ve got some issues with GitHub, but practical considerations are outweighing any principled complaints for the time being). So, just like a Hugo post is fundamentally a .md
file, updates to my website are fundamentally commits to that repository.
With all of this in mind, I purchased the iOS Git client Working Copy to make it possible to make commits to that repo from my phone. Then, because Working Copy has solid Siri Shortcuts integration (and a solid x-callback-url
scheme, which I had previously used), I set up some Shortcuts that prompt me for microblogging content and then create a properly-formatted-for-a-Hugo-post .md
file in the right place in the repository before committing and pushing those changes to GitHub. It’s not as seamless as an app for Mastodon, Micro.blog, or Twitter, but it’s pretty darn close, and it’s a lot easier than manually creating a file every time I want to post a snarky comment that came to mind at the grocery store.
I would share my Shortcut for doing this, but it’s heavily dependent on my preferences (e.g., support for tagging, organizing posts within one of four subsites), so I’m really not sure how helpful it would be. I’d be happy to share on request, though, and at some point, I’ll have to trim it down to something generic that other people could adapt for their own purposes.
While I’m on the topic of Siri Shortcuts, this automation software has been great for supporting other “genres” of post, too. I’ve set up a linkblog Shortcut that lets me quickly link to and comment on something I’m reading in my phone’s browser, and while I go back and forth on how often I use it, I really enjoy bookmarking things to my site this way. Likewise, I have a series of different Shortcuts (which could probably be a single Shortcut with some better branching logic) that let me write and post a quick review of some media I’ve just consumed. This is a great way to keep track of (and share) what I’m reading, watching, and listening to. More to the point of POSSE, these post genres let me participate in other activities on the social web without displacing my website as the center of my online activity.
sending elsewhere with Micro.blog
Everything up to this point has been a description of how I’ve set up microblogging on my Hugo site itself. To send/syndicate that content elsewhere, I rely on Micro.blog. It’s important to point out first that Micro.blog is itself one of these elsewheres, not just an intermediary! I think Micro.blog is one of the most important and interesting indie social media platforms out there today. It’s built on the idea of platform independence, blog-first web presence, and using open protocols (most notably RSS) to bring individual blogs into a social interface. I have not always been great about engaging with the Micro.blog community, but as a platform, it’s truly what I want the social web of the future to look like.
Micro.blog will grab content from any RSS feed that you give it and post it to the Micro.blog platform for you, and that’s how I have it set up. Posts under the Micro.blog-post length of 300 characters will show up in the Micro.blog interface as microblog posts (hence why I use 300 characters as my cutoff for microblog posts on Hugo); anything longer will show up in the interface as a link redirecting readers back to my site.
Micro.blog is fantastic for a number of reasons, but one recent change that I’ve particularly enjoyed is that it’s Fediverse compatible. That is, you can follow a Micro.blog account from Mastodon (or one of a few other services). So, even if you’re looking to reach beyond Micro.blog for your POSSE strategy, you can reach a number of other Fediverse-compatible platforms by just sending content to Micro.blog.
However, you can also use Micro.blog to forward your content to specific Mastodon instances—or to other platforms like Bluesky, Tumblr, or Medium. Since I have my site split into subsites, I use Micro.blog to send different content to four different Mastodon accounts, further extending my POSSE reach.
conclusion
This is both far too long of a post and probably not enough detail to really get anyone else started! My setup is a bit rickety, and it may well change in the future, but I hope it’s of interest to anyone looking to set up a POSSE approach to the social web on a Hugo static site. I’d be happy to fill in details in any follow-up conversations, and I’ll try to keep blogging about how I’m handling this as I continue to fidget with being independent-but-social on the web.
- macro
- Myself
- POSSE
- Micro.blog
- Mastodon
- ICT 302
- context collapse
- WordPress
- fediverse
- Buttondown
- Github
- Netlify
Similar Posts:
quitting scrolling, not just Twitter
some Hypothesis (and other) updates for the blog
pre-conference updates to my online presence
I’ve tried to scale back my media consumption recently. My RSS client feels empty, and it’s weird not to check social media as much. Every time I think about stepping it back up, though, it just stresses me out.
🔗 linkblog: my thoughts on 'Lazy Reporters Claiming Fediverse Is ‘Slumping,’ Despite Massive Increase In Usage | Techdirt'
Comments:
You can click on the <
button in the top-right of your browser window to read and write comments on this post with Hypothesis. You can read more about how I use this software here.
Any Webmentions from Micro.blog will also be displayed below: