FINISHING TOUCHES – an action‑driven workflow script for Photoshop
Finishing Touches automates Photoshop actions for each image based on its IPTC/EXIF keywords and aspect ratio. It is designed for batch work: export a mixed set of files from Lightroom/Bridge, drop them on a Photoshop droplet, and let Finishing Touches route each image through the right actions.
From version 3, you no longer hard‑code a JavaScript “capsule library” in the script. Instead, you build and store your capsules inside a Photoshop action step using a visual Capsule Builder, or by typing capsule lines directly in the recipe text field.
Installation and basic setup
-
Install the script
Copy FinishingTouches.jsx into Photoshop’s Scripts folder (on macOS this is usuallyPresets/Scriptsinside the Photoshop application folder). Restart Photoshop. The script appears under File ▸ Automate ▸ Finishing Touches. -
Load the action set
Load Finishing Touches.atn into the Actions panel (if it is not already loaded). This action simply calls the script and stores your capsule library and options. - Initialize the action (first run)
In the Actions panel, run the Finishing Touches action once with any document open. The Capsule Builder dialog opens. Here you:- Build one or more capsules (see below),
- Set the keyword order (priority for master keywords),
- Choose options like Save TIFF as JPG, Convert to sRGB, Tidy keywords, and Save and close when actions are completed.
Click Save settings. The library and options are stored inside the action step; from now on you can run the action (or a droplet based on it) without seeing the dialog.
- Optional: create a droplet
Create a droplet from the Finishing Touches action as usual. Dropping files/folders on the droplet runs the action once per image, applying all matching capsules.
You generally never need to edit FinishingTouches.jsx itself. All configuration lives in the action step’s recipe.
Overview: capsules and matching
The script uses a capsule library. Each capsule describes:
- Which images it should match: by keywords and aspect ratio
- What to do when it matches: optional resize and one or more Photoshop actions to run
When the script runs on an image it:
- Reads the image’s keywords from
File info ▸ Keywords(IPTC/EXIF), - Classifies its aspect ratio into one of:
1x1,6x7,4x5,4x3,2x3,16x9, orxpan, - Reorders the image keywords by your keyword order preference,
- For each keyword (in that order), finds capsules whose first keyword matches and whose aspect ratio matches,
- Among those, prefers the most specific capsule (the one with the most keywords) that is fully contained in the image’s keyword list,
- Optionally resizes to the capsule’s target size and runs all its actions, in order,
- Moves on to the next keyword and repeats, until all relevant capsules have been executed.
The result is a flexible, keyword‑driven pipeline where you can chain several capsules simply by adding multiple keywords to an image.
Capsule syntax (text format)
You can build capsules visually with the Capsule Builder, or type them directly in the Capsule Library text area on the right side of the dialog.
Each capsule is written on its own line using this syntax:
keywords: kw1 ; kw2 | ratio: 2x3 | size: 3600 | actions: Action name @ Action set ; Another action @ Another set
Rules:
keywords:– required. One or more keywords separated by;.
The first keyword is the master keyword; the rest are modifier keywords.ratio:– required. One of:1x1,6x7,4x5,4x3,2x3,16x9,xpan.size:– optional. Short‑side target size in pixels (integer).
If present, the image is resized before any actions are executed; the script always resizes the short side to this value.actions:– required. One or more actions separated by;.
Each item isAction name @ Action set name. The.atnfile ending is optional; the script adds it if missing.- Spacing around
|,;, and@is flexible; the script trims each part. - Empty lines and lines starting with
#are ignored, so you can comment your library.
Simple example: single keyword, single action
This processes 2×3 color images with the keyword color, resizes them to 3600 px on the short side, and runs one action:
keywords: color | ratio: 2x3 | size: 3600 | actions: 35mm ISO 400 (3600 Color) @ The Film Grain 3600 Color
Multiple actions in one capsule
This runs a halation pass and then grain for 2×3 color images:
keywords: color | ratio: 2x3 | size: 3600 | actions: Halation, 35mm @ Halation global ; 35mm ISO 3200 (3600 Monochrome) @ The Film Grain 3600 Monochrome
The actions are executed in the order you list them.
Capsule without resizing
If you omit size:, the image is never resized by this capsule:
keywords: export-web | ratio: 4x5 | actions: Web sharpen and watermark @ Export Tools
Keywords, master vs modifiers, and specificity
Each capsule’s keywords: list can contain one or many keywords:
- The first keyword is the master keyword.
- Any additional keywords are modifier keywords.
This matters in two ways:
-
Grouping by master keyword
The script loops over the image’s keywords in the order you define in Keyword order. For each image keyword K, it only considers capsules whose first keyword is K. -
Specificity
When several capsules share the same master keyword and aspect ratio, and all of their keywords are present in the image, the script prefers the most specific one: the capsule with the largest number of keywords.
In other words, you can define a general capsule and then “override” it with more specific ones by adding modifier keywords.
Example: grain at different ISOs
Capsules:
keywords: color | ratio: 2x3 | size: 3600 | actions: 35mm ISO 400 (3600 Color) @ The Film Grain 3600 Color
keywords: color ; iso1600 | ratio: 2x3 | size: 3600 | actions: 35mm ISO 1600 (3600 Color) @ The Film Grain 3600 Color
Image A has keywords: color.
Image B has keywords: color, iso1600.
- For Image A, only the first capsule fully matches → ISO 400 grain is used.
- For Image B, both capsules match, but the second has two keywords (
color,iso1600) and is therefore more specific → ISO 1600 grain is used.
Example: halation in color vs black‑and‑white
Capsules:
keywords: halation ; color | ratio: 2x3 | size: 3600 | actions: Halation color @ Halation
keywords: halation ; bw | ratio: 2x3 | size: 3600 | actions: Halation mono @ Halation
- An image with keywords
halation,colorruns Halation color. - An image with keywords
halation,bwruns Halation mono.
You can also add other master keywords (for additional capsules) to the same image to chain several processing stages.
Keyword order and chaining capsules
Often you want several capsules to run on the same image—for example: film emulation, then halation, then grain, then an export preset. You achieve this by:
- Defining one capsule per processing stage, each with its own master keyword, and
- Setting the Keyword order field so those master keywords are processed in the order you want.
Internally, the script:
- Reads the image’s keywords.
- Reorders them using your Keyword order list (keywords not mentioned keep their original relative order and come after the listed ones).
- For each keyword in that ordered list, finds the best matching capsule (by specificity) and runs it.
The Keyword order field in the dialog accepts keywords separated by ; or ,, for example:
halation;color;grain;export;borders
With this order, an image that has keywords color, grain, export and halation might run capsules in this sequence:
halation ...grain ...export ...
…depending on which capsules you have defined for those master keywords and that aspect ratio.
Using the Capsule Builder dialog
When you run the script from File ▸ Automate ▸ Finishing Touches or edit the action step with dialogs enabled, you see the main dialog.
Left side: building a single capsule
- Keywords
- Type a keyword and click + Add Keyword.
- The first keyword you add becomes the master keyword. Additional ones are modifiers.
- You can remove selected keywords with – Remove Selected.
- Aspect ratio
- Pick the ratio this capsule applies to, e.g.
2x3or4x5. - The script automatically classifies each image and matches only capsules with the same ratio.
- Pick the ratio this capsule applies to, e.g.
- Target size (optional)
- Enter a pixel value to resize the short side of the image before running actions.
- Leave blank if you do not want this capsule to resize.
- Actions
- Use the Select action dropdown. It shows all loaded action sets and their actions as
Set name > Action name. - Choose an action and click + Add Action to add it to the capsule.
- You can add several actions; they will run top‑to‑bottom, in the order shown in the list.
- Use – Remove Selected to delete an action from the capsule.
- Use the Select action dropdown. It shows all loaded action sets and their actions as
- Add to Capsule Library
- Click Add to Capsule Library → when you are happy with the capsule.
- A text representation of the capsule is appended to the Capsule Library on the right.
- Builder fields are cleared so you can build the next capsule.
Right side: capsule library, keyword order, and options
- Capsule Library
- Shows all capsules as text lines.
- You can edit this text directly: add, modify, or delete capsule lines; add
#comments; reorder lines.
- Keyword order
- Enter master keywords separated by
;or,in the order you want them processed.
- Enter master keywords separated by
- General options
- Save TIFF as JPG – when enabled, TIFF images are converted to JPEG and saved into a
jpgssubfolder next to the original file. Other formats are saved as JPEG. - Convert image to sRGB – when enabled and the image is saved as JPEG, its profile is converted to
sRGB IEC61966-2.1first. - Remove matched keywords from image – when enabled, all keywords that participated in any matched capsule are removed from the file metadata after processing (tidy up).
- Save and close when actions are completed – when enabled, the script saves and closes the document at the end (unless an action already closed it). This is what you normally want in a droplet workflow.
- Save TIFF as JPG – when enabled, TIFF images are converted to JPEG and saved into a
Click Save settings to store the current library and options into the action step. From then on, running the action (or a droplet based on it) silently reuses those settings.
Examples of complex workflows
Here are some concrete patterns that show what the script can do.
1. Film‑like pipelines per format
Goal: Apply different film looks, halation, and grain per aspect ratio, with web‑ready output.
Example capsules:
keywords: color | ratio: 2x3 | size: 3600 | actions: Color film look (2x3) @ Wallflower ; Halation, 35mm @ Halation ; 35mm ISO 1600 (3600 Color) @ The Film Grain 3600 Color
keywords: color | ratio: 4x5 | size: 3200 | actions: Color film look (4x5) @ Wallflower ; Halation, 35mm @ Halation ; 120 ISO 800 (3200 Color) @ The Film Grain 3200 Color
keywords: export-web | ratio: 2x3 | size: 2048 | actions: Web sharpen and watermark @ Export Tools
Workflow:
- In Lightroom/Bridge, set keywords
colorandexport-webon images you want processed. - Export TIFFs or PSDs, drop them on the Finishing Touches droplet.
- For each image, the script runs the
colorcapsule appropriate for its ratio, then theexport-webcapsule, in the order defined by Keyword order.
2. B&W vs color with shared halation
Goal: Share the same halation pass but have separate color and B&W finishing.
Example capsules:
keywords: halation | ratio: 2x3 | size: 3600 | actions: Halation, 35mm @ Halation
keywords: color | ratio: 2x3 | actions: Color curve and saturation @ Wallflower
keywords: bw | ratio: 2x3 | actions: BW conversion and tone @ Wallflower
Set Keyword order to:
halation;color;bw
Workflow:
- Image with keywords
halation,colorgets halation first, then the color finishing capsule. - Image with keywords
halation,bwgets halation first, then the B&W finishing capsule.
3. Specific grain per ISO and format
Goal: Apply different grain depending on ISO and format, with a fallback if no ISO is given.
Example capsules:
keywords: grain | ratio: 2x3 | actions: 35mm ISO 400 (3600 Monochrome) @ The Film Grain 3600 Monochrome
keywords: grain ; iso1600 | ratio: 2x3 | actions: 35mm ISO 1600 (3600 Monochrome) @ The Film Grain 3600 Monochrome
keywords: grain ; iso3200 | ratio: 2x3 | actions: 35mm ISO 3200 (3600 Monochrome) @ The Film Grain 3600 Monochrome
With Keyword order containing grain early on, the script will:
- Use the ISO‑specific capsule when
iso1600oriso3200is present. - Fall back to the generic
graincapsule when no ISO keyword is present.
4. Social vs print outputs
Goal: From the same master files, create both print‑ready and social‑media exports.
Example capsules:
keywords: print | ratio: 2x3 | size: 4800 | actions: Print sharpening @ Output Tools
keywords: social | ratio: 2x3 | size: 2048 | actions: Social crop and watermark @ Output Tools
keywords: bw ; social | ratio: 4x5 | size: 2048 | actions: BW conversion and social crop @ Output Tools
With Keyword order like halation;color;bw;grain;print;social, you can tag an image with print, social, or both and have both output sizes rendered in one droplet run (assuming your capsules save appropriately named files and the main script is configured to save and close).
Tips and caveats
- Avoid actions that save and close the document themselves. The script manages saving and closing based on your options. Actions that close the document can prematurely end processing; if this happens, the script stops and shows a message.
- Keep each capsule’s keyword combination unique for a given aspect ratio. If you accidentally create overlapping capsules with identical keyword sets and ratio, only the first one in the list is likely to ever run.
- You can comment your recipe with lines starting with
#and keep related capsules grouped together for readability. - If you change or rename actions or action sets, update the capsules (or rebuild them with the dropdown) so the names match what appears in the Actions panel.
Once your library is dialled in, the normal workflow is: tag images in Lightroom/Bridge with the right keywords, export, drop the files on your Finishing Touches droplet, and let the script do the rest.