Communitygithub.com

Raibit-AI/social-ad-builder

Assembles finished vertical social video ads from clips plus a simple JSON shot list. It outputs a 9:16 master for Reels, Stories and TikTok plus a 4:5 feed cut, with brand-color dish labels, the brand on frame 0, hard cuts, a matched color grade, clean designed sound, safe loudness and an end card. It uses free ffmpeg only. Use when the user wants to edit, cut, assemble or render a short ad, Reel or TikTok from food or product clips, or make several ad variations to A/B test.

What is social-ad-builder?

social-ad-builder is a Claude Code agent skill that assembles finished vertical social video ads from clips plus a simple JSON shot list. It outputs a 9:16 master for Reels, Stories and TikTok plus a 4:5 feed cut, with brand-color dish labels, the brand on frame 0, hard cuts, a matched color grade, clean designed sound, safe loudness and an end card. It uses free ffmpeg only. Use when the user wants to edit, cut, assemble or render a short ad, Reel or TikTok from food or product clips, or make several ad variations to A/B test.

Works with~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/Raibit-AI/food-ad-kit/tree/HEAD/plugins/food-ad-kit/skills/social-ad-builder

Ask in your favorite AI

Open a new chat with this agent skill pre-loaded.

Documentation

Social ad builder

scripts/build_ad.py turns a shot list into two finished files. It needs only ffmpeg and ffprobe (free). Every default was earned in a scored iteration loop and blind A/B reviews:

  • Hard cuts. Fades flash black at every cut.
  • Dish labels on a solid pill in the brand color. Thin text over busy food is unreadable.
  • The brand line on frame 0. Most people watch muted.
  • A 4% zoom punch as each food shot lands.
  • Light sharpening plus one warm grade, so AI clips and phone footage look like one camera.
  • No audio taken from the clips, because AI video models add their own music. Sound is real room ambience if you have it, plus a soft sizzle under food.
  • Loudness at -14 LUFS with a limiter, so the true peak stays under 0 dB and nothing distorts on phone speakers.
  • Text inside the 4:5 safe area (y about 390 on 1920), so one master crops cleanly to the feed.

Shot list

{
 "out": "out/my-ad",
 "brand_color": "#A3192B",
 "brand_line": "Your Restaurant · Your Town",
 "ambience": "room-recording.mov",
 "shots": [
  {"file": "clips/noodle-lift.mp4", "start": 3.0, "dur": 2.0, "label": "Dan Dan Noodles"},
  {"file": "clips/mapo.mp4", "start": 0.8, "dur": 1.5, "label": "Mapo Tofu"},
  {"file": "clips/mapo-scoop.mp4", "start": 3.3, "dur": 1.5},
  {"file": "clips/dining-room.mp4", "start": 0, "dur": 1.0, "label": "Your Restaurant", "subline": "Your Town", "food": false}
 ],
 "endcard": {"bg": "#F3ECE0", "logo": "logo.png", "dur": 2.0,
  "lines": [{"text": "Your Town", "size": 58, "color": "#8B1E1E"},
            {"text": "Order pickup or reserve a table", "size": 56},
            {"text": "yoursite.com", "size": 84, "color": "#8B1E1E", "bold": true}]}
}

Run python3 scripts/build_ad.py shotlist.json. It writes out/my-ad-9x16.mp4 and out/my-ad-4x5.mp4.

Shot fields:

  • start and dur are in seconds inside the clip.
  • "food": false turns off the zoom punch and sizzle (for room shots).
  • "keep_label": true carries a label across two shots without re-animating it.
  • "subline" adds a smaller line under the label.
  • "label_size" sets the label size (default 78 px). Put \n in a label for two lines. Labels and end-card lines shrink automatically to fit the frame width.
  • Text can contain quotes, colons, commas and %. Emoji will not render in the label fonts, so leave them out.
  • If a clip is shorter than the requested dur, the builder uses what exists and prints a note. Check those notes: a hook that ends early freezes on its last frame.

Pacing rules from winning ads (see the ad-teardown benchmarks)

  • Length: a wordless food montage wins at 12-20 s. Talking or story ads run longer.
  • Shot length: a cut about every 1.8 s, with the first cut by about 2 s. Shot lengths on a 0.5 s grid let any 120 BPM music track land on the cuts.
  • Order: open on motion with a hand in frame. Run the food unbroken. Keep any empty-room shot to about 1 s, near the end.
  • Ending: the best food shot, or a simple card with plain action words.
  • Music: add it in the platform's own licensed library at upload. Don't bake in a song you don't have rights to.

Making A/B variants

Change one thing per variant (the hook shot, the hook line, the length, or the dish set) so the winner explains itself. Copy the shot list, edit one field, build again.

Individual skills in this repo

This repo contains 4 individual skills — each has its own dedicated page.

Raibit-AI/ad-teardown

Breaks a video ad down the way a creative director would. It measures length, cut speed and first cut; pulls frame strips of the first 3 seconds and of the whole ad; transcribes the speech; tags the hook, format, people, text, offer and ending; and scores it against benchmarks from winning food ads. Use when the user asks to analyze, break down, tear down, critique or compare a video ad, Reel or TikTok, especially for a restaurant or food brand.

Raibit-AI/blind-ad-review

Improves a video ad through repeated blind A/B reviews. Two versions are shown as contact sheets to a fresh reviewer who doesn't know which is newer, and both are scored against benchmarks from winning food ads. The next version changes only what reviewers agree on, and the loop continues until the gains stop. Use when the user wants to improve, iterate, critique or A/B test an ad or Reel before spending money, or asks "which version is better".

Raibit-AI/food-shot-director

Directs AI image-to-video food shots for restaurant ads (chopsticks lifting noodles, a spoon scooping, sauce poured, a piece lifted to the lens). It gives the prompt formula, which foods animate well and which morph, and a keep-or-reject checklist so the dish still looks like the real menu item. Works with any image-to-video model (Kling, Veo, Seedance, LTX, Runway). Use when the user wants to animate a food photo, make food B-roll or a hand-in-frame food shot, or turn menu photos into video...

Raibit-AI/winning-ad-finder

Finds video ads that are probably working for restaurants and food brands, using the free Meta Ad Library, and builds a short "swipe file" of likely winners to study. Use when the user asks to find winning ads, research competitors' Facebook or Instagram ads, see what ads restaurants are running, or build ad inspiration for a food business.

Related Skills