A dilapidated steel shack with a box full of rusted fans and machinery bolted on to it.

It is no fun trying to figure out how to syndicate photos if you don’t own some part of the pipeline.

I had a very simple workflow in mind going in:

  • Post photos in one place.
  • Syndicate the photos via RSS/Atom.
  • Turn one photo into a blog post, a tweet, and a toot.

I had a few requirements:

  • doable from desktop, tablet, or phone
  • alt text entered at the top of the process has to survive the whole trip
  • I didn’t want any additional “dressing” in the form of stuff like “mph posted a photo” or whatever.

At first Pixelfed seemed perfect: It’s Instagram-like, it’s Fediverse aware (so I could benefit by following my favorite Mastodon photographers in addition to having a launch point for images. Most importantly, every user has an Atom feed.

The only problem was that I still don’t understand how Atom feeds are meant to work on Pixelfed. On two instances I’ve seen feeds update anywhere from “instantaneously” to “a day later.” I can’t believe that’s what they intend, but after a toot, a direct message to the project, and three requests for help from my instances that went unanswered after three days, I decided it’s not worth thinking about.

Smugmug has feeds, but each item is wrapped in publication noise so they’re not good candidates for shooting through a pipeline.

flickr has the same issue.

Glass has feeds, but no control over alt text that I can tell.

Turns out there are a million ways to get images out of Instagram, but that’d require using a Meta product.

micro.blog could serve as an ingestion point and even has an app for posting images (Sunlit), but that app wipes out your alt text after you enter it. You can make normal posts in micro.blog in conjunction with the Mimi image uploader, but it’s pretty manual.

I briefly considered rolling my own in Jekyll and sketched out how I could make a bare RSS feed with image attachments, but it’d be cumbersome to use that workflow on a mobile device. I still sort of like the idea, but we’re getting into something where the output is so simple I don’t think it even needs Jekyll at that point: Just some Ruby scripts up in Github Actions.

So I ended up punting. It’s probably premature to say it worked, but it is working on my test micro.blog instance right now:

I just did an auto-install of WordPress on my Dreamhost account, picked a theme that is good enough, repurposed an old gallery and lightbox license, and I’m in business*:

  • I can upload images from the WordPress app.
  • I can make posts out of the images.
  • I can generate an RSS feed from the posts that micro.blog can ingest, then make posts, toots, and tweets.
  • I can make a front-page gallery of the most recent images so if someone stumbles across it or clicks through to a post, they can browse around.

But the intent is really just to have a place where I can upload images and they can be syndicated.

I really do want to work on that scripted approach, though: It’s 2022 and running a ginormous PHP application with all the attendant risk and maintenance when I have all these tools lying around in GitHub or Cloudflare is unseemly.


* Where “business” means I still need to get a cert, get things into a CDN, etc.