Download CV

Automation case / October 2026

Automation case: about 83 hours by hand, or a library the team can search

A PNG file converts to AVIF. A progress bar runs from 0% to 100%.
83h
By hand, for the set
1 min
A frame, once the file is open
5,000+
Frames in the library
1 file
Or the whole archive

Timeline

October 2026, updated more than once

Tools

  • Figma
  • Node
  • Sharp

What I kept

  • Batch export
  • Skip what is already done
  • Search in the browser

What this is

An internal library. One archive, or one frame.

Overview

The frames already lived in Figma, at 165 by 210. The file the team needed was twice that, 330 by 420, and it had to be AVIF. PNG was only the step in the middle.

I did not time a full day of it. I wrote down the steps once the file is already open: export at 2×, convert to AVIF, name the file, upload it. About a minute. For 5,000 frames that is 5,000 minutes, about 83 hours. The set has been updated more than once, so doing that by hand again would be another 83 hours.

Three passes, then it can run again

A script takes a page and exports every frame at 2×. The next pass turns those PNGs into AVIF at quality 60, eight files at a time. If the AVIF is already there, it stays. The last pass uploads only the files that are not in the library yet.

When the Figma file changes, the same three passes run again. The first run is the long one. After that, only the new and changed frames move, so an update is not another 83 hours.

Export

One page at a time, at 2×. The PNG is the handoff, not the file anyone keeps.

Convert

AVIF at quality 60. Eight files at once. A file that is already converted is left alone, so a second run does not start over.

A library for the team

A count in September was 4,967 files, about 66 MB. The library has been updated since, so the number I use is 5,000+. A typical file from that count is about 14 KB.

It is an internal library, for the people who need the files. Search by name. The list filters in the browser, so the keystrokes do not go to a server. Download the one frame you need, or take the whole set as one archive.

What stayed manual

A page still needs a look before it goes through. A frame that is not the right size stays out. A name that would collide with one already in the library stays out. The script does not invent a name.

Reflection

The useful part was that it could run again. Checking the size, and deciding that a colliding name stays out, is still a person's job. Converting the same frame twice is not.

What I’d repeat

Export a page, convert what is new, upload what is missing. Keep the search on the catalog, in the browser.

What I wouldn’t hand over

Renaming a frame so it fits an existing file. If the name is already taken, that is a different frame, and it waits.