$npx -y skills add gooseworks-ai/goose-skills --skill render-food-product-sizzleAssemble a wordless macro-tabletop food-product sizzle ad from a config — normalize fps and SAR across ~4 photorealistic macro clips (hands tearing, flat lay, bite, box hero), concat them, apply a global anti-AI grain pass (eq plus hqdn3d plus noise), composite the audio (a non-d
| 1 | # render-food-product-sizzle |
| 2 | |
| 3 | Assemble a **food-product sizzle** ad from a config: a wordless macro-tabletop photorealistic sizzle |
| 4 | for a physical food / CPG product — tactile sunlit tabletop photography in a warm tungsten kitchen |
| 5 | register, ~4 dynamic macro scenes (hands tearing, a flat lay, a partial-face bite, a box / pack |
| 6 | hero) flowing into a static end card, carried by a non-diegetic acoustic music bed + a few diegetic |
| 7 | SFX with NO voiceover. This capability is the **FREE, deterministic assembly** — normalized concat, |
| 8 | the anti-AI grain pass, the audio (music bed + SFX) composite, the PIL end card, and the optional |
| 9 | serif stat-callout pills. |
| 10 | |
| 11 | `scripts/config.example.json` is the worked example (Lineage Provisions "Beef Sticks Sizzle", ~14s |
| 12 | 1080×1920 9:16, ~4 macro scenes + a static end card); `scripts/PIPELINE.md` maps every config block |
| 13 | to its source step and `scripts/README.md` documents the free assembly. |
| 14 | |
| 15 | ## Run |
| 16 | |
| 17 | This is the **FREE, deterministic** assembly stage — it spends nothing. The paid inputs are separate |
| 18 | capabilities: ~4 photographic macro keyframes (`create-image-fal`, Nano Banana; the box / pack hero |
| 19 | grounds on the real product PNG); one locked-off, anti-shake i2v clip per keyframe (`create-video-fal`, |
| 20 | Seedance); and a non-diegetic acoustic / bluegrass bed (`create-music-elevenlabs`). Given the ~4 |
| 21 | clips + the music bed + the diegetic SFX + the real logo PNG + the real product PNG, |
| 22 | `render-food-product-sizzle` normalizes fps / SAR, concats the body clips, applies the anti-AI grain |
| 23 | pass, composites the audio (bed + SFX at their cue points), composites the static PIL end card, burns |
| 24 | the optional serif callout pills, and muxes → the master. Re-cuts reuse the existing keyframes / |
| 25 | clips / music and cost **$0**. |
| 26 | |
| 27 | ## Contract (the free assembly) |
| 28 | |
| 29 | - **Wordless — the music bed is the audio, no VO.** A non-diegetic acoustic bed (no vocals) IS the |
| 30 | bed; do not add a spoken voiceover. The brand name + claim land on the STATIC end card, never in |
| 31 | the body. |
| 32 | - **~4 macro scenes, concat in order.** Normalize fps / SAR across the body clips and concat them in |
| 33 | their scene order (tear → flat-lay → bite → box-hero by default); the box / pack hero shows the |
| 34 | REAL label (grounded on the product PNG upstream — the assembly must not re-render it). |
| 35 | - **Anti-AI grain pass, applied globally.** Apply `eq=contrast=1.06:saturation=0.93,hqdn3d=1.5:1.5:3:3,noise=alls=8:allf=t+u` |
| 36 | across the whole video — the noise on a food macro is load-bearing for the tactile / photographic |
| 37 | read, otherwise the sizzle looks AI-smooth. |
| 38 | - **Diegetic SFX on the tactile beats.** Mix a crisp ~120ms snap on the fiber tear and a ~180ms tear |
| 39 | on the box-open at their measured cue points — a couple of short hits, not a wall of sound. Time |
| 40 | each to its beat, not a round number. |
| 41 | - **Music bed with no sparse intro.** The supplied / generated bed opens sparse — the upstream step |
| 42 | trims the ~2.5s intro so it kicks in from frame 0; the assembly loudnorms + fades in / out to the |
| 43 | master length. |
| 44 | - **Static end card via PIL from the real logo + product PNG — never AI-render brand text.** Solid / |
| 45 | ivory bg + the real logo PNG (upper third) + the real product PNG (centered, soft shadow) + a serif |
| 46 | heritage headline + a CTA, held ~3s WITH the music still playing under it (fade the tail — no silent |
| 47 | tail). A diffusion model garbles a wordmark and the packaging. On macOS pick a serif with the |
| 48 | middle-dot glyph (use ` · `). |
| 49 | - **Optional serif stat-callout pills at beats.** Ivory-or-brand-color pill + serif type at |
| 50 | choreographed windows. Write any `%` string to a textfile and use ffmpeg `drawtext` `textfile=` + |
| 51 | `expansion=none` — a raw `%` is read as a strftime spec and renders garbage. |
| 52 | - **FFmpeg composite, deterministic, FREE.** Concat the body clips, grain-pass, composite the audio |
| 53 | (bed + SFX), append the PIL end card, burn the callouts, mux with a fade tail, `loudnorm` → a |
| 54 | 1080×1920 h264+aac master (~14s). No paid calls, no keys. |