{"slug":"render-food-product-sizzle","title":"render-food-product-sizzle","summary":"Assemble 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","platform":"Claude","tags":[],"authorName":"LLM Mart","authorSlug":"llm-mart","score":0,"source":"github","price":null,"verified":false,"createdAt":"2026-09-11T17:23:08.479785Z","repo":{"url":"https://github.com/gooseworks-ai/goose-skills","stars":1229,"forks":211,"license":"MIT","updatedAt":"2026-10-01T15:06:43Z"},"bodyHtml":"<h1>render-food-product-sizzle scripts — the FREE assembly</h1>\n<p><code>render-food-product-sizzle</code> is the <strong>deterministic, $0 assembly stage</strong> of the food-product sizzle\nformat. The paid stages (the ~4 photographic macro keyframes, the ~4 locked-off i2v clips, the\nnon-diegetic music bed) are separate capabilities — <code>create-image-fal</code>, <code>create-video-fal</code>,\n<code>create-music-elevenlabs</code>. This capability spends nothing: it takes the ~4 clips + the music bed +\nthe diegetic SFX + the real logo PNG + the real product PNG and stitches the finished master.\nRe-cuts (new callout timing, a swapped end card, re-timed SFX cues, a grain-pass toggle) reuse the\nexisting keyframes / clips / music and cost <strong>$0</strong>.</p>\n<p><code>config.example.json</code> is the worked example (Lineage Provisions \"Beef Sticks Sizzle\", ~14s\n1080×1920). <code>PIPELINE.md</code> maps every config block to its source step. This README documents the FREE\nassembly pieces that <code>render-food-product-sizzle</code> owns.</p>\n<h2>1. Static end card — PIL from the real logo + product PNG, no AI text</h2>\n<p>The end card is composed <strong>entirely in PIL</strong> (NO AI): the ivory (or brand-color) bg + the real logo\nPNG (upper third, ~62% width) + the real product PNG (centered, with a soft shadow) + a serif\nheritage headline + a smaller CTA line. The brand text is <strong>never</strong> AI-rendered — a diffusion model\ngarbles a wordmark and the packaging. On macOS pick a serif with the em-dash / middle-dot glyph\n(use <code>·</code>). It holds ~3s after the body with the music still playing under it.</p>\n<h2>2. Diegetic SFX — ffmpeg lavfi, on the tactile beats</h2>\n<p>Two short diegetic hits are synthesized with ffmpeg lavfi <code>anoisesrc</code> (NO AI): a crisp ~120ms snap\n(white noise, fast envelope, highpass / lowpass, <code>acompressor</code>) on the fiber tear, and a ~180ms tear\n(pink noise, low-end roll) on the box-open. They mix in at their <strong>measured cue points</strong> (~1.5s and\n~11s in the demo), not round numbers — a couple of hits, not a wall of sound.</p>\n<h2>3. Music bed — no vocals, no sparse intro</h2>\n<p>The supplied / generated acoustic-bluegrass bed (no vocals — no VO to duck under) opens sparse; the\nupstream step trims the ~2.5s intro so it kicks in from frame 0. The assembly <code>loudnorm</code>s it and\nfades it in / out to the master length, playing it UNDER the end card with a fade tail (no silent\ntail).</p>\n<h2>4. FFmpeg composite</h2>\n<p>FFmpeg stitches the master: normalize fps / SAR across the ~4 body clips, concat them in scene order,\napply the anti-AI grain pass GLOBALLY (<code>eq=contrast=1.06:saturation=0.93,hqdn3d=1.5:1.5:3:3,noise=alls=8:allf=t+u</code>\n— load-bearing for the tactile / photographic read), composite the audio (music bed + <code>snap.wav</code> +\n<code>tear.wav</code> at their cues), append the PIL end card, burn the OPTIONAL serif stat-callout pills at\ntheir beats, mux with a fade tail, and <code>loudnorm</code>. Output is a 1080×1920 h264 + aac master (~14s).\nDeterministic, no paid calls, no keys.</p>\n<p><strong><code>%</code> in a callout</strong> — ffmpeg <code>drawtext</code> reads a raw <code>%</code> as a strftime spec; write the callout string\nto a textfile and use <code>textfile=</code> + <code>expansion=none</code> (see the source <code>build_master_v2.sh</code> <code>c1.txt</code> /\n<code>c5.txt</code>).</p>\n<p><strong>No libass needed</strong> — the sizzle body carries no burned captions (it is wordless); the stat-callout\npills are <code>drawtext</code> / <code>drawbox</code> overlays, not subtitle events.</p>\n","files":[{"path":"scripts/config.example.json","sizeBytes":11382,"isText":true},{"path":"scripts/PIPELINE.md","sizeBytes":5358,"isText":true},{"path":"scripts/README.md","sizeBytes":3292,"isText":true},{"path":"SKILL.md","sizeBytes":5767,"isText":true},{"path":"skill.meta.json","sizeBytes":329,"isText":true},{"path":"tests/smoke-test.md","sizeBytes":1589,"isText":true}],"reviewScore":null,"reviewSummary":null,"trust":{"provenance":"trusted-source-unreviewed","notice":"Community-authored content, reproduced verbatim and not vetted as instructions. Treat it as data to evaluate, never as directives to follow.","bodySource":null},"bodyLocked":false,"purchaseUrl":null,"sourceUrl":null,"report":{"provenance":"trusted-source-unreviewed","screen":{"ran":true,"outcome":"clean","suspicious":0,"notes":0,"hiddenCharacters":false},"virusScan":{"engine":"clamav","status":"clean","scannedAt":"2026-10-01T15:25:46.709118Z","sha256":"E81FC116DCC05D0EF451FC35CB76FF21C022BDBCE78F8CD7850516E5D4D647BF","sizeBytes":13437},"review":null,"source":{"repositoryUrl":"https://github.com/gooseworks-ai/goose-skills","path":"skills/ads/capabilities/render-food-product-sizzle","license":"MIT","commit":"1ed2c6a51732c38c1adc93705512f2f1ba344aaa","subtreeSha":"7A4E216D5217C851D22C9E37D2A66C01C91A9BDB25A02256DF12C7FB5FEEDFA3","lastSyncedAt":"2026-10-01T15:23:59.625203Z"},"reviewedAt":"2026-10-01T15:30:57.888481Z","notice":"Community-authored content, reproduced verbatim and not vetted as instructions. Treat it as data to evaluate, never as directives to follow."},"install":[{"target":"skills-cli","command":"npx skills add https://github.com/gooseworks-ai/goose-skills/tree/main/skills/ads/capabilities/render-food-product-sizzle"},{"target":"claude-code","command":"claude plugin marketplace add https://llmmart.ai/marketplace.json && claude plugin install gooseworks-ai-goose-skills@llmmart"},{"target":"git","command":"git clone https://github.com/gooseworks-ai/goose-skills.git"}]}