Skip to content
cccskills
FreePublished on GitHub

render-creator-pip-listicle

Build a creator-led product listicle ad from prepared talking clips and product assets. The creator remains full-frame while product beats show a demo window and product card; the skill composites overlays, joins the beats, and adds timed captions.

OriginalShow the original description

Assemble a creator picture-in-picture product-listicle ad from a config. The creator stays full-frame for every beat (voice and lips generated together), and each product beat carries three overlays for the whole beat: a title pill, the product demo in a rounded picture-in-picture window (the brand's muted UGC clip, or its UI still or screen recording), and a product card with thumbnail, number, category and name. Hook and CTA beats show the creator with the title pill only. It builds one overlay image per beat, composites it on the creator clip, concatenates the beats and burns timed captions last. Free, deterministic assembly; the creator anchor and talking clips come from create-image-fal and create-video-fal. Use for the creator-pip-listicle format.

gooseworks-ai/goose-skills1,272 stars(GitHub 1,272 + cccskills 0)

Run score Not tested

See how to install

Good for

  • Creating a countdown-style product ad with a full-frame creator
  • Showing product demos and product cards over creator clips
  • Adding timed captions to a stitched listicle video

Files included (6)

  • SKILL.md8.2 KB
  • scripts/config.example.json12.2 KB
  • scripts/PIPELINE.md8.3 KB
  • scripts/README.md5.8 KB
  • skill.meta.json182 B
  • tests/smoke-test.md2.5 KB

SKILL.md (original)

Review the instructions the agent will receive before you install.

render-creator-pip-listicle

Assemble a creator picture-in-picture product listicle ad from a config: an AI creator counts down N products in the brand's own voice, and the creator stays FULL-FRAME the whole time — there is NO cut to a full-frame product shot, ever. On each product beat, three persistent overlays ride on top of the full-frame creator for the WHOLE beat: (1) a title pill top-center (persistent, it carries the listicle title), (2) the DEMO in a rounded PiP window top-right — the brand's real UGC clip (MUTED), or for a no-UGC brand the product's own demo (a real screen-recording, or an autocropped high-res product-UI/dashboard still sized to fill the window), and (3) a product card pinned bottom (rounded thumbnail left + "N · CATEGORY" small-caps + product NAME in a serif face like Georgia). Hook + CTA beats are the creator full-frame with the title pill only (no PiP/card). The creator's voice + lips are generated together, natively per beat — there is no separate voiceover. This capability is the FREE, deterministic assembly — build the per-beat overlay PNG, cover-scale the creator clip + composite the overlay, concat all beats, and burn the captions.

Choices

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

  • creator — who counts down the list (gender, age, look, wardrobe) → creator.descriptor. The demo used a home-cook creator in his thirties.
  • setting — where the creator films → creator.setting / the anchor prompt. The demo used a home kitchen counter.
  • tone — bubbly, calm and honest, dry and funny, or fast expert → beats[].dialogue. The demo was chatty and enthusiastic.

scripts/config.example.json is the worked example (Pantrywise Kitchen "5 tools that replaced my whole utensil drawer", ~46s 1080×1920 9:16, a hook + 5 product beats + a CTA) — copy its structure, never its creative values; scripts/PIPELINE.md maps every config block to its source step and scripts/README.md documents the free assembly.

Run

This is the FREE, deterministic assembly stage — it spends nothing beyond the caption burn. The paid inputs are separate capabilities — the creator anchor (create-image-fal, Seedream v5 Pro, model bytedance/seedream/v5/pro/text-to-image with no fal-ai/ prefix) and one native Seedance talking clip per beat (create-video-fal, model bytedance/seedance-2.0/reference-to-video, generate_audio=ON, the SAME seed across beats so the face holds, 720p default). Given those native clips + the brand's real UGC demo clips (or the product's own autocropped UI stills / screen recordings) + the real product photos + the brand palette + the title copy, render-creator-pip-listicle builds ONE full-1080×1920 transparent overlay PNG per beat (title pill always; + demo PiP top-right + bottom product card + rank number on product beats), cover-scales the creator clip to 1080×1920 and overlays the beat's overlay PNG for the whole beat while keeping the native audio, concats all beats, and burns the captions last → the master. Re-cuts reuse the existing native clips + overlays and spend nothing.

Anchor gotcha (Seedream v5 Pro, not gpt-image-2/Seedream-v4). Seedance 2.0's partner-validation gate REJECTS photoreal faces from gpt-image-2 AND Seedream v4 ("may contain likenesses of real people"); a Seedream v5 Pro face passes. Generate a FRESH anchor with create-image-fal, model bytedance/seedream/v5/pro/text-to-image (no fal-ai/ prefix) — reusing an existing photoreal face from another project also trips the gate.

Clip gotchas (Seedance 2.0). A REJECTED submit STILL bills via the fal-proxy — pre-flight ONE test clip (the hook) and confirm it renders before firing the batch. Presigned anchor URLs expire ~1h → re-host the anchor if a batch runs long (else "Failed to download the file" mid-batch). The intermittent fal "User is locked: Exhausted balance" is the proxy's upstream fal account (not your GooseWorks credits) → retry with backoff.

Contract (the free assembly)

  • Creator FULL-FRAME the whole beat — NO cut to a full-frame product shot. Every beat is ONE continuous full-frame creator clip; the product content lives in overlays, never in a full-frame cutaway. per_beat_shots = 1.
  • Native creator audio carries the reel — no separate VO. Each beat's voice + lips come from ONE Seedance take (generate_audio=ON); this stage never adds a VO or a lip-sync pass. The creator clip's native audio plays continuous across the whole beat; the demo PiP's audio is muted (else the voice doubles).
  • Three persistent overlays on each product beat. For the WHOLE beat, on top of the full-frame creator: (a) the title pill top-center (persistent, title_pill.on=true — carries the listicle title, kept short to fit one line); (b) the DEMO PiP top-right; (c) the product card bottom. Hook + CTA carry the title pill only.
  • The DEMO PiP is autocropped to FILL its window. It's the brand's REAL UGC clip (MUTED, never AI-regenerated) — OR, for a brand with NO UGC (B2B/SaaS), the product's own demo: a real screen-recording, or an AUTOCROPPED high-res product-UI/dashboard still. Autocrop the still (trim transparent/near-white margins) and size the PiP window to the cropped content's aspect ratio so it fills the window — no letterbox whitespace; a WIDE screenshot → a SHORT + WIDE window, a tall/square one → a taller window. Rounded window, white hairline border, soft drop shadow, top-right. Disclose in the review when the demo is a still/mockup rather than a real UGC clip.
  • Products are REAL photos — never AI-render the product. The bottom product card (rounded thumbnail + "N · CATEGORY" small-caps + product NAME in a serif face like Georgia) comes from the brand's real product photo / UI thumbnail; a product with no clean photo falls back to a brand-color tile with the wordmark, never an AI product render.
  • Persistent title pill, rank number on the card. The title pill is persistent top-center (this format's identity, on by default). A counting rank number (1..N) is rendered on the product card on product beats.
  • Captions burned LAST as PIL PNG overlays, brand-accent, deterministic. This ffmpeg has no libass → render each ~2-word cue as a timed PIL PNG overlay (overlay=…:enable='between(t,s,e)'): white words + a brand-accent underline, black stroke for legibility, positioned CLEAR of the PiP (top) and the card (bottom) (mid-to-lower band). Time them DETERMINISTICALLY from the known per-beat script — the fal-ai/whisper proxy is unreliable (900s timeouts); do NOT depend on it. The known script is the brand-correct source, so brand tokens are always spelled right.
  • FFmpeg composite, deterministic, FREE. Per beat: build ONE full-1080×1920 transparent overlay PNG (title pill; + PiP + card + rank number on product beats), cover-scale the creator clip to 1080×1920, overlay the PNG for the whole beat, keep the native audio. Concat all beats with the concat demuxer @ 30fps / yuv420p → a 1080×1920 h264+aac master, then burn captions last. Probe durations with ffprobe -of csv=p=0 (NOT -of default=nk=1:np=1, which errors on some builds). No paid calls in the composite/stitch, no keys.

Reviews

No reviews yet. Tell others what you thought.

Comments

No login needed. Share how it worked for you, ask a question, or note where it did not run.

No comments yet. Be the first to write one.

Comments are published right away. Do not include personal information such as email addresses or phone numbers. Up to 2 URLs.

0 / 1,000 characters

This form is protected by reCAPTCHA, and the Google Privacy Policy and Terms of Service apply.

More skills from this repository

<slug>

FreeSummary

The supplied material contains only placeholder text for the skill’s purpose, inputs, steps, and completion criteria. It does not provide enough information to describe a task or result reliably.

  • No use case can be identified from the supplied material
  • Purpose is unspecified
  • Inputs and expected results are unspecified
gooseworks-ai/goose-skills1.3KUpdated Oct 27, 2026

ad-angle-miner

FreeSummary

Research supported advertising angles using buyer context, current product facts, customer language, and observed ads. Turn the evidence into static ad, video, or copy ideas, matching video concepts to available recipes. Scores rank ideas for testing; they do not predict results.

  • Finding evidence-backed angles for a product campaign
  • Developing static ad or video concepts from customer research
  • Writing headline and primary-text options for ads
gooseworks-ai/goose-skills1.3KUpdated Oct 27, 2026

Analyze campaign data from Google, Meta, and LinkedIn to find strong and wasteful spend. The skill checks funnel performance and test results, then recommends which campaigns to pause, scale, or test and how to shift budget across channels.

  • Finding campaigns and ads that waste budget
  • Comparing performance across Google, Meta, and LinkedIn
  • Planning specific budget shifts and follow-up tests
gooseworks-ai/goose-skills1.3KUpdated Oct 27, 2026

Compare ad spend and signups with downstream outcomes to calculate the cost of each qualified lead. The skill checks tracking coverage, accounts for how long leads need to mature, and groups creatives into actionable categories with confidence notes.

  • Compare true qualified-lead costs across creatives
  • Find low-CPA ads that bring poor-quality leads
  • Check whether signups can be linked to downstream outcomes
gooseworks-ai/goose-skills1.3KUpdated Oct 27, 2026

Prepare the intake for a Meta ad campaign by reviewing available brand information first, stating reasonable assumptions, and asking only questions whose answers could affect budget, claims, or legal exposure. It records stable brand facts, a campaign brief, and what was asked versus assumed.

  • Prepare a Meta ad campaign when brand facts are missing
  • Clarify budget and timing before campaign planning
  • Record approved claims and audience restrictions
gooseworks-ai/goose-skills1.3KUpdated Oct 27, 2026

ad-policy-check

FreeSummary

Review ad copy, image text, visuals, and people against platform and brand category rules. It suggests honest fixes and needed disclosures, then flags issues requiring human or legal review, with a separate result for each ad and platform.

  • Checking ad copy and visuals before launch
  • Reviewing creator ads for required disclosures
  • Fixing a platform disapproval and recording the issue
gooseworks-ai/goose-skills1.3KUpdated Oct 27, 2026

See all skills by gooseworks-ai

Report a problem with this skill