Teaching an Archive to Read Itself

Yesterday, I exported the entire Flickr archive from Dedric Mauriacs account. Today I began turning that collection into something far more navigable and customizable than Flickr ever allowed.

The goal is simple in concept but surprisingly involved in execution: a completely static website—just HTML, CSS, and JavaScript—that allows the images to be browsed locally without any server-side processing.

To get started, I once again turned to ChatGPT to generate the scaffolding for a static site generator. The script builds pages for each image and includes the metadata exported from Flickr. From there I began layering on features that Flickr itself never really offered in a meaningful way.

Each image page now includes:

  • full image details and metadata
  • navigation between images
  • thumbnail previews for nearby images
  • tags associated with the photo
  • links to albums and groups

Beyond that, I added several discovery tools:

  • a timeline view listing all years and months containing images
  • popular photos based on view counts
  • photos with comments
  • top tags used across the archive
  • tag browsing so you can see every image tied to a particular topic

The result is already far more flexible than simply scrolling through a Flickr stream.

Screenshots

Photo Stream
Photo Page
Search Results
Timeline View

Trying to Locate Simulators

The next challenge I tackled was identifying simulators—locations inside the virtual world of Second Life where the photos were taken.

Some of that information is easy to detect. Many descriptions contain:

  • SLurls (Second Life URLs)
  • SLBuzz map links
  • other textual references to a simulator name.

But I quickly ran into a bigger obstacle.

A large number of images were posted via blogHUD, which embeds location information directly in the image as a small caption overlay.

It typically looks something like this:

taken by : Dedric Mauriac
on Higgins (123, 45, 67)

Since the information wasn’t in the metadata, I needed to read it from the pixels.

Image: Sitting at a mockup of my “real life” cubicle in Second Life
Avatar, Location, and blogHUD logo at the bottom of the image

Wrestling With OCR

My first attempt used Tesseract.js. I tried numerous preprocessing techniques using Sharp to improve recognition:

  • adjusting contrast
  • sharpening the image
  • manipulating alpha values
  • experimenting with thresholding
  • resizing the text area

The font is a small pixelated UI font, and while I could easily read the caption myself, after all of the processing, Tesseract struggled to interpret it consistently.

Ironically, I was having better luck simply pasting the images into ChatGPT and asking it what the text said.

That led to the next experiment.

Letting AI Analyze the Images

Since I had already used the OpenAI API successfully to analyze images from my personal Flickr account, I decided to try a similar approach here.

This time, though, the instructions had to be more specific.

The script now sends each image to the API along with some contextual hints:

  • Look for the blogHUD icon in the lower-right corner
  • Check the lower-left caption area for text
  • Identify captions such as
    “taken by : Dedric Mauriac”
  • Extract the simulator name and coordinates
  • Detect all text visible anywhere in the image
  • Return pixel coordinates for each detected text region

I also provided some additional context to improve recognition:

  • The images come from Second Life
  • They were taken by the avatar Dedric Mauriac
  • Simulator names often include Higgins or Woodbridge
  • Shop signage might include phrases like
    Dedric Mauriac’s Gadget Shop, SLExchange, SLX, Prims, Copy, XFer, etc.

The AI is also asked to:

  • Describe what it sees in each image
  • Generate tags

All of this was wired together with JavaScript—again largely generated with the help of ChatGPT.

The Time Tradeoff

One thing that really stood out today was the time investment.

If I were writing all of this code completely by hand, it would have taken significantly longer. But even with AI helping generate the structure, the number of hours spent experimenting, refining prompts, and debugging edge cases was still astonishing.

The difference is that I’m now building something much more capable than what Flickr ever provided.

In the end, this should allow me to:

  • Identify far more simulators tied to the photos
  • Search any text appearing inside the images themselves
  • Browse the archive using timelines, tags, popularity metrics, and more

Years ago, I even paid a crowdsourcing service that relied on human workers to tag my images. The results weren’t particularly impressive. Today, AI seems capable of doing the same task far more effectively—and at a scale that would have been impossible back then. It can interpret the detailed context of what I’m looking for and process images in a fraction of the time and at a fraction of the cost. Speaking of which, I had to add another $10 to my OpenAI account today because the balance was running low.

What Comes Next

Once the image analysis pipeline is finished, the next step will be incorporating the extracted simulator names and coordinates into the generated HTML pages, along with the additional text and image descriptions discovered during analysis.

I also want to make the text detection interactive. Ideally, I’ll be able to click on detected text entries and highlight the bounding boxes showing exactly where the text appears in the image. Alongside that, the interface should list all recognized text and allow it to be indexed for searching.

Finally, I need to wire the JavaScript search functionality into this new data so that text discovered inside the images becomes searchable alongside titles, tags, and descriptions.

The last piece of the puzzle will be finding a home for the static site itself. The images may eventually find their way into posts on my personal blog or even the dedricmauriac.wordpress.com blog, but the static HTML and JavaScript archive deserves a place on the web where it can sit relatively safe from service decay for a while—ideally long enough to be captured by the Internet Archive.

I’m still thinking about where that should live.

Ideally, I’d like something that feels a bit like the old GeoCities era—a place where static sites could simply exist without complicated infrastructure, hosting fees, or modern platform constraints.

Because in the end, this project is really about preserving a small piece of digital history.

And making it easier to explore.

Discover more from Lewis Moten

Subscribe now to keep reading and get access to the full archive.

Continue reading