Two days ago I wrote about finding Instagram reels in years of video. I said the vision step was not tested on real footage yet. Now it is.
I pointed the skill at the folder from my action camera: 230 clips, 20.9 hours of 4K at 100 fps. The model was Qwen3 VL 30B A3B (MLX build) in LM Studio. Everything ran on the Mac.
What the run looked like
| Step | Result |
|---|---|
| Clips | 230 |
| Footage | 20.9 h |
Scenes after reels scan | 5,131 |
Time per scene in reels describe | about 2.3 s |
| Total describe time | about 3.3 h |
| Scenes about swimming | about 300 |
The model gets three frames per scene and returns JSON: a description, tags, setting, activity, people count and a reel score from 1 to 5.
The descriptions are good
I expected vague text like "a person outdoors". I got this instead:
Underwater view of a swimmer's legs kicking, creating bubbles and ripples on the surface.
A swimmer dives into a lake from a rocky shore, with people and red inflatables nearby.
A coach instructs a group of three swimmers by the pool, using hand gestures to explain technique.
Bike ride, walk, car, park, pool, underwater, coach: it got all of these right. Search over these words works.
The score does not
The prompt asks for a reel score: 5 means "post this", 1 means "useless". Here is how the scores came out on the 922 scenes I kept after cleaning up the archive:
xychart-beta
title "Reel score per scene"
x-axis ["1", "2", "3", "4", "5"]
y-axis "Scenes" 0 --> 500
bar [33, 50, 371, 466, 2]
Half of everything is a 4. Across all 5,131 scenes only two got a 5, both from one coached pool session. A slow walk along a road got a 4. So did a forest path with nothing happening. The score says "this is a nice, clear shot", not "this would stop someone scrolling".
--min-score 4 still keeps half of the scenes, and inside that half the score does not rank anything. Treat it as a filter for bad shots (1 and 2), nothing more.
What works better
The structured fields are far more useful than the number:
72 scenes came back as pool. One filter, and the bike rides are gone.
211 scenes say swimming, plus underwater view, bubbles rising and swimming lesson.
Full text search on words like underwater, dive or coach finds the shots I actually want.
Grouping by day shows the good sessions at once: one lake day had 59 swim scenes in 9 GB.
So my search for a swim reel became reels search "underwater swimmer" --setting pool plus a look at the gallery. The score plays no part in the pick.
Two small surprises
LM Studio served on port 1235, not the default 1234. reels config --lmstudio-url http://localhost:1235/v1 fixed that in one line.
The index also told me what was filling my disk. 155 GB of the folder was one overnight recording of an empty room. Seeing "static shot, dim room" on about 2,800 scenes from one night made the delete decision easy.
What it took
One afternoon of background work and no cloud API. If I did it again I would not ask the model for a score at all. I would ask for one short "why this works as a reel" line and rank by people count, motion and setting, which the model reads well.

Related notes
A swim tech coaching course I finished on a plane
I took the SwimTech Coach (STC) Certification on Udemy during a flight. It promises data-driven swim coaching with wearables. It stays very basic and repeats itself, and I learned nothing new.
Analytics showed nothing although cookies were accepted
GA4 on mtl.dev stayed empty after I accepted my own cookie banner. The banner stored the choice but never told gtag about it on the next page load, so every hit went out as a denied ping. One consent update on mount fixed it.



