Agent skill

Render Absurdist Explainer

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

Assemble an absurdist animated-explainer video ad (~38s, 9:16) from per-scene i2v clips + their measured VO windows — retime each clip to its VO, re-encode every segment to identical…

MITAuto-check passedMedia & Creative

Install Render Absurdist Explainer

skills CLI
$ npx skills add gooseworks-ai/goose-skills --skill render-absurdist-explainer -a claude-code

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

GitHub CLI
$ gh skill install gooseworks-ai/goose-skills render-absurdist-explainer --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-absurdist-explainer .claude/skills/render-absurdist-explainer && 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-absurdist-explainer
GitHub stars
1.2k
Token cost
~2.4k tokens
SKILL.md length
1,326 words
Files
7 (incl. scripts)
Skills in repo
273
Repo updated
First seen
Licence
MIT

At a glance

Assemble an absurdist animated-explainer video ad (~38s, 9:16) from per-scene i2v clips + their measured VO windows — retime each clip to its VO, re-encode every segment to identical…

  • Works in 7 steps: Per-scene retime. Each i2v clip is… → Identical re-encode. Every segment is… → Concat all scene segments + the end card… → …
  • The absurdist-explainer format
  • SKILL.md covers Choices, What it does (the…, Scripts (free — Python +… and Inputs (all via --config + a…, plus 3 more sections
  • Runs Python scripts from its folder

What it does

Render Absurdist Explainer is an agent skill from gooseworks-ai/goose-skills. Assemble an absurdist animated-explainer video ad (~38s, 9:16) from per-scene i2v clips + their measured VO windows — retime each clip to its VO, re-encode every segment to identical 30fps/libx264/yuv420p so the concat demuxer never drops frames, concat, build a REAL-product PIL end card (never AI) held static, mix VO (loudnorm I=-14) under music (loudnorm I=-26, volume 0.62, amix normalize=0), and burn libass captions last. FREE deterministic assembly (bash-free, Python + ffmpeg + PIL); the recipe supplies the…

Its SKILL.md is about 2.4k tokens, which your agent loads only when the skill is triggered. The skill folder holds 8 other files, including scripts (for example `scripts/build_endcard.py`, `scripts/compose.py` and `scripts/config.example.json`).

It sits in Media & Creative, covering Video production and Motion graphics. It works with FFmpeg, Bash and Python. 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 absurdist-explainer format
  • Tasks that involve Video production
  • Tasks that involve Motion graphics

Example prompts

  • “/render-absurdist-explainer”

Requirements

  • Python 3

Workflow steps

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

  1. Per-scene retime. Each i2v clip is retimed to its measured VO window
  2. Identical re-encode. Every segment is re-encoded `libx264 -crf 18 -pix_fmt yuv420p
  3. Concat all scene segments + the end card via the concat demuxer (-c copy).
  4. Real-product end card. build_endcard.py composites the REAL retail product photo
  5. Mix. VO bus loudnorm I=-14 TP=-1.5, music bus loudnorm I=-26 TP=-3 then
  6. Master pass. The mix is measured, gained to -14 LUFS, limited, encoded to AAC and
  7. Captions last. make_captions.py emits a libass .ass (one cue per scene, Arial 64

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 4 files in scripts/ (Python), which the agent can run.

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

  • Network

    No URLs in SKILL.md.

    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 Absurdist Explainer loads about 2.4k tokens when it runs. Until then it costs about 180 tokens; SKILL.md has 1,326 words of instructions outside code blocks.

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

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,326 words, ~2,417 tokens.

Download SKILL.mdSave it as .claude/skills/render-absurdist-explainer/SKILL.md (or your agent's skills folder). This skill also uses 6 other files; get the full folder from GitHub.
name
render-absurdist-explainer
description
Assemble an absurdist animated-explainer video ad (~38s, 9:16) from per-scene i2v clips + their measured VO windows — retime each clip to its VO, re-encode every segment to identical 30fps/libx264/yuv420p so the concat demuxer never drops frames, concat, build a REAL-product PIL end card (never AI) held static, mix VO (loudnorm I=-14) under music (loudnorm I=-26, volume 0.62, amix normalize=0), and burn libass captions last. FREE deterministic assembly (bash-free, Python + ffmpeg + PIL); the recipe supplies the clips, VO, music, product photo, palette, and caption table and gates the paid keyframe/clip/VO/music calls to their own capabilities. Use for the absurdist-explainer format.
status
active

render-absurdist-explainer

The free, deterministic renderer for the absurdist-explainer video ad format — an animated spot that explains one problem and how the product fixes it. The format is the mechanics: show the problem in a funny, exaggerated cartoon way, teach the product's ownable mechanism visually, show what the problem costs, bring the product in, land the fix as the climax, pay it off, end on a real-product card. One narrator voice carries the whole spot. How the story is told (problem → fix, how it works, a day in the life, the product as hero, or a villain arc) is the user's choice, made upstream. This capability is the FREE assembly stage only. All generative work (nano-banana keyframes, Seedance i2v clips, ElevenLabs VO + music) happens upstream in the recipe and is handed to this capability as files.

It ports the validated compose recipe from two reference runs (a cortisol/stress supplement and a baby-eczema cream; both happened to use the villain arc). The recipe is deterministic — iterate the cut for free, re-roll only the offending paid beat.

Choices

The creative calls are made upstream by the recipe's choices and arrive here only as files and config values. This renderer is story- and style-agnostic: it never assumes a story shape, a cast, a look, a narrator or a music style.

  • story_shape — how the story is told: problem → fix (no villain) / how it works / a day in the life / the product as hero / villain arc (the problem as a cartoon villain who schemes and loses). Reaches this capability as the per-scene caption text and the VO files. Asked of the user; the demo used the villain arc.
  • cast — who the cartoon characters are (the customer, the product as a character, a mascot; a personified problem only on the villain arc). Reaches this capability only inside the clips. Asked of the user.
  • narrator — who speaks the single VO track. Arrives as the scenes[].vo files. Asked of the user; the demo used the villain (villain arc only).
  • visual_style — the art style of the i2v clips (scenes[].clip). Asked of the user; the demo used Pixar-style 3D. Nothing here depends on it.
  • narrator_voice — the voice cast for the VO. Asked of the user; the demo used a characterful male villain voice.
  • music — the bed at music_bed. Asked of the user; the demo used whimsical pizzicato + woodwinds + xylophone. The mix constants below apply to any style.

What it does (the deterministic recipe)

  1. Per-scene retime. Each i2v clip is retimed to its measured VO window (scale=1080:1920:force_original_aspect_ratio=increase,crop=1080:1920,fps=30,setsar=1, then tpad=stop_mode=clone if the VO is longer than the clip, else a trim). Each window is snapped to a whole number of frames first. compose.py and make_captions.py use the same rule, so video cuts, VO windows and caption cues share the same cut times and a caption never outlives its cut.
  2. Identical re-encode. Every segment is re-encoded libx264 -crf 18 -pix_fmt yuv420p -r 30 even if already correct — a framerate mismatch makes the concat demuxer silently drop frames.
  3. Concat all scene segments + the end card via the concat demuxer (-c copy).
  4. Real-product end card. build_endcard.py composites the REAL retail product photo over the brand palette (flat, or sampled from the photo's own edge pixel) with a typeset wordmark + claim rows + CTA pill in PIL ImageDraw.text — never an AI cartoon bottle, never AI-rendered brand text. compose.py holds it static over the dwell. Set end_card.zoom_to above 1.0 (for example 1.04) only if you want a slow zoom. Text that would be hard to read on its background (a dark brand colour on a dark photo) is drawn in white or near-black instead, with a warning. If end_card.vo is set, that spoken line plays from the start of the end-card window, and the dwell is stretched to at least the line's duration + 0.5s.
  5. Mix. VO bus loudnorm I=-14 TP=-1.5, music bus loudnorm I=-26 TP=-3 then volume=0.62, amix inputs=2 duration=first normalize=0, so the music is ducked under the VO.
  6. Master pass. The mix is measured, gained to -14 LUFS, limited, encoded to AAC and measured again. The pass repeats until the encoded audio is at -14.5..-13.5 LUFS with a true peak <= -1.5 dBFS. compose.py prints the measured loudness and peak.
  7. Captions last. make_captions.py emits a libass .ass (one cue per scene, Arial 64 white / 6px outline / MarginV=330, start = scene_start + 0.08s, suppressed on the end card). compose.py burns it as the final filter so captions sit on top.
Show full SKILL.md (591 more words)Show less

Scripts (free — Python + ffmpeg + PIL, no bash, no paid calls)

  • scripts/build_endcard.py — PIL composite of the real product photo + typeset brand layer (wordmark / product line / claim rows / accent CTA pill). Reads the same config.json. Run this FIRST so end_card.image exists before compose.py.
  • scripts/make_captions.py — emits the per-scene libass .ass from the SAME scene table compose reads, so caption windows stay in lockstep with the cut. Run before compose.py (or point config.captions_ass at nothing to skip captions).
  • scripts/compose.py — the assembler: per-scene retime + identical 30fps re-encode → concat -> static end card (voiced if end_card.vo is set) -> VO/music loudnorm mix -> master loudness pass -> burn captions -> master mp4.
  • scripts/config.example.json — the shape of the config the recipe binds. Its values are a labelled worked example (the demo build: a villain-arc eczema story, placeholder brand). Captions, end-card copy and palette come from the user's brand and choices — never copy them as defaults.

Inputs (all via --config + a runtime work dir — NO hardcoded paths)

config.json carries: scenes[] (each {id, clip, target_sec, vo, caption, atempo?} where target_sec is the measured VO window), end_card{product_image, image, dwell_sec, zoom_to?, wordmark, product_line, claims[], cta, background?, vo?}, brand_palette {primary, primary_lite, accent, grey}, music_bed, music_volume (default 0.62), atempo (compose-stage VO speed-up, default off; the reference runs used 1.3 when the VO read slow), captions_ass, and caption_style. See config.example.json.

  • end_card.vo (optional) is the path to the end card's spoken line. It is laid at the start of the end-card window. The dwell becomes the larger of dwell_sec and the line's duration + 0.5s. Leave it out for a silent end card (music only). end_card.atempo overrides the global atempo for this line.
  • Paths may be absolute, including Windows paths (C:/...), captions_ass too.
  • The config is read as UTF-8 (with or without a BOM). Save it as UTF-8 if any text has non-ASCII characters.
  • Fonts. The end card uses DejaVu (Linux), Arial (macOS), or Arial / Segoe UI (Windows). If none is found it falls back to Pillow's built-in font at the right size.

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

  • The end card is the REAL product photo, composited — never an AI cartoon bottle. Both reference runs shipped an AI bottle first and had to re-shoot with the real photo.
  • No AI-rendered brand text anywhere. Wordmark, claims, CTA, motif — all PIL ImageDraw.text. AI draws the world + characters only.
  • Re-encode every segment to 30fps before concat, even if already correct, or the concat demuxer silently drops frames.
  • target_sec is the MEASURED VO duration (ffprobe each VO mp3), never a planned word count — VO drives the per-scene timing.
  • Mix constants are validated - VO -14 LUFS, music -26 LUFS then volume 0.62 to 0.70 (the two reference runs), amix normalize=0. Master target -14.5..-13.5 LUFS, true peak <= -1.5 dBFS. The master pass enforces this and prints what it measured.
  • Caption start = scene_start + 0.08s, suppressed on the end card (its typeset copy carries the message — two text layers at one spot are both unreadable).

Known gaps

  • Captions are one cue per scene. The whole sentence is on screen from the start of the scene, before most of it has been spoken. Captions are not timed to the words. This is not fixed yet.

Requires

watch (QC the final master - confirm every character's look holds, the single narrator voice carries the whole spot, no AI brand text leaked into a cartoon background, the end card is the real product, and duration is within 0.1s of the summed windows plus the end-card dwell). The recipe gates the paid create-image-fal (keyframes), create-video-fal (Seedance i2v), create-vo-elevenlabs, and create-music-elevenlabs calls to their own capabilities — 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 6 other files (scripts) in skills/ads/capabilities/render-absurdist-explainer of gooseworks-ai/goose-skills.

  • SKILL.md
  • scripts/build_endcard.py
  • scripts/compose.py
  • scripts/config.example.json
  • scripts/make_captions.py
  • skill.meta.json
  • tests/smoke-test.md

Open the folder on GitHubat commit c650c6d

Compare with similar skills

Render Absurdist Explainer 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 Absurdist Explainer compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Render Absurdist Explainer this skillgooseworks-ai/goose-skills1.2k—~2.4kAutomated safety check: PassMIT
Muapi DirectorAnil-matcha/vox-ai-motion-graphics-generator246—~679Automated safety check: PassNone
KinocutKyaniteLabs/kinocut198—~5.7kAutomated safety check: PassApache-2.0
Manim Video Productionbrowser-use/video-use29k6 repos~3kAutomated safety check: PassMIT
Hand-Drawn Explainer Video Makerhi-nikola/hand-drawn-explainer-video-nikola374—~904Automated safety check: PassApache-2.0
Day in My Life Agent Filmheygen-com/hyperframes-community-skills187—~1.7kAutomated safety check: PassApache-2.0

Similar skills

  • Muapi Director

    Anil-matcha/vox-ai-motion-graphics-generator

    Turn ONE topic, talking-head video, or photo into a finished Vox-style paper-collage explainer / ad video on the MuAPI platform (api.muapi.ai) + local ffmpeg — script, collage keyframes, motion…

    246 GitHub stars~679 tokensUpdated 1 mo ago
    Media & CreativeAuto-check passed
  • Kinocut

    KyaniteLabs/kinocut

    Use Kinocut for guarded video editing, source-backed planning, FFmpeg operations, media analysis, subtitles, audio workflows, Hyperframes or Revideo rendering, repurposing packages, and release…

    198 GitHub stars~5.7k tokensUpdated today
    Media & CreativeAuto-check passed
  • Manim Video Production

    browser-use/video-use

    Produces math and technical explainer videos with Manim Community Edition: concept animations, equation derivations, algorithm walkthroughs and data stories.

    29k GitHub starsUsed in 6 repos~3k tokens
    Media & CreativeAuto-check passed
  • Hand-Drawn Explainer Video Maker

    hi-nikola/hand-drawn-explainer-video-nikola

    Produces Chinese hand-drawn explainer videos with voiceover, subtitles, timeline, editable project and a real MP4, by stroke-by-stroke story animation or programmatic animation.

    374 GitHub stars~904 tokensUpdated 1 mo ago
    Media & CreativeAuto-check passed
  • Day in My Life Agent Film

    heygen-com/hyperframes-community-skills

    Turns your local Claude Code session history into a 60 to 75 second hand-drawn ink film about a day with your agent, with a string score and your approval of every line.

    187 GitHub stars~1.7k tokensUpdated 11 days ago
    Media & CreativeAuto-check passed
  • Manim Explainer Videos

    Prismer-AI/PrismerCloud

    Produces 3Blue1Brown-style explainer animations with Manim Community Edition for math, algorithms, equations and architecture diagrams, with planning and rendering references.

    1.6k GitHub starsUsed in 2 repos~3.1k tokens
    Media & CreativeAuto-check passed

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 yesterday
    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 yesterday
    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 yesterday
    Auto-check passed

Questions about Render Absurdist Explainer

What does Render Absurdist Explainer do?

Assemble an absurdist animated-explainer video ad (~38s, 9:16) from per-scene i2v clips + their measured VO windows — retime each clip to its VO, re-encode every segment to identical…. Render Absurdist Explainer is an agent skill from gooseworks-ai/goose-skills.62, amix normalize=0), and burn libass captions last.

When should I use Render Absurdist Explainer?

Render Absurdist Explainer fits situations like: the absurdist-explainer format; tasks that involve Video production; tasks that involve Motion graphics.

How do I install Render Absurdist Explainer in Claude Code?

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

How do I install Render Absurdist Explainer in Codex?

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

Can I use Render Absurdist Explainer 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-absurdist-explainer -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-absurdist-explainer, .gemini/skills/render-absurdist-explainer, .github/skills/render-absurdist-explainer and .opencode/skills/render-absurdist-explainer in your project.

What does Render Absurdist Explainer need to run?

Going by SKILL.md and its folder, Render Absurdist Explainer needs Python for the scripts in its folder. Our summary lists: Python 3.

Does Render Absurdist Explainer access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Render Absurdist Explainer 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 Absurdist Explainer use?

Render Absurdist Explainer 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 Absurdist Explainer use?

About 2.4k tokens (SKILL.md is roughly 9.7k 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 Absurdist Explainer?

Skills that share tags, products or a category with Render Absurdist Explainer: Muapi Director (Anil-matcha/vox-ai-motion-graphics-generator, 246 stars), Kinocut (KyaniteLabs/kinocut, 198 stars), Manim Video Production (browser-use/video-use, 29k stars) and Hand-Drawn Explainer Video Maker (hi-nikola/hand-drawn-explainer-video-nikola, 374 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Render Absurdist Explainer?

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.