Back to projects
Jul 23, 2026
5 min read

Curator

A self-hosted app that turns saved Instagram reels and posts into a private, searchable personal library.

I had around 470 saved Instagram posts and reels: recipes, restaurants, startup ideas, clothes, technology, travel, and anything else that looked useful. The problem was that I almost never returned to them. Instagram is good at saving content, but not at finding it again.

I also wanted the option to leave Instagram without losing the collection I had built over the years. So I made Curator, a self-hosted application that turns saved publications into a private, searchable library.

Curator dashboard showing the publication library and processing status

What Curator does

Curator imports Instagram reels, posts, and carousels from their URLs. It downloads the media, extracts audio and representative frames, transcribes speech, and analyzes each publication before adding it to the library.

The result is more useful than a folder of downloaded videos. Curator creates titles, summaries, categories, entities, and structured details based on the content:

  • Recipes can include ingredients, steps, style, and nutrition goals.
  • Restaurants can include cuisine, budget, and location hints found in the post.
  • Fitness content can include exercises, goals, and muscle groups.
  • Startup content can become ideas, principles, and possible next actions.

Everything remains searchable and filterable, with a review queue for results that need a human check.

Curator library with search, filters, and analyzed Instagram publications

How the pipeline works

Instagram URL
    ↓
durable SQLite queue
    ↓
yt-dlp / gallery-dl
    ↓
FFmpeg audio + frames
    ↓
Whisper transcription
    ↓
Codex structured analysis
    ↓
searchable library + review queue

Imports are normalized and idempotent, so submitting the same publication twice does not create duplicates. Download, extraction, transcription, and analysis failures are stored with their stage and can be retried from the interface.

Built for self-hosting

SQLite is the source of truth, while downloaded media stays on the local filesystem. I run my instance at home behind Tailscale, but the project also ships as a multi-architecture Docker image.

The application uses the OpenAI Whisper API for transcription. For content analysis it can use an existing Codex subscription, avoiding a separate per-publication AI bill. Supporting a strong local transcription model is one of the improvements I would most like to add.

Curator dashboard displayed on a mobile phone

Building it with Codex

Codex wrote almost all of the application code during two intense days. My work was defining the product, choosing the architecture and workflows, breaking the work into tasks, testing it against my real Instagram library, finding bugs, and repeatedly guiding both the implementation and interface.

I did not write the codebase line by line, but this was not a single prompt that magically produced a finished app either. The product emerged through a tight loop of decisions, tests, reviews, and changes in direction.

Current status

Curator is early software, but I already use it with my own library and the main pipeline is working. Instagram access relies on cookies and unofficial download tools, so upstream changes can still break extraction.

The project is open source under AGPL-3.0. Contributions are especially welcome around local transcription, new content types, extractors, and easier setup. Longer-term, I would like restaurants to become an actual map and recipes to become a proper recipe collection instead of remaining analyzed reels.

View Curator on GitHub