I learned to script because I spent an entire day doing the same crop-and-resize operation 200 times. Not exaggerating. It was a Tuesday in 2009, I was working in a commercial studio, and by hour six I had developed a genuine personal grievance against the rectangular marquee tool. The next morning I sat down and learned enough JavaScript to build an action sequence that handled the whole job in about four minutes. That was the moment my relationship with Photoshop changed permanently.

Fifteen years later, I track every hour that automation saves me in a spreadsheet. The number is currently sitting at 2,400 hours. That is not a philosophical position about efficiency. That is a measurable return on time invested in learning the right tools.

Why Most “Workflow” Advice Misses the Actual Problem

The common advice is to just “use actions” or “try batch processing.” What that advice skips is the architecture question: where does the bottleneck actually live? If you process files one at a time, even with a polished action, you are still context-switching between files. Your real cost is not the action runtime, it is the human overhead around it.

Photoshop’s Image Processor (File > Scripts > Image Processor) solves part of this, but it is limited to flattened output formats. For anything involving layer comps, smart objects, or conditional steps, you need either a proper batch action built through the Actions panel or a bridge between Photoshop and an external automation layer. Understanding that distinction is the difference between shaving 20 percent off your time and cutting it by 80 percent.

The Three-Layer Stack Worth Building

The tools I actually use fall into three distinct layers, and they only work well when all three are dialed in together.

Layer one is the action itself. I build actions with explicit Stop commands that surface only when a decision genuinely requires a human eye, not as a default. Every action I run commercially has an error-handling step: a conditional check that flags missing color profiles and auto-assigns sRGB IEC61966-2.1 before any export step fires. Without that, one bad file can corrupt an entire batch output folder silently.

Layer two is the routing logic. For e-commerce work, where I might be handling 300-500 SKUs at a time, I use a folder-watched droplet setup through Photoshop’s Droplet feature combined with a simple AppleScript (on Mac) or PowerShell script (on Windows) that monitors an input folder and moves files into subfolders based on filename conventions. A file named “BLK-FRONT-2400.jpg” routes differently than “BLK-BACK-2400.jpg” before Photoshop ever opens it. That pre-sorting step is free. It costs about two hours to set up and saves roughly 15 minutes per batch, which pays back fast.

Layer three is quality control automation. I use an action set specifically for QC, not retouching. It opens each output file, runs a levels check, flags anything where the histogram clips above 248 or below 8, and logs the filename to a text file using a Script Events Manager hook. That text file becomes my correction list. No more opening 400 files to visually spot the two that clipped.

The Tools I Paid For and Actually Kept

A few third-party tools have earned permanent spots in my stack.

Luminar Neo’s background replacement engine is genuinely good for e-commerce product shots where the studio setup is not perfectly consistent. At $79 a year, it handles 85 percent of white-background cleanup cases faster than a manual path. The remaining 15 percent, things with reflective surfaces or fine texture edges, still need hand masking. Know which category your shot falls into before you route it.

Excire Foto for DAM and auto-keywording runs about $89 one-time. It is not a Photoshop plugin; it sits upstream of your Photoshop workflow. For clients sending me 1,000 raw selects from a campaign shoot, the auto-tagging accuracy is around 90 percent on product categories, which makes initial culling dramatically faster.

Photoshop’s own Generative Fill has changed one specific part of my retouching workflow: background extension for repurposing ad images to different aspect ratios. A 4:5 Instagram image becoming a 16:9 YouTube banner used to mean a content-aware fill guess and a lot of manual cleanup. Generative Fill handles the extension convincingly about 70 percent of the time on environmental backgrounds. I would not use it on precision product work yet.

The One That Wasted Three Weeks of My Time

I am going to be direct about this: I spent three weeks trying to integrate a popular “AI retouching” plugin that promised to automate skin retouching across a catalog of lifestyle images for an ad agency client. The plugin cost $149. The results were technically correct and visually sterile. Every face came out looking like it had been processed by the same algorithm, because it had been. The client noticed on delivery. I ended up redoing the critical hero images by hand anyway.

The lesson is not that AI retouching tools are useless. The lesson is that automation works best on problems where consistency is the goal. Skin retouching for lifestyle advertising is a problem where controlled inconsistency is the goal. Match the tool to the creative intent, not just the technical task.

What a Real Batch System Looks Like at Scale

The most clarifying thing I can say about building a batch workflow is this: start with the output specification and work backward. Know your final file format (JPEG, 90 quality, sRGB, 2000px on the long edge is a common e-commerce baseline), your naming convention, and your folder structure before you build a single action step. I have rebuilt workflows from scratch because I built them around my own preferences and then inherited a client’s naming system mid-project.

Document every action with a comment layer, even if you think you will remember what it does. Six months from now, you will not. Future-you is not as smart as present-you thinks.

The one thing that separates a workflow that scales from one that breaks under pressure is whether you built it assuming things would go wrong. They will. The file will be the wrong color space. The layer will be merged. The filename will have a space in it that breaks your script. Build for the exception, not just the clean case, and your tools will actually earn the time you spent on them.