Organizing years and years photos has been a daunting task for me. It's one of the first things I started to do after exiting streamr.ai post-acquisition. For some reason, the idea of organizing my entire photo library scratched a technical itch, felt productive, and served just the right amount of nostalgia.
I built a local photo library in my Mac mini using the Immich platform. It was solid, but just didn't make it super-simple to keep things organized on an ongoing basis.
I already had all of my photos in iCloud. So, when OpenClaw caught fire a couple of weeks ago, I dove in and started building. I ended up with a nifty little worker that organizes concert photos for me every night. Here's how it works.
What is OpenClaw?
OpenClaw is the most dangerous "tool" on the internet today. It's a bot that runs on your local computer and can do anything that your computer can do. You can use it to just automate the heck out of your life. What's cooler is that you can set it up so that you can chat with it through Whatsapp, iMessage, and a dozen other apps.
It's not exactly easy to get setup, but with a couple of days of hacking, you'll be able to figure it out.
It also sucks up tons of tokens; it's the only time I have run out of tokens for my ChatGPT plus plan. If you can run your LLMs locally, you'll not run into this problem.
Why does it run out of tokens so fast? Because it's storing half a dozen different files with instuctions and memory for the LLM. It sends those across with every request. That makes it highly effective, but also very expensive to use.
How Does The Photo Organizer Work?
I was able to get it to analytze the location data in my photos and use Apple's native metadata to find "concert photos" and target them for organization.
Here’s a step-by-step breakdown of the process:
Location Data Extraction: OpenClaw retrieves GPS coordinates from my concert photos.
Date Matching: It cross-references these coordinates with concert dates from setlist.fm.
Show Identification: By matching the location and date, OpenClaw can suggest which concert each photo belongs to.
Updates a sqlite databse with concert name and date
Sends me status via WhatsApp nightly:
Run results (overnight concert-photo DB pass):
Resolved
• *Event 9 — 2022-06-08: *Modest Mouse @ Central Park SummerStage, New York, NY, USA
Evidence: cluster 40.773,-73.97 reverse-geocodes to *Rumsey Playfield (Central Park SummerStage); setlist.fm has *Modest Mouse on Jun 8, 2022 at that venue (opener also appears as The Cribs the same date).
Updated fields: title/venue/city/region/country, source=setlist.fm , source_url , confidence=0.9 , appended “Resolved:” note.
Still ambiguous (notes appended with reverse-geocode + setlist.fm shortlists / disambiguation hints)
• Event 6 — 2022-03-10 (cluster 40.719,-73.939 → Frost St, Brooklyn/Greenpoint-Williamsburg area): multiple plausible Brooklyn shows that night (Music Hall of Williamsburg / Baby’s All Right / Knitting Factory / Union Pool / Brooklyn Steel, etc.). Needs photo evidence (banner/artist text).
• Event 28 — 2024-04-25 (cluster 40.768,-73.982 → Columbus Circle): NYC setlist.fm has many Apr 25 options, but nothing uniquely ties to Columbus Circle; likely pre/post-show location. Needs photo evidence.
• Event 34 — 2024-12-11 (cluster 40.745,-74.009 → Chelsea, Manhattan): NYC setlist.fm has multiple Dec 11 options; coordinate doesn’t uniquely match a venue. Needs photo evidence.
Git • Committed DB changes: 314fd27 — “Resolve 2022-06-08 concert as Modest Mouse @ Central Park SummerStage; add investigation notes”
There's a lot of junk out there about how to setup OpenClaw. I found the best way is just to do it. Try to follow the docs - they are kind of all over hte place, but once you figure out how it works, you'll be in good shape.