Agent skill

Render Offer Ad

by gooseworks-ai in gooseworks-ai/goose-skills

Render a punchy ~12s vertical (9:16) music-only direct-response OFFER ad as a 4-beat kinetic-typography film — HEADLINE slam → real PRODUCT drop → CLAIM/proof → CTA pill — from one config of copy…

MITAuto-check passedMedia & Creative

Install Render Offer Ad

skills CLI
$ npx skills add gooseworks-ai/goose-skills --skill render-offer-ad -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install gooseworks-ai/goose-skills render-offer-ad --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/gooseworks-ai/goose-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/ads/capabilities/render-offer-ad .claude/skills/render-offer-ad && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
render-offer-ad
GitHub stars
1.2k
Token cost
~2.5k tokens
SKILL.md length
1,078 words
Files
22 (incl. scripts)
Skills in repo
273
Repo updated
First seen
Licence
MIT

At a glance

Render a punchy ~12s vertical (9:16) music-only direct-response OFFER ad as a 4-beat kinetic-typography film — HEADLINE slam → real PRODUCT drop → CLAIM/proof → CTA pill — from one config of copy…

  • Works in 4 steps: HEADLINE — primary-color radial ground;… → PRODUCT — light radial ground; the REAL… → CLAIM — light radial ground; the… → …
  • The motion-graphics-offer-ad format
  • SKILL.md covers Choices, The 4 beats (the spine), Two gating checks (run before… and Run, plus 4 more sections
  • Runs TypeScript scripts from its folder; calls npm, python3 and npx

What it does

Render Offer Ad is an agent skill from gooseworks-ai/goose-skills. Render a punchy ~12s vertical (9:16) music-only direct-response OFFER ad as a 4-beat kinetic-typography film — HEADLINE slam → real PRODUCT drop → CLAIM/proof → CTA pill — from one config of copy slots, a real product photo, a brand palette, fonts, bpm, and beat split. DETERMINISTIC + FREE (a bundled Remotion project; springs + interpolate, no AI-gen for visuals). Backgrounds are engine gradient divs off the palette, props are inline SVG, the ONLY composited bitmap is the REAL product photo (objectFit:contain…

Its SKILL.md is about 2.5k tokens, which your agent loads only when the skill is triggered. The skill folder holds 26 other files, including scripts (for example `project/package.json`, `project/remotion.config.ts` and `project/src/fonts.ts`).

It sits in Media & Creative, covering Video production, Motion graphics and Logo and visual identity. It works with Remotion and FFmpeg. The repository describes itself as: Library of Growth & GTM skills + data APIs for Claude Code, Codex, Cursor to run ads, social, content, lead gen, seo and data scraping. The licence is MIT.

When your agent uses it

  • The motion-graphics-offer-ad format
  • Tasks that involve Video production
  • Tasks that involve Motion graphics

Example prompts

  • “/render-offer-ad”

Requirements

  • Python 3
  • Node.js

Workflow steps

4 steps, taken from the first numbered list in SKILL.md.

  1. HEADLINE — primary-color radial ground; headline_words slam in WORD-BY-WORD
  2. PRODUCT — light radial ground; the REAL product photo drops in (dropIn) and
  3. CLAIM — light radial ground; the mechanism_prop slides in from a frame edge
  4. CTA — primary-color radial ground; the wordmark slams (slamIn); the CTA pill

What it can do on your machine

Read from SKILL.md and the folder at commit c650c6d. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Ships 1 file in scripts/ (TypeScript, from the files we listed), which the agent can run.

    Shell commands in SKILL.md call:

    • npm
    • python3
    • npx

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md. Its commands use npm and npx, which can reach the network depending on how they are called.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Render Offer Ad loads about 2.5k tokens when it runs. Until then it costs about 245 tokens; SKILL.md has 1,078 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~245
When it runs · the whole SKILL.md, loaded when a task matches
~2.5k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.

SKILL.md

The full file from gooseworks-ai/goose-skills at commit c650c6d, republished under its MIT licence (© gooseworks-ai). 1,078 words, ~2,484 tokens.

Download SKILL.mdSave it as .claude/skills/render-offer-ad/SKILL.md (or your agent's skills folder). This skill also uses 21 other files; get the full folder from GitHub.
name
render-offer-ad
description
Render a punchy ~12s vertical (9:16) music-only direct-response OFFER ad as a 4-beat kinetic-typography film — HEADLINE slam → real PRODUCT drop → CLAIM/proof → CTA pill — from one config of copy slots, a real product photo, a brand palette, fonts, bpm, and beat split. DETERMINISTIC + FREE (a bundled Remotion project; springs + interpolate, no AI-gen for visuals). Backgrounds are engine gradient divs off the palette, props are inline SVG, the ONLY composited bitmap is the REAL product photo (objectFit:contain, never stretched), and ALL headline/claim/CTA/URL/wordmark text is typeset in the engine — never AI-rendered (the format's credibility guard). A driver binds the config to Remotion input props, renders the 9:16 master, and derives a 1:1 center-crop with ffmpeg. Two gating checks run before render (claim verbs must match the product's physical format; the claim beat needs an edge-entry mechanism prop). Use for the motion-graphics-offer-ad format.
status
active

render-offer-ad

The free, deterministic renderer for the motion-graphics-offer-ad format — the punchy ~12s vertical, music-only, direct-response offer ad built as a 4-beat kinetic -typography film: a HEADLINE slams in word-by-word → the real PRODUCT drops in → the CLAIM/proof lands → a CTA pill resolves. No character, no VO, no captions — the on-screen typeset text IS the message.

This is a bundled Remotion project (project/) driven by a thin Python driver. The shipping master is 100% engine-rendered (springs + interpolate): backgrounds are gradient divs off the brand_palette, props are inline SVG, and the ONLY composited bitmap is the REAL product photo (objectFit:contain, never stretched). ALL headline/claim/CTA/URL/wordmark text is typeset in the engine — never AI-rendered; that is the format's credibility guard. Render cost is ~$0; the only paid step is an optional music bed, gated upstream in the recipe to create-music-elevenlabs.

The whole ad is data: copy strings, product photo, palette, fonts, bpm, and beat split all arrive as config.json and are bound to Remotion input props — nothing is hardcoded in the scenes (the source run's Spoiled Child strings are generalised into project/src/props.ts). Deterministic → iterate the cut for free.

Choices

The creative calls are the user's, asked by the format recipe before any paid step; this renderer typesets whatever the config holds.

  • headline_angle — category-killer ("[old way] IS DEAD. the new way ↓"), a straight offer, a bold benefit, a pain-point question, or a before → after → copy.headline_words, copy.subline, copy.motif_chip. The demo used the category-killer angle.
  • music — the bed's mood (lo-fi pop, electronic, hip-hop, indie pop, minimal percussion) → music.prompt for create-music-elevenlabs; the rendered music.bed file is what this renderer mixes. The demo used punchy lo-fi pop at 115 BPM.

The 4-beat structure, palette roles, fonts and gates are the format; palette, product photo, claims and CTA are brand facts.

The 4 beats (the spine)

  1. HEADLINE — primary-color radial ground; headline_words slam in WORD-BY-WORD (slamIn, ~7-frame stagger, scale-overshoot + motion-blur smear, settling on the downbeat); subline + an animated bobbing down-arrow drop in.
  2. PRODUCT — light radial ground; the REAL product photo drops in (dropIn) and idle-bobs (bob), objectFit:contain (never stretch); the motif_chip pops in (popIn); optional GENERIC competitor shape + strike-through (wipe) — never a named competitor.
  3. CLAIM — light radial ground; the mechanism_prop slides in from a frame edge (flyIn overshoot, ~20% from the bottom) to add motion AND show the mechanism; the 3-line claim drops in staggered; product held bottom-right.
  4. CTA — primary-color radial ground; the wordmark slams (slamIn); the CTA pill pops in as the motif-chip handoff resolving (popIn) with an arrow nudge; the cta_url fades up.

Scene boundaries are derived from beat_split_sec (default [3.0, 3.5, 3.0, 2.5]s → cuts at frames 0/90/195/285/360 @30fps) so the hard cuts land on the beat downbeats. The motion kit — slamIn / dropIn / bob / flyIn / popIn / wipe — lives in project/src/lib/anim.ts and is kept intact from the source run.

Two gating checks (run before any render — from the recipe)

  • (a) CLAIM-MATCHES-FORMAT — the claim/proof verbs MUST match the product's physical format: liquid → spoon / sip / drink / 0 mess; powder → scoop / mix / no clumps; capsule → 1 a day; gummy → chew. render.py rejects foreign-format vocabulary (e.g. a liquid product must not borrow powder grammar like scoop / no clumps). Set product_format in the config to arm this gate.
  • (b) CLAIM-BEAT MECHANISM PROP — the claim beat must include an edge-entry mechanism_prop (spoon for drinkable liquids, or accent for a neutral edge-entry accent bar) that supplies motion AND shows the mechanism. A text-only claim beat is too static — render.py rejects an unsupported/missing prop.

Run

bash
# 1) install the bundled Remotion project's deps (one-time; render.py auto-runs
#    this if node_modules is absent).
cd project && npm install && cd ..

# 2) bind config → Remotion input props, render the 9:16 master, derive the 1:1 crop.
python3 scripts/render.py \
  --config path/to/config.json \
  --work-dir <work> \
  --out <work>/master
# → <work>/master-9x16.mp4  (1080x1920)  and  <work>/master-1x1.mp4  (1080x1080 crop)

render.py copies the config's product_hero_image (+ optional music.bed) into project/public/, maps every config key onto the OfferAdProps shape props.ts reads, writes the input props to <work>/props.json, runs npx remotion render offer-ad --props <work>/props.json, then center-crops the 9:16 master to 1:1 with ffmpeg (no 2nd composition). NO hardcoded /Users or clients paths — every asset arrives via the config and a runtime --work-dir.

Show full SKILL.md (448 more words)Show less

Scripts

  • scripts/render.py — the driver: gating checks → stage assets into project/public/ → bind config to Remotion input props → npx remotion render (9:16) → ffmpeg 1:1 center-crop.
  • scripts/config.example.json — the shape of the config the recipe binds (brand-neutral worked defaults from the source run; replace every /abs/... placeholder).
  • project/ — the bundled Remotion project. src/props.ts (the input-props schema + beat-layout math + safe defaults), src/lib/anim.ts (the slamIn/dropIn/bob/flyIn/ popIn/wipe motion kit — kept intact), src/scenes/Scene01–04.tsx (the four beats, all copy/palette/fonts from props), src/Main.tsx (the beat spine + audio bed), src/Root.tsx (the offer-ad composition; duration derived from beat_split_sec).

Config → props mapping (what binds to what)

config keyRemotion prop (props.ts)scene that reads it
product_hero_imageproduct_image (staged to public/)Scene02 (drop), Scene03 (anchor)
brand_palette{primary_ground,light_ground,ink,highlight_chip} (dict OR ≥4-hex list)paletteall 4 (grounds/type/chip)
fonts{display,body}fonts (resolved in fonts.ts)all 4
copy.headline_words[] / copy.sublinecopy.headline_words / copy.sublineScene01
copy.motif_chipcopy.motif_chipScene02
copy.claim_lines[]{big,small}copy.claim_linesScene03
copy.cta_label / copy.cta_url / copy.wordmarksameScene04
mechanism_prop (spoon|accent)mechanism_propScene03 (inline-SVG prop)
bpmbpmbeat grid
beat_split_sec [4]beat_split_secderives cut frames + total duration
music.bed / music.fade_out_framesmusic.src (staged) / music.fade_out_framesMain audio bed
show_competitor_strikeshow_competitor_strikeScene02
aspects(driver)9:16 always; 1:1 = ffmpeg crop

Craft rules (load-bearing — faithful to the source run)

  • The composited bitmap is the REAL product photo — never an AI packshot. Clean / transparent bg; objectFit:contain, never stretched.
  • Never AI-render text. Headline, claim, CTA, URL, wordmark — all typeset in the engine. AI never draws a letter in this format.
  • Never Ken-Burns/zoompan over stills — the engine springs carry the motion; a static/zoompan cut was rejected as "too static" on the source run.
  • Music-only, beat-locked — the cuts + big slams land on the 0.0/3.0/6.5/9.5s downbeats; the bed volume ramps to 0 over the last music.fade_out_frames inside the render. No VO, no captions.
  • Never name/jab a competitor — any comparison shape on the product beat is a GENERIC silhouette (show_competitor_strike), not a named brand.
  • The two gating checks are non-optional — a liquid product must not borrow powder grammar; the claim beat must have real prop motion, not a static text stack.

Requires

  • Node.js (≥18) + Remotion (@remotion/cli ≥4.0, installed via the bundled project/package.json — render.py runs npm install in project/ on first use). This capability legitimately needs a node runtime — the renderer IS a Remotion project.
  • ffmpeg on PATH (for the 1:1 center-crop).
  • watch (QC the final master — confirm the headline slams WORD-BY-WORD on the beat, the real product photo drops in + idle-bobs and is NOT stretched, the mechanism prop enters from a frame edge on the claim beat, the claim lines drop in staggered, the CTA label + URL are readable at 1080×1920, the hard cuts land on the downbeats, and the music ramps out; re-confirm both gating checks visually). The recipe gates the only optional paid step (music bed → create-music-elevenlabs) — this capability itself makes NO paid calls.

© gooseworks-ai, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 21 other files (scripts) in skills/ads/capabilities/render-offer-ad of gooseworks-ai/goose-skills.

  • SKILL.md
  • project/.gitignore
  • project/package.json
  • project/public/.gitkeep
  • project/remotion.config.ts
  • project/src/Main.tsx
  • project/src/Root.tsx
  • project/src/fonts.ts
  • project/src/index.ts
  • project/src/lib/anim.ts
  • project/src/props.ts
  • project/src/scenes/Scene01.tsx
  • project/src/scenes/Scene02.tsx
  • project/src/scenes/Scene03.tsx
  • project/src/scenes/Scene04.tsx
  • project/tsconfig.json
  • … and 6 more

Open the folder on GitHubat commit c650c6d

Compare with similar skills

Render Offer Ad next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Render Offer Ad compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Render Offer Ad this skillgooseworks-ai/goose-skills1.2k—~2.5kAutomated safety check: PassMIT
HyperFrames Video Entry Pointheygen-com/hyperframes60k3 repos~5.2kAutomated safety check: PassApache-2.0
Black White Text OpenerPluviobyte/video-production-skills671—~1kAutomated safety check: PassNone
Super Video MakerBomx/super-video-maker-skill310—~11kAutomated safety check: NotesNone
Background Musicnotivn/AIEV127—~1.1kAutomated safety check: PassMIT
Vid Sizzle ReelVarnan-Tech/opendirectory674—~3.9kAutomated safety check: PassMIT

Similar skills

  • HyperFrames Video Entry Point

    heygen-com/hyperframes

    Entry point for making, editing and rendering videos from HTML compositions with HyperFrames, routing each request to the right workflow.

    60k GitHub starsUsed in 3 repos~5.2k tokens
    Media & CreativeAuto-check passed
  • Black White Text Opener

    Pluviobyte/video-production-skills

    Create reusable black-background white-text opening animations for new videos.

    671 GitHub stars~1k tokensUpdated 2 mo ago
    Media & CreativeAuto-check passed
  • Super Video Maker

    Bomx/super-video-maker-skill

    End-to-end AI video production skill for agentic frameworks.

    310 GitHub stars~11k tokensUpdated 2 mo ago
    Media & CreativeAuto-check: notes
  • Background Music

    notivn/AIEV

    Pick background music from the assets/music/ library and configure auto-ducking (music dips automatically under speech) via meta.json audio.music for the Remotion assembly layer.

    127 GitHub stars~1.1k tokensUpdated yesterday
    Media & CreativeAuto-check passed
  • Vid Sizzle Reel

    Varnan-Tech/opendirectory

    Generates a high-energy sizzle reel or hype video (MP4) from brand assets and key messages.

    674 GitHub stars~3.9k tokensUpdated 1 mo ago
    Media & CreativeAuto-check passed
  • Adds Remotion-style video transitions and Framer Motion page animations to PPT-based videos and HTML slide viewers, planning the animation sequence first.

    7.8k GitHub stars~1.9k tokensUpdated yesterday
    Media & CreativeAuto-check: notes

More from gooseworks-ai/goose-skills

All 273 skills in this repo
  • Reddit Post Finder

    gooseworks-ai/goose-skills

    Scrape and search Reddit posts using Apify. An agent skill from gooseworks-ai/goose-skills.

    1.2k GitHub starsUsed in 1 repo~1.2k tokens
    Auto-check passed
  • Create Image Fal

    gooseworks-ai/goose-skills

    Generate or edit an image via any FAL image model (nano-banana edit, gpt-image, flux, ...), ROUTED THROUGH THE fal-proxy so it bills the Ads agent.

    1.2k GitHub stars~1.3k tokensUpdated today
    Auto-check passed
  • Render Hook Replacement

    gooseworks-ai/goose-skills

    Replace an existing video's opening with a supplied clip or free kinetic text hook while retaining and verifying every original body frame, audio, captions and ending.

    1.2k GitHub stars~2.3k tokensUpdated today
    Auto-check passed
  • Blog Feed Monitor

    gooseworks-ai/goose-skills

    Scrape blog posts via RSS feeds (free, no API key) with Apify fallback for JS-heavy sites.

    1.2k GitHub starsUsed in 1 repo~578 tokens
    Auto-check passed
  • Competitor Post Engagers

    gooseworks-ai/goose-skills

    Find leads by scraping engagers from a competitor's top LinkedIn posts.

    1.2k GitHub starsUsed in 1 repo~1.8k tokens
    Auto-check: notes
  • Render Chatgpt Chat

    gooseworks-ai/goose-skills

    Assemble a ChatGPT chat-reveal video ad from a thread + timeline JSON — one continuous Playwright recording of a ChatGPT mobile chat (user types with the iOS keyboard up → taps send → keyboard…

    1.2k GitHub stars~2.3k tokensUpdated today
    Auto-check passed

Works with

Questions about Render Offer Ad

What does Render Offer Ad do?

Render a punchy ~12s vertical (9:16) music-only direct-response OFFER ad as a 4-beat kinetic-typography film — HEADLINE slam → real PRODUCT drop → CLAIM/proof → CTA pill — from one config of copy…. Render Offer Ad is an agent skill from gooseworks-ai/goose-skills. Render a punchy ~12s vertical (9:16) music-only direct-response OFFER ad as a 4-beat kinetic-typography film — HEADLINE slam → real PRODUCT drop → CLAIM/proof → CTA pill — from one config of copy slots, a real product photo, a brand palette, fonts, bpm, and beat split.

When should I use Render Offer Ad?

Render Offer Ad fits situations like: the motion-graphics-offer-ad format; tasks that involve Video production; tasks that involve Motion graphics.

How do I install Render Offer Ad in Claude Code?

Run `npx skills add gooseworks-ai/goose-skills --skill render-offer-ad -a claude-code`. Or copy the skill folder (skills/ads/capabilities/render-offer-ad in gooseworks-ai/goose-skills) into .claude/skills/render-offer-ad in your project. Claude Code loads it when a task matches its description.

How do I install Render Offer Ad in Codex?

Run `npx skills add gooseworks-ai/goose-skills --skill render-offer-ad -a codex`. Or copy the skill folder (skills/ads/capabilities/render-offer-ad in gooseworks-ai/goose-skills) into .agents/skills/render-offer-ad in your project. Codex loads it when a task matches its description.

Can I use Render Offer Ad in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add gooseworks-ai/goose-skills --skill render-offer-ad -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/render-offer-ad, .gemini/skills/render-offer-ad, .github/skills/render-offer-ad and .opencode/skills/render-offer-ad in your project.

What does Render Offer Ad need to run?

Going by SKILL.md and its folder, Render Offer Ad needs TypeScript for the scripts in its folder and the command-line tools its instructions call (npm, python3 and npx). Our summary lists: Python 3; Node.js.

Does Render Offer Ad access the network?

SKILL.md contains no URLs. Its commands use npm and npx, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is Render Offer Ad safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.

What licence does Render Offer Ad use?

Render Offer Ad is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Render Offer Ad use?

About 2.5k tokens (SKILL.md is roughly 9.9k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Render Offer Ad?

Skills that share tags, products or a category with Render Offer Ad: HyperFrames Video Entry Point (heygen-com/hyperframes, 60k stars), Black White Text Opener (Pluviobyte/video-production-skills, 671 stars), Super Video Maker (Bomx/super-video-maker-skill, 310 stars) and Background Music (notivn/AIEV, 127 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Render Offer Ad?

gooseworks-ai (a GitHub organization) maintains it in gooseworks-ai/goose-skills, which has 1,240 GitHub stars. The repository holds 273 skills in this directory. The repository was last updated on October 8, 2026.

Source: gooseworks-ai/goose-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.