About

Split AI Tags by How You Use a Shot in the Edit, Not by What Is in It — 12 Axes Across 4,341 Files

Stuck picking footage for a family video, I rebuilt the tag scheme, and fixed about half of it by eye

I was making a growing-up video from family photos and clips, and most of the time went into picking footage, not editing. There were 4,341 files (3,989 photos, 352 videos, from 2017 to 2026).

The existing tags were all about what's in the shot: kid, food, sea. The questions I actually had while editing were different. Is there a wide landscape shot for the opening? Which shots have empty space for a caption? Can I filter out the blurry ones first?

So I rebuilt the tags around where a shot gets used in the edit. After reading this you'll know which axes make picking footage faster when you AI-tag photos and video, and why you have to check AI tags by eye.

From "what" to "where"

What's in itWhere it goes in the editchildfoodsea2022Openingwide + sharp + landscapeCaption spaceempty top or bottomCut firstblurry, darkEndingperson in sceneryre-axisSearch tags find photos. Edit tags pick cuts.

The default categories in photo apps (people, places, things) are for searching. Great for "photos from the beach". When you edit, you search by use instead: "a wide shot I can put a caption on". The two don't overlap, so I kept the defaults and added an editing layer on top.

Every tag is a macOS Finder tag in axis:value form. There are 12 axes. The real tags are in Korean; I've translated them here.

Axis Example tags Where it helps in the edit How it's decided
Framing framing:closeup framing:wide Rhythm of shot sizes Height ratio of face and body boxes
Position position:left/center/right Transition direction, matching cuts Face center, saliency area
Space space:top/bottom Where captions go Empty share outside the saliency area
Gaze gaze:front/left/right Eyeline matching Face yaw (left-right turn)
Quality quality:sharp/blurry/dark Filter out first Edge strength, brightness distribution
Color and light color:warm light:night Matching grading tone Mean color, dominant color, capture time
Time season:spring timeofday:evening Flow of a day or season EXIF time
Format format:vertical Shorts, Reels Aspect ratio
Video shot:slowmo length:longtake Slow-motion sections fps, duration
Sound sound:laughter/speech/music Shots where the original audio is worth keeping macOS SoundAnalysis
Use use:opening/ending/caption-bg Ready-made candidates Combination of the axes above
Basic place:sea year:2022 What's in it Vision scene classification

Use tags are combinations of other axes. use:opening = establishing shot (a wide shot that shows the place) + sharp + landscape orientation. use:caption-bg = wide + empty space at the top or bottom.

Everything ran locally: Vision (faces, bodies, horizon, saliency, scene classification), CoreImage, SoundAnalysis, ffprobe. Not a single external API call. These are family photos, so that was a condition from day one. The result: 9.6 tags per file on average, 88 distinct tags.

About half got fixed by eye

I pulled 14 samples per tag and looked at them myself. Not many of the first rules held up.

Tag First rule Problem After fixing
angle:dutch Horizon tilted 8° or more False hits indoors, mostly photos saved sideways Dropped
use:ending Afternoon + warm color + landscape Warm indoor lighting mistaken for golden hour (food photos as ending candidates) New criteria, 10/14
quality:blurry Bottom 12% per camera model Large faces have smooth skin and looked blurry Exclude large faces
expression:smile Any face smiling Small faces in the background, statue faces Only faces at least 50% the size of the largest -> 15/18
use:opening Landscape label Food and animals mixed in Exclude food and animals
gaze:left/right yaw ≠ 0 Even slightly turned faces Only absolute yaw of 0.6 or more

I dropped angle:dutch entirely. It was meant to find tilted compositions, but what it caught were mostly photos stored on their side with no EXIF orientation. I haven't managed to detect those automatically yet.

I haven't sample-checked the space and color axes yet, so I'm not quoting accuracy for them.

Don't wipe existing tags

Some files already had color tags from Finder. Tags live in the file's extended attributes (xattr), so overwriting the whole thing deletes the old ones. I left the originals and appended. After applying, I re-checked all 4,341 files: 0 new tags missing, 0 old tags lost.

Camera movement (pan, tracking, handheld) isn't an axis yet. If I add video analysis, that's the next post.

If you want AI classification on a photo or video archive, or want to organize company material this way, you can ask negabaro (contact).

Key Concepts

1

Write down the questions you ask while editing (opening, caption space, rejects), then design axes

2

Make every tag `axis:value` so sorting and combining are easy

3

Build use tags as combinations of other axes

4

Check samples per tag by eye; the first rule is usually wrong

5

Append to existing tags (xattr) instead of overwriting

Use Cases

Picking footage before editing family or event videos Classifying an internal photo and video archive without sending files out
← Putting Your Face Into a Music Video Scene — Three Methods That Solve Different Problems Same Reviewer, Different Results — AI Code Quality Is Decided Before the Review →