Field Notes

Rename Mac screenshots automatically by what they show

macOS names a screenshot after the second you took it. This flow reads each new one, renames it by what it shows, and files it in ~/Pictures/Screenshots.

A real sweep of eight files, with the waits for the model cut short: seven screenshots get names from their own text, the grocery list is left alone, Commit applies all seven, and Undo puts them back.

Take ten screenshots a day for a month and the Desktop holds 300 files called Screenshot 2026-09-12 at 14.03.22.png. The one you want is the stack trace from last Tuesday, or the booking reference, or the Slack message someone later deleted. The name tells you when you took it, which is the one thing you do not remember.

So you open Quick Look and arrow through thumbnails, or rename screenshots by hand, one at a time. Or you select all and drag them into a folder called old desktop, where they are just as unfindable.

How the flow names each screenshot

When a new screenshot lands on the Desktop, Watchflows reads its text with Apple's Vision framework, hands that text to an AI model that writes a three to six word name, and renames the file to its creation date plus that name: 2026-09-12-slack-deploy-failed-error.png. Then it moves the file to ~/Pictures/Screenshots/. With Apple Intelligence as the model, the image and its text never leave your Mac.

The flow, node by node

Fig. 1Three sections: spot a screenshot, read it and name it, file it. Six nodes in a straight line.

Desktop is a Directory Changed trigger on ~/Desktop, Watch Subdirectories off, Event Types Created. Leave Wait for iCloud download on if Desktop and Documents sync to iCloud; the flow then fires once the file is complete on this Mac, not on a placeholder.

Screenshot? is a Condition with two case-insensitive rules joined by AND: fileName starts with Screenshot, and fileType equals Images. Screen recordings are Videos, so they pass by. If your Mac is not in English, or you changed the screenshot name prefix, put your prefix in the first rule.

Extract Text (OCR) reads {{filePath}} with Recognition Level on Accurate. It runs on your Mac with no network and no AI provider, and puts the words on extractedText. Language Correction is on, which suits screenshots of prose; turn it off if you mostly capture code or serial numbers, where dictionary correction mangles the text.

Fig. 2The Name it node. The prompt asks for 3 to 6 words, and the Output Schema requires one field, name.

Name it is an AI Prompt node. The prompt asks for a short name that says what the screenshot shows, app or website first, no date, no extension, and the single word screenshot when there is no readable text. Temperature is 0.2, because a file name is not the place for variety. Output Schema requires one string, name, so {{result.name}} is always there for the next node.

Pick Apple Intelligence as the Provider after you import the flow. It is text-only, which is fine because OCR already turned the image into text. Its guided generation constrains the model to your schema as it writes, so the answer is valid by construction, and it costs nothing per call. It needs macOS 26 on an Apple-silicon Mac with Apple Intelligence turned on. Ollama works too if you would rather run a model you picked.

Fig. 3Rename File's pipeline: the Base Name from the model, then Slugify, then the file's creation date on the front.

Rename File takes Base Name {{result.name}}.{{fileExtension}} and two Rename Operations: Slugify in kebab-case, then Add Date from the file's created date, ISO format, at the start. The extension is split off before the operations run and put back after, so Slugify never touches .png. Slugify also drops any quotes or stray punctuation the model adds.

Move File sends the renamed file to ~/Pictures/Screenshots/. The trailing slash keeps the new name, and Create Directories makes the folder the first time. Overwrite Existing is off here (Move File's default is on), so two screenshots of the same error land as ...-error.png and ...-error-1.png.

How it behaves in practice

Rename the 300 screenshots already on your Desktop

The trigger only reacts to new files. For the ones already there, use Folder Sweep: switch the flow on, and Watchflows sees the Desktop is not empty and asks what to do with them.

Fig. 4The card: how many files the Desktop holds, and Just watch, Preview or Run on N, with the AI calls per file.

Choose Preview, or press the eye beside the run button in the canvas toolbar to skip the card. Every file on the Desktop runs through the flow and nothing on disk changes. Screenshots are read and named for real; everything else stops at the Condition. While it works, the canvas shows Previewing Desktop · 147 / 312, and after three files it adds the time left.

The review lists every file before and after. Each screenshot's change reads Move + Rename, with its new name in its new folder. Everything the flow does not touch, the PDFs and folders you keep on the Desktop, sits under Left alone. Read down the names. Where the model got one wrong, uncheck it (Space toggles a row), then Commit, or ⌘↩. Commit makes exactly the checked changes and does not call the model again. A file that changed since the preview is skipped and marked Needs attention.

In the flow's run history the whole sweep is one row, Swept Desktop · 300 files, and that row carries Undo sweep. Renames and moves can both be undone, so if the names are not what you wanted, the Desktop goes back to how it was.

Variations

Paste this into the Flow Builder to get the same flow:

Paste into the Flow Builder

Watch my Desktop for new screenshots, files whose name starts with Screenshot. Read the text in each with OCR, have AI write a 3 to 6 word file name with the app first using an output schema with a name field, rename the file to its creation date followed by that name in kebab case, and move it to ~/Pictures/Screenshots.

What's in this flow

One trigger. Nodes are listed in the order a run reaches them; the canvas above shows where it branches.

Download this flow
  1. Directory ChangedDesktop
  2. ConditionScreenshot?
  3. TransformExtract Text (OCR)
  4. AI PromptName it
  5. FileRename File
  6. FileMove File

Run this one yourself

Download the flow, double-click it, and Watchflows opens it on the canvas. Everything in this note is on the 14-day free trial.