$npx -y skills add gooseworks-ai/goose-skills --skill render-ig-live-galleryRender an 'Instagram-Live social-proof gallery' video from a config — ~5 real brand product stills each framed as an Instagram-LIVE card (IG gradient-ring avatar, username, verified check, red LIVE badge, viewer count, close X, a short claim-free live-comment feed, an empty 'Add
| 1 | # render-ig-live-gallery |
| 2 | |
| 3 | Render the **ig-live-gallery** format from a config. Each of the brand's REAL hero product |
| 4 | stills is presented as the "live video" inside an authentic Instagram-Live card — dark |
| 5 | gradient scrims top & bottom over the bright product, an IG gradient-ring avatar + username + |
| 6 | verified check + red LIVE badge + viewer count + close X across the top, a short live-comment |
| 7 | feed + an EMPTY "Add a comment…" bar + heart/share icons across the bottom, and pink/red |
| 8 | reaction hearts floating up the right edge. A benefit sentence builds one short phrase per |
| 9 | slide as the top overlay, and it closes on a clean brand logo card with the payoff line + CTA. |
| 10 | |
| 11 | Deterministic and FREE — no generative image/video, no AI-rendered text. The paid music bed is |
| 12 | a separate capability (`create-music-elevenlabs`) muxed on afterward. |
| 13 | |
| 14 | ## Run |
| 15 | |
| 16 | ```bash |
| 17 | python3 scripts/build.py --config config.json --assets <stills-dir> --out master-silent.mp4 |
| 18 | # quick check — one frame per slide: |
| 19 | python3 scripts/build.py --config config.json --assets <stills-dir> --stills <dir> |
| 20 | ``` |
| 21 | |
| 22 | `config.example.json` is a full worked config (Glossier). Config shape: |
| 23 | |
| 24 | - `username`, `verified`, `palette`, `slide_dur`, `endcard_dur`, `crossfade` |
| 25 | - `slides[]` — `{ image, phrase, viewers, comments: [[handle, text], …] }` per product |
| 26 | - `endcard` — `{ logo, logo_is_white, payoff, handle, cta }` |
| 27 | - `music` — `{ prompt, length_ms, trim_intro_sec }` (consumed by `create-music-elevenlabs`) |
| 28 | |
| 29 | Image paths in the config resolve against `--assets`. |
| 30 | |
| 31 | ## Craft rules (baked into the renderer) |
| 32 | |
| 33 | - **Center each product on its TOP-HALF silhouette**, never the full non-white bbox — the base |
| 34 | drop-shadow otherwise inflates the box and the product reads shifted sideways. The renderer |
| 35 | measures the top 50% of the silhouette with an `L<246` threshold (catches white-product edge |
| 36 | shading too) and centers that midpoint. |
| 37 | - **Reaction hearts float up the right edge as a full column** and may overlap the centered |
| 38 | product — that's fine; don't shrink them to a thin edge ribbon. |
| 39 | - **Comments must be claim-free brand-descriptor vibe** (2-3 words, generic handles, NO emoji — |
| 40 | PIL can't render color emoji); the comment INPUT bar stays empty. LIVE badge + viewer count + |
| 41 | hearts are ambient live-stream chrome, not proof claims. |
| 42 | - **Endcard is the clean logo card** (bg + wordmark + @handle + CTA + payoff), never a model face. |
| 43 | - Real product stills + real wordmark only. Music bed only, no VO. |
| 44 | |
| 45 | ## Output |
| 46 | |
| 47 | A silent `WxH` (default 1080x1920) H.264 master. Generate + mux the `create-music-elevenlabs` |
| 48 | bed with a short fade in/out + loudnorm (`-map 0:v:0 -map 1:a:0`), then QC with `watch`. |