Drop #153 (2022-12-09): Weekend Project Edition
Huginn It Out
With darker days and colder weather cascading across the Northern Hemisphere, late fall/early winter is a great time for weekend projects to pick up new tech or play with tech you’ve not made time to before.
Today’s challenge is to build an RSS feed for a source that doesn’t have one, and the suggested tool to use is Huginn, a “system for building agents that perform automated tasks for you online.” Huginn workers can read from pretty much any data source/type, listen for events, and do your bidding.
Unlike simple, single-focused cron jobs, Huginn supports entire workflows. If you’ve used IFTTT or Zapier, then you have some idea of what Huginn can do. Except, Huginn is free, your data is yours, and nobody is spying on what you’re using. Plus, you can make as complex of a directed graph of event processors as you like, each one capable of propagating events to any number of other Huginn receivers.
Docker is the easiest way to get started. On most systems and internet connections, you’ll be up and running in about 5 minutes after:
docker run -it -p your.wire.guard.ip:3000:3000 huginn/huginn
(I mean, you are using WireGuard/Tailscale, right? Right?)
You can also take time to customize the docker image all you want, too, since the Huginn documentation is amazingly rich and detailed.
Out of the box, you get some sample workflows that you can play with:
but, for this exercise, you’ll want to poke at the “XKCD Source” one to help you get a jumpstart. Just tap it, go to the “Actions” menu and select “Edit”, or clone and edit that clone, since you’re going to be building your own. I’ve extracted a snippet of that editing session, below, but the documentation scrolls on for a long bit (Huginn is a very mature and robust project with lots of community support, which shows in details like this.)
Some ideas for your custom RSS feed maker:
Turn the CISA KEV Catalog JSON data into an RSS feed. I have one that I do with a Rust toy I built, but you can easily do it with this, and also shunt new entries to other triage workflows.
Give Semafor a much-needed RSS feed. This new journalism effort is cool,. but newsletter-heavy, and doesn’t have an RSS feed. Sad.
Aggregate timeline, hashtag, or list feeds from a bunch of Fediverse servers. Create an agent for each one and then have them feed an aggregation step and deliver the contents as RSS (or any way you want).
Honestly, any JSON source should be pretty straightforward to process after poking at the documentation a bit.
By using a WireGuard/Tailscale binding address, you keep the admin interface away from nefarious ne’er-do-wells and have full access to both your private network resources as well as the big bad internets. And, since Huginn can also be a webhook receiver — amongst other capabilities — you can even still support that via Tailscale funnels.
Make sure to drop a link to your new RSS feed(s)! ☮