One thing that comes with miniature painting is hunting for inspiration. I’d been saving reference images — Instagram screenshots, Pinterest saves, YouTube frames — and after a while I had a folder with hundreds of files named things like IMG_3182.jpg. A completely unsearchable mess. When I wanted to find “how someone painted golden armor in a grimdark style,” I had no chance.
So I decided to fix it. The result: every image lands in Obsidian as a note with a description, colors, and tags — and the whole description is generated for me by an AI model.
The idea: Obsidian as an inspiration catalog
Instead of keeping images in a plain folder, I keep them in my vault. Each image gets a small note with:
- subject — is it a miniature, an illustration, or a color palette
- category — e.g. warhammer > space_marines, fantasy > knights, terrain > ruins
- colors — the 2–4 dominant colors on the model
- tags — and not just any tags: specific painting techniques and moods, like
nmm,osl,drybrush,grimdark,weathering
This lets Obsidian do what it’s best at — searching and connecting. I can click the nmm tag and see every reference for painting metal without metallic paints. I can filter by color. I can pull up everything in the chaos category. A dead folder turned into a living knowledge base.
How it works
I wrote myself a small script. It does three things:
- Takes an image and sends it to an AI model that can actually look at pictures (a so-called vision model).
- The model sends back a clean, structured description — category, colors, tags — in a fixed format.
- The script copies the image to the right place in the vault and creates its Obsidian note.
A few things I tuned so the catalog would actually be useful:
- The model gets clear instructions to describe painting techniques and mood, not obvious stuff like “miniature,” “photo,” or “detail.” Five sharp tags beat fifteen watered-down ones.
- Colors are normalized to a fixed list of 17 base colors (red, gold, silver, brown…), so “maroon,” “dark red,” and “cherry” don’t spawn three separate categories.
- Duplicate detection — if the same image already exists somewhere, the script skips it (it compares file contents, not names).
- A local cache — an image that’s already been described isn’t sent to the AI a second time, so I don’t pay twice for the same work.
Testing models — what I learned
This was the most fun part. I started out on OpenAI models, but quickly switched to OpenRouter — a single gateway to many models at once, so I could test different options just by changing one line of config. My shortlist was shaped by three needs: it had to see the image well, follow my tagging rules, and reliably return the structured format I ask for. Cheap was a big plus — this is bulk classification, and I’d rather not pay premium rates to sort screenshots. I also insisted on routing only to providers that don’t train on my data.
What I actually tried:
- qwen/qwen3-vl-30b-a3b-instruct — my first pick, because it’s open, cheap, and privacy-friendly. In practice it turned out too weak: it kept dumping color names into the tags and made small typos, once even inventing a color that doesn’t exist. My code cleans a lot of that up after the fact, but a weak model means you’re constantly patching it at the source.
- qwen3-vl-235b — the bigger sibling. A real quality jump over the 30B if I’d wanted to stay on cheap, open Qwen.
- claude-sonnet-5 — the premium option. Best at following instructions, so the cleanest tags with basically no junk — the one to reach for if tag purity mattered more than cost.
- google/gemini-2.5-flash — very cheap, fast, strong vision, solid structured output.
I settled on google/gemini-2.5-flash, and that’s what I use now. The quality jump over Qwen was obvious the moment I ran it on a real folder: concrete, genuinely useful tags (things like crossbowman, morning-star, chainmail, wizard), clean colors straight from the palette, and no color names leaking into the tags. For mass-cataloging inspiration on the cheap, it hits the sweet spot — I don’t need the world’s most expensive model to recognize “space marines, gold and red, weathering technique.”
How I add new images (the best part)
The whole job now comes down to: drop in an image and run a single command. I can point it at one file or a whole folder — the script chews through everything, sorts it into categories, and writes the notes.
I can also attach my own label to a batch of images — for example, when I grab a series of screenshots from one tutorial, I mark them with a shared tag so they stay together.
The payoff: finding inspiration takes seconds, and adding new inspiration takes practically no effort. Collecting references stopped being a chore, because the tidying happens on its own.
What’s next
A few ideas for later: auto-generated gallery notes that collect every model in a given color scheme, and wiring this up to a quick shortcut so I can add an image with a single keypress.
For now, though, it works — and, most importantly, I actually use this catalog while painting. Which was the whole point.