← Case Studies
Ae

After Effects · ExtendScript · UI Panel

2025 · 7 min read

Built while employed at Kwalee

Lazy Rename Engine™

A one-panel After Effects script that turns naming hundreds of game-ad comps into a fill-four-fields-and-go ritual — with per-row Copy and Replace controls.

Built while employed at Kwalee as a motion designer, to help the team's workflow.

View on GitHub → Try the panel ↓

6+

Hours saved / week

9

Fields to fill

0

Naming errors

v1 → v5

Script versions

01

/ The problem

Naming game ads is its own full-time job.

Mobile game ad creatives live and die by their filenames. When comps get saved as final.mp4, final_v2.mp4, FINAL_real.mp4, ultra_final_USE_THIS.mp4, two things break at once. Meta's algorithm starts treating near-duplicate creatives as the same asset — impressions and clicks pile onto whichever variant the system picked first, and the rest of the batch silently dies. Worse, when a creative actually performs and you want to iterate on it, there is no way to trace the file back to the artist, the campaign, or the source project. You're left scrolling a Finder full of auto-save 47.mp4 trying to guess which one shipped.

📁 Project — without Lazy Rename Engine

NameKind

Real Finder, real chaos. Every final_v2_REAL.mp4 is a creative no one can trace back to its artist, campaign, or source.

The pain wasn't the convention itself — it was applying it. I'd sit inside After Effects double-clicking comp names one by one, retyping the same six-segment string twenty times, fat-fingering an underscore, and then re-rendering because the queue exported a typo. Multiply that by a busy week and the naming step alone was eating half a day.

02

/ The insight

The names follow a formula. Formulas are scripts.

Every name I was typing by hand was just structured fields glued together with underscores: a game code, an incrementing serial number, an artist initial, a project sub-name + concept colorway, the motion + level, and an aspect-ratio suffix. If a human could produce the string by reading those fields, an ExtendScript could produce it faster — and never typo. Render the file as MI_520_MK_Stargazer-Red_Motion-Lv2_1080x1920_30s and suddenly every downstream system — Meta, the render sheet, the artist lookup — knows exactly what it's looking at.

/ Anatomy of a name

MI_ 520_ MK_ Stargazer-Red_ Motion-Lv2_ 1080x1920_30s
Game Serial # Artist Sub-Concept Motion-Level Suffix

03

/ The build

One panel. Nine fields. Per-row Copy and Replace.

I wrote Lazy Rename Engine™ as a single ExtendScript file that opens a ScriptUI panel inside After Effects. You fill the fields once, hit Generate Names, and the panel lists every output line with its own Copy and Replace button — copy to paste into a render sheet, or replace to rewrite the corresponding CompItem in place.

The smart bit is the serial range: the panel reads a start and an end serial number and grows the Concept inputs to match the count. Set 520 → 523 and you get four concept slots; bump the end to 527 and four more appear without re-opening the panel.

  • Dynamic concept slots. endSerial − startSerial + 1 drives how many Concept fields render. No fixed cap.

  • Suffix presets + custom override. vert30, vert15, square, FB 1080×1350, landscape — or type your own resolution-duration string.

  • Per-row Copy. Each generated name has its own Copy button, so a single row can feed a single render entry without touching the others.

  • Per-row Replace. Replace walks the project, finds the matching CompItem (by index or selection) and rewrites .name in place — wrapped in an undo group, so one Cmd+Z reverts the whole batch.

/ Try it · live

The actual panel, rebuilt in your browser.

Edit any field. The output list and concept slots update live. Hit Copy on any row to grab a single name; the big button copies all of them at once.

Lazy Rename Engine™

Concepts (4)

Generated names · 4

Live demo — try it. The real ScriptUI panel runs inside After Effects with Replace wired straight into the active project's CompItems.

04

/ The output

One name per serial, ready to render.

Once names are generated, the workflow forks. Most days I hit Replace on each row so the comps themselves get renamed — then the After Effects render queue (or Adobe Media Encoder) inherits the new names automatically, and the MP4s land on disk already matching the convention. No filesystem rename pass. No spreadsheet reconciliation.

📁 Project — with Lazy Rename Engine™

Clean
NameKind

Same folder, after one click. RB_520 → RB_531 — every name traceable to game, serial, artist, concept, motion level, and aspect ratio.

Renamed comps AE Render Queue Adobe Media Encoder MP4s named correctly

Render with either tool — the filename comes from the comp.

05

/ The outcome

Boring work, automated. Boring work, done.

The first time I ran v5 on a real campaign, fifty-two comps got renamed in under a second. The rest of the afternoon I spent on actual motion design instead of shepherding underscores. That's the whole pitch.

The script is open source — pull it, fork the field layout to match your studio's convention, and stop typing the same string twenty times.

/ Grab the script

Lazy Rename Engine™

Drop the .jsx into your After Effects ScriptUI Panels folder, dock the panel, and let the four-field-plus-concepts ritual do the rest.