Scripts and workflows

Ready-made automation. A workflow runs inside the app on every picture a source delivers; a script drives the app from outside, and can do anything the app can.

Running a script

  1. Download the SDK. It is one file, with nothing to install: photosuite-sdk.mjs and its types, for your editor
  2. Install Bun, or Node.js 22 or newer: Bun · Node.js
  3. Save the script in the same folder as the SDK, keep FLOGVIT.photosuite open, and run it with the command under it. It finds the app on the machine by itself.

Every method a script can call is in the API documentation

Scripts

First pass by sharpness

Everyone

Opens a folder, waits until the app has measured every frame where the camera focused, then gives the sharpest tenth five stars, the next fifth three stars, and rejects the softest third. A start to look through, not a verdict.

bun auto-cull.ts <folder>
Download auto-cull.ts

From the card to the desk

Press

Put the card in and cull: every picture you pick is sent to the newspaper's server as a JPEG developed from the RAW, with your by-line, credit, the event, the place and a caption template in it.

bun card-to-desk.ts <desk connection> [<folder on the server>] --name "<your name>" [--credit …] [--event …] [--city …] [--caption …]
Download card-to-desk.ts

Credit every picture

PressEvents

Your name, credit line and copyright on every picture the folder shows, and keywords added, without touching the captions, headlines or keywords each picture already has.

bun batch-iptc.ts "<your name>" ["<credit line>"] [keyword …]
Download batch-iptc.ts

Export the picks

Everyone

Shows only the picks with three stars or more, and exports them as JPEG to the folder you give, or beside the pictures.

bun export-picks.ts [<folder>]
Download export-picks.ts

Every copy on every disk

Everyone

Scans the disks in the library and lists what exists more than once, whole folder copies first, with how much space they take. Give it a DNG and it also names the raw file it came from.

bun find-duplicates.ts [<picture.dng>]
Download find-duplicates.ts

Darker sky, brighter faces

Everyone

Two masks on the picture on screen: the top of the frame narrowed to its bright tones and darkened, and the skin tones lifted. Shows how a mask is put together from parts in a script.

bun local-adjustments.ts
Download local-adjustments.ts

From the course to the desk, with names

Events

Takes the frames off an SFTP server as the camera sends them, reads the race numbers, looks them up in the start list, and delivers HD JPEGs with the riders' names in the metadata to a folder or Google Drive. Two races finishing on the same day are read in one pass.

bun race-delivery.ts <connection> <remote-path> <work-dir> <event-dirs> --drive <folder link>
Download race-delivery.ts

Football: two pictures out of every frame

Press

Every frame from the camera's SFTP is denoised once and delivered twice to Google Drive: cut to the player at HD, and whole at 4K for the desk to crop its own way.

bun football-delivery.ts <connection> <work-dir> <drive folder link> <match folder>
Download football-delivery.ts

One frame per moment

PressEvents

For holding the shutter down: frames close in time are one burst, bursts that look alike are one moment, and only the best frame of each moment goes on, to a folder, Google Drive or the desk's FTP. The desk stops getting twenty near-identical frames.

bun burst-delivery.ts <connection> <remote-path> <work-dir> --to <connection>
Download burst-delivery.ts

Portraits of the runners

Events

Shoot wide, deliver people: every runner is cut out of the frame in the same shape (9:16 unless you choose another), and so are pairs running together and groups, with the race number read off each runner.

bun runner-crops.ts <connection> <remote-path> <work-dir> --out <folder>
Download runner-crops.ts

Sign this machine in to Google Drive

Everyone

Once per machine. Deliveries to Google Drive then renew their own access, instead of stopping an hour into a job.

bun drive-login.ts
Download drive-login.ts

See what the app is doing

Everyone

Prints every event the app sends as it happens: a picture rated, a folder opened, a delivery done. Where to start when writing a script of your own.

bun event-watcher.ts
Download event-watcher.ts

Let Claude watch a delivery

PressEvents

Prints one line per batch of finished pictures from a running workflow (what each step did, what went out), and a line for each error, start, stop and pause. Run it under Claude Code's Monitor, and the session looks at each batch and holds back or redoes a picture that is wrong.

bun follow-workflow.ts --batch-seconds 60
Download follow-workflow.ts

Slideshow from the keyboard

Everyone

Starts and stops the slideshow, steps through it, and rates and flags the picture on screen, one key at a time from a terminal: for showing pictures to a client while you sort them.

bun slideshow-controller.ts
Download slideshow-controller.ts

Workflows in the app

These come with the app (Settings → Workflows → From Template…). A workflow someone sends you as a file goes in with Import… on the same page.

Sport / Newspaper

Press

Ingest, extract JPEG, auto-crop 3:2, export JPEG 85%

Ingest → Use JPEG → Auto-Crop → Export

Portrait Editorial

Editorial

Ingest, denoise RAW, extract JPEG, auto-crop 4:5, export JPEG 92%

Ingest → Denoise → Use JPEG → Auto-Crop → Export

Quick Cull & Export

General

Ingest, extract JPEG, resize 2048px, export JPEG 80%

Ingest → Use JPEG → Resize → Export

Tether + Denoise

Studio

Camera tether, denoise all, extract JPEG, export JPEG 95%

Camera Tether → Denoise → Use JPEG → Export

RAW / DNG Process

Post-production

Ingest, find DNG, use RAW, auto-crop 3:2, export PNG

Ingest → Find DNG → Use Raw → Auto-Crop → Export

Football: FTP → Google Drive

Sport

Watch an FTP folder, auto-crop 16:9 on the player, deliver HD JPEG to Google Drive

Ingest → Use Raw → Auto-Crop → Resize → Export

Live event: FTP → DxO → album

Sport

Watch an FTP folder, denoise with DxO, develop each picture with Auto, crop 3:2 (2:3 upright) to the subject the camera focused on and level it, add to an album published to eventphotos

Ingest → Denoise → Develop → Auto-Crop → Add to Album

Live event: FTP → DxO → Claude approves → album

Sport

The live event, with Claude looking at each picture before it goes into the album: one it fails is held back with its reason, or run again with the crop Claude proposes

Ingest → Denoise → Develop → Auto-Crop → Approve → Add to Album

Newspaper: whole event, HD with names

Press

Run on an event's folder of photographers: identify, resize 1920px, deliver JPEG 88% with names, captions and a .txt, split into with-numbers and without-numbers

Identify → Resize → Export

Relay: whole event, 4K with numbers

Press

Run on an event's folder of photographers: identify, resize 3840px, deliver JPEG 88% with the numbers as keywords, split into with-numbers and without-numbers

Identify → Resize → Export

Event FTP Delivery

Press

Ingest, extract JPEG, resize 3000px, auto-crop 16:9, export JPEG 88%

Ingest → Use JPEG → Auto-Crop → Resize → Export

Shared by photographers

Nothing shared yet.

Share yours

A script you wrote, or a workflow saved with Settings → Workflows → Export… (it holds no password or key). It is read before it is published here.

Sign in to share