Speed Up Image Processing With Scripting

Discover how scripting can automate repetitive tasks, significantly accelerating your image processing workflow.

If you’re spending a lot of time on repetitive image processing tasks, scripting can take a big chunk of that off your plate. A few well-placed scripts in your workflow can speed things up significantly and free you up to focus on the actual shoot.

Why This Script Is A Big Upgrade

Processing files manually is one of the biggest bottlenecks in post-production. Manually assigning recipes and exporting each batch wastes time that could be spent refining images or preparing client deliverables. This script allows Capture One to intelligently apply the right process recipes to your rated and color-tagged selects, so everything is exported in one go. Fast and efficiently.

Use Cases for Digital Techs

  • Client Deliverables on Set. When a client requests high-res TIFFs for 5-star images and low-res JPEGs for proofing, this script automatically processes the selects into the correct formats.
  • Retouching Workflows. Quickly generate high-res files for retouchers while simultaneously creating small proofs for client review.
  • E-Commerce & Commercial Photography. Apply different processing settings to images based on star ratings or color tags to speed up final deliverables.

How It Works

  1. Before running the script, apply star ratings or color tags to the images you want to process.
  2. Run the script. It will match ratings and tags to predefined processing recipes.
  3. Capture One processes the files automatically, applying the correct export settings based on the image’s rating or color.

Practical Use Case

Client wants Purple tagged images processed into a plates folder, 5-star images as JPEG and TIFF in a Selects folder, and everything in an All Images folder. Regardless of tag or rating. Instead of filtering for each of these manually, the script can be pre-programmed to process based on rating or color tag and run on the All Images folder in Capture One.

Note: The following script is only an example of how to take advantage of conditional processing and recipe creation. Please adjust to suit your needs before deploying it.

How This Speeds Up Your Workflow

  • No More Manual Processing. The script automatically applies the right process recipe, eliminating the need to manually select export settings for each image.
  • Consistency Across Exports. Ensures that all images are processed using predefined settings, reducing errors and making deliverables more uniform.
  • Faster Turnaround Time. Whether working on high-volume e-commerce, commercial shoots, or editorial sessions, automation dramatically cuts export time.

The “Process All Selects” script takes the headache out of processing large batches of images, making it a must-have for any digital tech looking to improve efficiency.


Below is a Capture One AppleScript that processes all rated and color-tagged variants in your current collection. It creates a hard coded JPEG recipe, if not already added, and batch-processes them in one shot. Additional processing can be added and filtered by rating or color tag. Drop it into Script Editor, save it as a .scpt, and run it from Capture One’s script menu.

# Settings
set SelectsProcess to "ProcessAllSelects"
set processToSessionOutput to true

-- ------------------------------------------------------------
-- Script Below - Modify at your own risk
-- ------------------------------------------------------------

tell application "Capture One"
	
	-- Destination folder
	tell document 1
		if processToSessionOutput is true then
			set destFolder to current output folder
		else
			set destFolder to session folder
		end if
	end tell
	
	-- Ensure recipe exists (and reset if using default)
	tell current document
		if SelectsProcess is "ProcessAllSelects" then
			if exists recipe "ProcessAllSelects" then
				delete recipe "ProcessAllSelects"
			end if
			
			make new recipe with properties {name:"ProcessAllSelects", enabled:true, format:JPEG, subfolder:"JPEG_Selects/[Session Sub Path]", root:recipe root current, root folder:destFolder, exclude:exclude existing, sharpening:sharpening none, recipe crop:true}
		else
			if not (exists recipe SelectsProcess) then
				display dialog "Recipe not found: " & SelectsProcess buttons {"OK"} default button "OK"
				return
			end if
		end if
	end tell
	
	-- Get rated + tagged variants directly
	tell current document
		set ratedVariants to (every variant whose rating > 0)
		set taggedVariants to (every variant whose color tag > 0)
	end tell
	
	-- Combine + de-dupe
	set toProcess to {}
	set seenIDs to {}
	
	set toProcess to my appendUniqueVariantsByID(toProcess, seenIDs, ratedVariants)
	set toProcess to my appendUniqueVariantsByID(toProcess, seenIDs, taggedVariants)
	
	if (count of toProcess) = 0 then
		display dialog "ERROR: No rated or color-tagged variants found in the current collection." buttons {"OK"} default button "OK"
		return
	end if
	
	tell current document
		process toProcess recipe SelectsProcess
	end tell
	
end tell

on appendUniqueVariantsByID(toProcess, seenIDs, variantList)
	repeat with vv in variantList
		set theVar to contents of vv
		set vid to ""
		try
			set vid to (id of theVar) as text
		on error
			try
				set vid to (name of theVar) as text
			on error
				set vid to theVar as text
			end try
		end try
		
		if my textInList(vid, seenIDs) is false then
			set end of seenIDs to vid
			set end of toProcess to theVar
		end if
	end repeat
	return toProcess
end appendUniqueVariantsByID

on textInList(t, L)
	repeat with x in L
		if contents of x = t then return true
	end repeat
	return false
end textInList