Writings

Less friction on video ads

I’ve been testing a lot of things lately, and a lot of it is video ads. 👀 Not one hero film. A run of them. Different subjects, same kind of job, landing one after another.

Making them is not the most pleasant work I do. The idea is usually the easy part. What follows is iterative, and you have to keep the variants in your head the whole time: 9:16, 4:5, 1:1, and the rest of the crops a placement will ask for. You design it once, then you design it again so it still holds when the frame changes. Type reflows. A line that worked in a square gets cut off in a story. The logo finds a new place to sit. You fix it, and the next ratio asks for the same fix. It’s a pain. That’s the short version.

I got tired of that loop, so I decided to make the process a bit less frictional, and to get the ads out clean enough that I don’t have to go back over them every time. ✨ The goal wasn’t to stop looking. It was to stop correcting the same small things on every pass: the graphic style, the wording, the little errors that show up when each ad is built as if the last one never happened.

Brand and marketing

The friction lives between one good ad and the run of ads that follows it. Brand and marketing both have to survive that gap. An ad can look like the brand and still say something the marketing doesn’t mean, or say the right thing in a frame that no longer looks like the others. If I’m going to hand the making to Claude, it has to understand how I build these, from both sides. Not from a single example I remember to attach when the output is already wrong. From the way the work actually is.

That’s the first step. I sent Claude about a hundred ads, in a Figma file, and it systematized them and tokenized them.

A hundred ads is a lot of the same decisions, made over and over. That’s the useful part. The ratios, the type, the way a headline sits, the things I keep fixing by hand: they’re already in the file. Systematizing it means those decisions stop being a speech I give at the start of every brief. Tokenizing it means they stay put, instead of drifting the moment a new format shows up. I did this so I would stop having to constantly provide an example, or the documentation, and then correct the small errors, the graphic style, or the wording. If Claude still needs the system explained on every brief, I haven’t removed the friction. I’ve just moved it into the chat.

Brief, Terminal, MCPs

The setup after that is plain. I run Claude in the Terminal on my Mac. I connected three MCPs: Figma, Jitter, and Magnific. Magnific is in there for generating the video visuals. Figma is where those ads were systematized. Jitter is connected with them. That’s the whole stack.

When a brief comes in, the process is short.

I turn the brief into a markdown file. I send that file into the Terminal. Claude calls the MCPs: Figma, Jitter, and Magnific. The ads get generated.

Brief, markdown, Terminal, MCPs, ads. Nothing more than that, and nothing less. The iterative headaches, the ones where I restate the rule and then check whether it stuck, are what this is there to finish with.

It runs locally, on my MacBook Air M4. ✨ The brief is a file on the machine. The Terminal is where Claude is. The MCPs are what it calls. I’m not sending the work somewhere else and then pulling it back to repair it.

Video posted on X.

What changed

What changed is how much I have to pass over the result. I still have to know what the ad needs to say. A brief that doesn’t know that will not be saved by a file of old ads. What I don’t do on every pass now is rebuild the brand logic and the marketing logic from an example, then chase the small errors through 9:16, 4:5, and 1:1. That chase was the friction. The systematized, tokenized file is what Claude has instead of my corrections.

Still not my favorite

I still don’t enjoy the job of making ads. The formats are still the formats. A brief is still a brief. The process is what feels different. It used to be unpleasant because so much of it was iteration with no new decision in it. That part isn’t the unpleasant part anymore.

Do I still hate making ads? Yes. Is it still unpleasant? No. ✌️