# Photo Filename Annotator

> Photo Filename Annotator is an AI agent skill for Claude Code, Codex CLI, Gemini CLI, and other agents that read SKILL.md. Renames every photo from what is in the frame, so a camera roll becomes searchable. Best for: rename photos by content with AI.

- URL: https://atharvashah.com/ai-skills/photo-filename-annotator
- Price: $19, one payment
- Works with: Claude Code, Codex CLI, Gemini CLI, Cursor, GitHub Copilot
- Category: Research and knowledge
- Built by: Atharva Shah (https://atharvashah.com)
- Requirements: Needs a paid Claude plan with Claude Code, Python 3, and ImageMagick. A big folder reads many images, so a Max plan fits large archives. The agent views your photos, so they reach your AI provider like any image you share. Videos and RAW files are left alone by default.
- Buy: https://buy.polar.sh/polar_cl_UrbGOx20Q8jkmsQZp6DiawITRxXonNK11YhGk4UcDzG?custom_field_data.skill-standard=photo-filename-annotator (the skill folder and setup guide arrive by email)

## Rename every photo from what is in the frame.

It looks at each photo and writes what it shows into the filename. A folder of IMG numbers becomes a folder you can search by content.

## What it produces

- **Search by content.** A folder of camera numbers becomes searchable, because each name says what the photo shows. ![A file search for ramen returning three photos of a ramen bowl, each with a descriptive filename.](https://atharvashah.com/ai-skills/photo-filename-annotator/scene-1.webp)
- **The labeled sheet.** Labeled contact sheets tie every description to exactly one file before anything is renamed. ![A real contact sheet of nine photos, each labeled with its original filename, with one label circled.](https://atharvashah.com/ai-skills/photo-filename-annotator/scene-2.webp)
- **The dry run.** Every old and new name is shown first, and one bad row refuses the whole batch. ![A dry run listing four photos with the old filename struck through above the new descriptive name.](https://atharvashah.com/ai-skills/photo-filename-annotator/scene-3.webp)

## Look first. Rename second.

Every run follows the same path, so a big archive stays safe.

1. **Point it at a folder.** It reads the capture date from each photo and builds labeled contact sheets in a scratch folder, so your originals stay untouched.
2. **It describes what it sees.** It reads each sheet and writes a short name for what is visibly true. It zooms in when a face, a badge, or a sign matters.
3. **You approve the dry run.** It shows every old and new name. One bad row refuses the whole batch. After the rename, an audit checks every name.

## Hand renaming is slow. Cloud tags stay locked in.

The names should live in the file, so any search tool can use them.

### Photo Filename Annotator

- **A folder in minutes.** It describes and renames a whole folder in one run.
- **One naming style.** Date first, then a short slug, every time.
- **Checked before it runs.** A dry run and an audit catch bad names.
- **Undo on every run.** One file walks the folder back.

### Renaming by hand

- **Hours per folder.** Hundreds of photos mean an evening gone.
- **Names drift.** By the tenth folder, the style has changed.
- **Nobody finishes.** The backlog stays at IMG numbers.
- **No undo.** One bad batch rename is hard to reverse.

### Cloud photo apps

- **Search lives in the app.** Your file names stay as camera numbers.
- **Tied to one service.** Leave the app and the tags stay behind.
- **A storage plan.** Another subscription for the privilege.
- **You set no rules.** The tags are whatever the service decides.

## Frequently asked questions

### Can AI rename photos based on what is in them?

Yes. This skill builds labeled contact sheets, describes each frame, and renames through a checked mapping file. Every run keeps an undo file, and your originals are never deleted or re-encoded.

### How do I make a photo folder searchable?

Put what is in each photo into its filename, with the capture date first. Any search tool can then find it. This skill does that for a whole folder in one run.

### Can Claude rename photos by what is in them?

Yes. This skill gives it the method: build labeled contact sheets, describe each frame, and rename through a checked mapping file. Claude Code can read the images on its own, but the method keeps it safe.

### Does it change my original photos?

It renames files in place and nothing else. It never deletes, overwrites, or re-encodes an original. Previews live in a scratch folder.

### Can I undo a rename?

Yes. Every apply writes an undo file, and one command walks the folder back. Keep that file until you are happy.

### Which files does it handle?

Photos in JPEG, PNG, HEIC, HEIF, WebP, JFIF, and TIFF. Videos and RAW files are left alone by default, because a video needs a frame pulled out first.

### Where do the dates come from?

From the capture time in the photo first. If that is missing, it reads a date in the filename. The file date is the last resort, because bulk copies often reset it.

### Will it name the people in my photos?

Only after an anchor, such as a legible badge, a reference photo you give it, or your confirmation. Otherwise a recurring face gets a generic name, and you can correct it later.

### Do my photos leave my computer?

The agent views the preview sheets, so the images go to your AI provider, like any image you share with Claude. Keep private photos out of the folder.

### Which Claude plan do I need?

A paid plan with Claude Code. Pro handles a small folder. Large archives read many sheets, so a Max plan fits better.

### What else do I pay for?

Nothing. Python and ImageMagick are free. The only cost is your Claude plan.

### How big a folder can it handle?

Hundreds of photos per folder is normal. Large jobs run one agent per folder in parallel, and you run the final audit across all of them.

### Does this skill work with Gemini CLI, Codex, Cursor, or GitHub Copilot?

Yes, with one caveat. The skill is a SKILL.md folder in the Agent Skills open standard, which Claude Code, Codex CLI, Gemini CLI, Cursor, and GitHub Copilot all load. It is built and tested on Claude Code. Steps that lean on Claude-only features, such as parallel subagents, run one after another or need a manual step in other agents.

### How do I install an agent skill?

Copy the skill folder into your agent's skills directory: ~/.claude/skills for Claude Code, or the skills folder your agent documents for Codex CLI, Gemini CLI, Cursor, or Copilot. The agent reads the description and loads the skill when your request matches it. Each skill ships with a setup guide for any tool it needs.

[All AI skills](https://atharvashah.com/skill-pack) · [Library index](https://atharvashah.com/ai-skills.md)
