Hey all, happy Friday,

We genuinely had an amazing weekend, but because life is a zero-sum game, every event had a small disaster inside it.

On Saturday morning, we went to the playground on Fifth Avenue in Park Slope. They have an infant playground, one small enough that James can do laps on the slide by himself. He did five clean laps and settled into a rhythm. We got comfortable, as any parents of a 1.5 y/o do. And then, in between laps, he wandered ten feet off and mass-consumed dirt. A full fistful, straight to the mouth. We pulled him off, and he went back to the slide. Moments later, he came back to the dirt. We pulled him off again. Rinse and repeat.

Saturday night, we went to a beer bar with friends. We brought a stack of games to play. We played zero of them, given that James was uncontainable. He went to every table to introduce himself (nonverbally, of course). He made what felt like four genuine friendships in forty minutes. He is at the age where he is, functionally, a small terrorist with excellent social skills.

After that, ice cream. We ran a chocolate-versus-vanilla test on him. He picked chocolate decisively. He gets it. Linus ate the leftover vanilla.

Sunday, we were at a friend's house in Park Slope for the start of the Yankees-Mets game on the porch. They have twins. James and the twins sat in the playpen and stared at us like a jury. We barbecued. James was eating watermelon, we thought. Yum!

It turns out he was eating a rock. We noticed fairly quickly, and he luckily did not swallow it. That makes him two-for-two on putting things in his mouth that aren't food this weekend.

Unrelated, but I had to share this: this morning, a squirrel fell out of a tree and landed on Linus. Direct hit, mid-walk. It bounced off his back, hit the sidewalk, and scurried up the next tree. Linus, who has spent six years chasing squirrels, stood there confused, then looked at me, then looked at the tree, then looked at me again. He could not figure out what had just happened. I could not either. We were both in shock.

The universe owed him one and chose this particular delivery method.

Anyway,

The Pixar ad thing is happening. Scroll TikTok or Twitter for 30 seconds, and you will see four of them. The personified bottle with eyes. The dancing red blood cells. The matte-to-satin animated foods.

They are everywhere.

They convert.

A year ago, making one of these meant hiring a studio, briefing the team, picking up the phone, signing a six-week contract, and waiting. You needed a director, a 3D animator, a voiceover artist, a sound designer, and someone to write the script. Sixty-thousand-dollar budgets were normal. The animated category was for brands that could afford it.

That budget is now twenty dollars. The six weeks are now fifteen minutes. The whole production runs from a laptop with a paste-ready prompt and four files in a folder.

What you need before you start

Four things in one folder. That is the entire input list:

The one most people get wrong is item three. The character note. We will come back to it.

You also need three accounts. They take about five minutes total to set up:

  • Claude Code at $20/month. This is what runs the workflow. (claude.com/claude-code)

  • fal.ai on pay-as-you-go pricing. This is where the image and video models run. Roughly $2 on stills plus $18 on video for a 60-second ad, so call it $20 per ad on fal.

  • ElevenLabs at $22/month on the Creator tier. Transcription, music, and voiceover. The transcription part is what we use for this workflow.

  • My Claude MD file (see below).

Fixed monthly cost: $42 ($20 Claude Code + $22 ElevenLabs). Variable cost: ~$20 per ad on fal. So total spend on the first ad is ~$62, and every ad after that is ~$20.

The secret nobody tells you: don’t write the script

This is the part of the workflow that earns its keep, so I am putting it at the top.

A Pixar ad is roughly twelve scenes. Each scene has a line of narration over it. If you sit down to write twelve lines of narration from scratch (a hook, a problem, a mechanism, a payoff, a CTA) you are going to spend three hours and produce something that converts at 0.6x your live-action ad.

You do not have to do this. If you have a winning ad already, the script is the audio of that ad. Take the voiceover. Transcribe it. Cut it into sentences. Each sentence becomes a scene. The narration plays unchanged on top of the new Pixar visuals. The pacing was already A/B tested by the market. The hook already lands. The CTA already converts. You inherit all of it.

This is the unlock. The rest of the guide is mechanical.

I want to be clear that I figured this out the wrong way. I spent two evenings trying to write a twelve-scene script from scratch for a supplement brand. It was bad. It was the kind of bad you only realize after you watch the finished render with your wife in the kitchen and she looks at you with concern. The next morning I tried it with a winning UGC transcript instead and it was done in fifteen minutes. So.

What the prompt (or MD file) actually does

I want to be explicit about this because it is the whole point. You do not run the seven steps below. The prompt does. It is a paste-ready Claude Code instruction set that hands Claude the entire workflow: read the brand-dna files, transcribe the ad, beat-break it, write the scene prompts, generate the stills, animate them, mix the audio, burn the captions, output an MP4. End to end.

Your job is four things, total: drop your inputs in the folder, paste the prompt, answer roughly five yes/no checkpoints as Claude runs (the master character look, the beat break, the still grid, the final mix), and download the MP4.

You are not building a Pixar ad. You are approving one as it builds itself. The “seven steps” below are what Claude does for you. I’m walking through them so you know what’s happening under the hood when you watch the prompt run, not so you can do them yourself.

The seven steps

Open Claude Code in your input folder. Paste the prompt from the download. The prompt walks Claude through these seven steps. You watch. You approve. You ship.

Step 1. Transcribe the winning ad

Claude extracts the audio from your ad with ffmpeg, sends it to ElevenLabs Scribe, and gets back a JSON file with every word and its exact timestamp.

You do not have to install anything. Claude Code handles it. The transcription takes about ten seconds.

What you get back looks like this. Each word with a precise start/end timestamp:

[0.28-1.90] I woke up so tired today.
[2.58-6.62] Last thing I want to do is put on makeup, but I do know I'm gonna feel better.
[7.62-15.34] Using What The Foundation by Jones Road Beauty, and it gives me, like, a really nice even coverage.

These timestamps become the cut points for every scene later. That is the whole trick.

Step 2. Beat-break the transcript into scenes

Now you turn the transcript into a list of scenes. Claude does this for you and shows you the table before generating anything. You approve it or you redirect.

The rule of thumb:

  • One sentence equals one scene.

  • Sentences under 1.5 seconds get merged into the next sentence.

  • Sentences over 9 seconds get split at a natural pause.

  • Your scene’s clip duration is the sentence’s audio length, rounded up to the nearest whole second.

A 60-second ad usually breaks into 10 to 12 scenes. A 30-second ad usually breaks into 5 to 7.

Step 3. Lock the brand DNA (write it once, reuse forever)

The single biggest reason these batches fail is drift. The protagonist’s face changes between scenes. The product label looks different. The lighting goes from morning to dusk. The fix is to write down the things that must stay constant, not just for this ad but for every ad you ever convert for this brand, and store them as four markdown files in a brand-dna/ folder. The workflow reads those files every time you run it.

The four files:

  • 01-world.md is the setting plus the lighting plus the material rule plus the no-go list. For Jones Road: “warm cream marble bathroom counter, soft warm morning sunlight from a large window, Pixar matte-to-satin shaders throughout, NEVER clinical, NEVER moody.”

  • 02-character.md is your protagonist in detail. Age, ethnicity, hair, wardrobe, demeanor. Plus a path to the master reference still (which gets generated on the first ad and reused after that).

  • 03-products.md has one section per hero SKU, with a description in Pixar terms plus a path to the actual studio reference photo. You add SKUs to this file as ads call for them.

  • 04-voice-music.md is your ElevenLabs voice ID plus a music brief.

Write these four files once per brand. Two minutes per file with the templates. The workflow auto-detects whether they exist. If any file still has [BRACKETED PLACEHOLDERS] it runs an interview to fill them in. The pack download includes a worked Jones Road example so you can see what filled-in DNA looks like end to end.

This is the unlock for batching. Once brand-dna/ is set, the second ad takes 10 minutes instead of 15. The third takes 8. The eighth takes 6. You’re amortizing the brand-locking work across every future ad for that brand.

Step 4. Write a prompt for each scene

For each scene, Claude writes a structured image prompt. The structure looks dense but it is just six fields in order:

  1. Subject. Who or what is on screen.

  2. Action. What is happening.

  3. Setting. Where.

  4. Style. Pixar 3D matte-to-satin.

  5. Composition. Shot type, angle, depth of field.

  6. Resolution. 9:16 vertical, 1088×1920.

You do not write these from scratch. Claude writes them based on the sentence and the locked references. Your job is to read them and say “yes” or “make scene 7 a tighter close-up.”

Step 5. Generate the stills (with character lock)

This is the only step where order matters.

Claude generates the scene with the protagonist’s clearest face shot first. That single PNG becomes the master reference. Claude uploads it to fal storage and gets back a URL.

Then Claude generates the remaining eleven scenes in parallel, passing the master URL as an image reference to every scene that needs the protagonist. The model treats the reference as “this is what she looks like, use this.” Drift drops to near zero.

The first time I ran this without the master reference trick, the protagonist’s face changed in every single scene. She looked like twelve different women having the same morning. The hair was the same length each time and that was where the similarity ended. It read as a body-snatcher ad. Do not do it that way.

Eleven scenes generated in parallel finish in about three minutes. Each one costs about $0.17.

Step 6. Animate the stills via Seedance 2.0

Each still is now the first frame of a short video clip. Claude writes a short motion prompt for each (50 to 70 words, one camera move per clip, never stack moves), then sends all twelve animations to Seedance 2.0 in parallel.

The Seedance duration parameter is the only number that matters here. Set it to your scene’s clip duration (the one you wrote down in Step 2). Seedance supports 4 to 15 seconds.

The first time I ran this I forgot to set the duration parameter and Seedance defaulted to 4 seconds on all twelve clips. The protagonist speed-ran her entire morning routine in 48 seconds like she was late for a flight. The Miracle Balm reveal was 0.6 seconds. Looked deranged. I had to re-run the whole thing.

Twelve clips animated in parallel take about five minutes. Each second costs $0.30 at 720p. For a 60-second ad, this is the most expensive line item, around $18.

Step 7. Mix it all together

The final step. Claude does this entirely in ffmpeg plus two more ElevenLabs calls. There are sub-steps:

7A. Re-render the VO via ElevenLabs (recommended). The original ad’s audio works as the script, but most UGC source VOs were recorded on a phone at podcast cadence, which feels slow on a vertical feed and brings a flatter audio quality than the Pixar visuals deserve. The fix is to re-render the same transcript through an ElevenLabs voice that matches the visual register. For the Jones Road version I tried the “Natasha - Valley girl” voice first, then “Brittney - Social Media Voice,” and Brittney was the right fit for matte-to-satin Pixar shaders. The voice library is at elevenlabs.io/app/voice-library. Save the new VO and re-transcribe it via Scribe to get fresh word-level timestamps for the next step.

7B. Background music. One call to ElevenLabs Music. Prompt it explicitly UPBEAT, BRIGHT, JOYFUL, with a clear BPM. Instrumental, no vocals. Save the file.

7C. Verbatim subtitle PNGs (NOT brand-summary captions). This is the upgrade that makes the ad feel native on TikTok. Take the word-level transcript from Step 7A and chunk it into 3-to-5-word groups, each lasting about 1-to-2 seconds (split at natural punctuation, never break mid-phrase). Generate one transparent PNG per chunk. White fill, big bold font, thick black stroke. You will end up with 30-to-50 PNGs for a 45-second ad, one per spoken phrase. This pattern reads as a TikTok-native subtitle track, not as an advertising overlay.

7D. Re-time each scene to the NEW VO’s sentence boundaries. Your visuals were timed to the original ad’s sentence cadence. The new VO has different sentence cadence. Read the new transcript and trim each Seedance clip to its matching sentence span in the new VO. The visuals re-sync automatically.

7E. Concat. Stitch all twelve re-timed scenes into a single silent MP4.

7F. Overlay all subtitle PNGs at their precise timestamps. Chain ffmpeg overlay filters, one per subtitle chunk, each gated by enable='between(t,start,end)' with the chunk’s word-level start and end. Place the subtitle in the lower-third of the 9:16 frame.

7G. Mix the audio. Layer two tracks: the ElevenLabs VO at full volume, and the instrumental music quiet enough to sit clearly under it. Tune the music level on your first ad. Default quieter than you think.

You now have a finished Pixar ad. Total wall-clock: about fifteen minutes.

Common rookie mistakes

I have run this workflow about a dozen times now. Here is what trips beginners up. I have personally made five of these six mistakes. Character drift (the body-snatcher render). Product drift (rendered the white-lid Miracle Balm jar as a beige-lid Foundation jar in three scenes; my first instinct was to blame the model). Illegible captions (Helvetica Regular at 48pt against a moving background. It might as well have been invisible). Audio sync drift (compounded across all twelve scenes, the VO ended four seconds before the visuals; I shipped it anyway to a Slack channel and a junior engineer asked me if the audio file was corrupted). Phantom text (a free-floating “JONES ROAD” appeared in the upper-right of scene 8 for no reason I could identify). The sixth one, using a bad source ad, I watched a client make on a Loom while I nodded along like I had not done the exact same thing two days earlier.

The two that catch people the most:

Using a bad source ad. If the original ad’s angle is weak, the Pixar version is confidently weak. The model renders whatever script you give it. It cannot diagnose your hook. Run this workflow on an ad you already know converts. Do not use it to “rescue” something that was not landing.

Trying to fix the narrator’s words mid-workflow. This is the trap. You will get halfway through Step 2 and notice that the narrator says “like” eleven times and you will want to clean it up. Don’t. The “like” is part of the angle that won the auction. Keep it. The Pixar render is a new visual world for the same script. Not a script edit.

TLDR

  • Pixar-style ads went from $60k and six weeks to $20 and fifteen minutes.

  • The unlock: your winning ad’s transcript is your script. Don’t write a new one.

  • Seven steps: transcribe, beat-break, lock world / product / character, write image prompts, generate stills, animate, mix. The mix step now includes re-rendering the VO via ElevenLabs and adding verbatim word-level subtitles.

  • Four inputs (winning ad video, product photos, one-sentence character note, .env file with FAL_KEY and ELEVENLABS_API_KEY) and one paste-ready prompt.

  • Tools: Claude Code at $20/mo, ElevenLabs at $22/mo, fal.ai at ~$20 per ad ($2 stills + $18 video). About $42/month fixed plus $20 every time you ship one

Reply if you run this on your own ad. I want to see how the Pixar render reads against the source. Send me both. Send the disasters too. I made the body-snatcher version, the speed-running version, the four-second-out-of-sync version, the phantom-headline version. I want to see what new failure mode you find that I haven't.

Big thanks to Bharath Nagarajan, who wrote a 60-page open-source playbook on AI video ad formats (Pixar, claymation, hyper-real UGC, ASMR, the whole catalog). I built the framework pieces of this workflow on top of his work: prompt structure, the Seedance motion grammar, the character-lock method. He also pushed me to keep going past my first not-great attempt instead of shelving it.

Have a great weekend.

Will

P.S. Linus is still processing the squirrel.

Recommended for you

View all
caret-right