Change your colour scheme

New project: archive your Firefish posts


This project is heavily inspired by Zach Leatherman’s Tweetback], but instead of being for Twitter, it’s for Firefish. I recently moved away from using Firefish, but I didn’t want to remove the instance as then the individual posts would be inaccessible. While I don’t think anything I wrote on that account is particularly impactful (unless someone’s been cataloguing my commutes or something), I’d still like to make them accessible for posterity.

My solution

So I built this tool: Firefish Archiver. It uses Eleventy + the open Firefish API to retrieve every public note from the account, and then recreate it using the same URL structure. I’ve (tried) to make the resulting HTML as un-shit as possible, but it’s still very much a work-in-progress.

Usage is pretty simple: add your user ID and Firefish host to the src/_data/metadata.json file, and then run the npm build command. The template then:

  1. Fetches your profile information and recreates it
  2. Fetches all of the public posts and organises them into threads
  3. Creates a /.well-known/webfinger file pointing to whatever account you’ve redirected to

Then, you can upload the output in the _site directory to any location you’d like. The output is cached, so you shouldn’t need to worry about the instance being deleted on subsequent rebuilds. The intention for this is that it can replace the instance entirely as a static drop-in, for single-user instances, but it can also be used if you want to host a copy of the content from another instance.

Things still to add

I’ve got plans to add a few extra details. Namely:

  1. Content warnings
  2. Favourite & Renote counts
  3. Site search
  4. Improving the styling

Feedback on the project is always appreciated - you can send a webmention to this page, or drop me a message through any of [my socials][/links].

About the author

My face

I'm Lewis Dale, a software engineer and web developer based in the UK. I write about writing software, silly projects, and cycling. A lot of cycling. Too much, maybe.