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

  1. Install the script
    Copy FinishingTouches.jsx into Photoshop’s Scripts folder (on macOS this is usually Presets/Scripts inside the Photoshop application folder). Restart Photoshop. The script appears under File ▸ Automate ▸ Finishing Touches.

  2. 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.

  3. 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.
  4. 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:

When the script runs on an image it:

  1. Reads the image’s keywords from File info ▸ Keywords (IPTC/EXIF),
  2. Classifies its aspect ratio into one of: 1x1, 6x7, 4x5, 4x3, 2x3, 16x9, or xpan,
  3. Reorders the image keywords by your keyword order preference,
  4. For each keyword (in that order), finds capsules whose first keyword matches and whose aspect ratio matches,
  5. Among those, prefers the most specific capsule (the one with the most keywords) that is fully contained in the image’s keyword list,
  6. Optionally resizes to the capsule’s target size and runs all its actions, in order,
  7. 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:

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:

This matters in two ways:

  1. 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.

  2. 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.

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

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:

  1. Defining one capsule per processing stage, each with its own master keyword, and
  2. Setting the Keyword order field so those master keywords are processed in the order you want.

Internally, the script:

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:

  1. halation ...
  2. grain ...
  3. 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

  1. 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.
  2. Aspect ratio
    • Pick the ratio this capsule applies to, e.g. 2x3 or 4x5.
    • The script automatically classifies each image and matches only capsules with the same ratio.
  3. 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.
  4. 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.
  5. 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

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:

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:

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:

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

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.