Michael Strickland Photography

Using Lightroom and GitHub Actions to power a portfolio

Michael Strickland

One luxury you have with a portfolio is that your work never has to be “finished.”

Learning my way around Lightroom after my first few shows, I would revisit my photos days or weeks or even months later: dialing back some new setting I got too excited about here, filling out a gallery with late edits of an opener there, redoing everything now and then.

Back when I was using Squarespace, I did this through their CMS for a while. But it quickly became a huge pain: every update to any and every photo meant running through a tedious workflow of exporting, uploading, sorting and removing images by hand, in an interface wasn’t optimized for the iPad I do most of my work on.

At the same time, I decided to move this site to GitHub Pages powered by Jekyll, a text-based static site generator that makes it possible to update content programmatically. To take full advantage of that, I wanted a tool that would reduce the export/import friction between finishing an edit for a show and publishing or updating it online.

Image depicting the import lightroom album action

lightroom-album-import is what came out of that. It’s a GitHub Action that streamlines the process of moving images from a Lightroom album to any place you want to show them: whether a portfolio, website or anywhere else where repeatedly exporting and uploading images manually is troublesome.

The action also keeps the Lightroom album as a source of truth for your images going forward: after each run, edits or crops made in the album will percolate down to your destination, and the album’s collection and sort order can control how it’s displayed on your site.

For this website, I use it to:

  1. Download the latest version of images from a concert album to a folder in the git repository backing my portfolio
  2. Generate or update a markdown file listing the sorted images along with data like the performer names, venue and date, all of which Jekyll will turn into a webpage for that event
  3. Create and upload multiple sizes of each image to a CDN
  4. Make a Pull Request with the new files, which I can later add content like a review to.

At the moment, this action can only be used for albums that are shared publicly. In the future I’d love to make an authenticated version that works with privater albums as well.

If you’re interested in trying it out and want help setting it up, feel free to send me a DM on Instagram!