b-roll-ugc
Produce a single 15s 9:16 UGC b-roll video for any product PDP URL Higgsfield Marketing Studio can ingest. Visual-only by default — voiceover and captions are layered post-production via ElevenLabs and ZapCap, never burned in by the model.
When to use
- User shares a product PDP URL and wants an ad/UGC video.
- User mentions "Higgsfield UGC", "Marketing Studio video", or "b-roll for [product]".
- Building a series of ad creatives for a brand.
When NOT to use
- User wants a multi-shot character-driven narrative → use
director instead.
- User wants pure product b-roll with zero person on screen → switch the
mode to Hyper Motion (still works with this skill, see Modes section).
Pipeline (run sequentially)
Ingest the product via the Higgsfield CLI:
higgsfield marketing-studio products fetch --url <pdp-url> --wait --json
Capture id and verify status: completed. If status: failed, stop immediately and tell the user the URL could not be ingested by Higgsfield Marketing Studio — ask them to provide a different link that the scraper can handle. Do not attempt workarounds or retries; this is a hard requirement.
Run Kalodata research via the kalopilot skill. Send a query like:
For US TikTok Shop product ID <numeric_id> (or brand/keyword if not on TikTok Shop), find the top 5 highest-GMV creator videos in the last 30 days. For each: GMV, views, length, and a one-sentence description of the format/hook. Then summarize the single winning format pattern in one paragraph.
Use the result to inform the script's hook, b-roll vocabulary, and pacing.
Generate the video via the Higgsfield CLI using the prompt template below:
higgsfield generate create marketing_studio_video \
--prompt "<filled prompt template>" \
--product_ids '[<product_id>]' \
--avatars '[{"id":"cd6fb78c-e1a2-42f1-8b1e-902c15511877","type":"preset"}]' \
--mode ugc \
--duration 15 \
--resolution 720p \
--aspect_ratio 9:16 \
--wait --wait-timeout 15m --json
--wait blocks until terminal status; the result URL is in the JSON output. Marketing Studio video typically takes 3–5 minutes.
QA gate via VidJutsu critic — POST https://api.vidjutsu.ai/v1/watch with the rendered rawUrl and a prompt that checks: any speaking mouth, any spoken audio, any burned-in captions, product flavor accuracy, anatomy artifacts. Require a 1–10 score and pass/fail.
Refine if score < 8 — tighten the negative prompt or pin the avatar more aggressively, then retry once. If a second attempt still fails, surface to the user rather than burning more attempts.
Defaults
| Param |
Default |
Notes |
model |
marketing_studio_video |
only model that supports URL-driven product entities |
mode |
UGC |
switch to Hyper Motion for pure product b-roll, no person on screen |
aspect_ratio |
9:16 |
TikTok / Reels / Shorts native |
duration |
15 |
sweet spot from Kalodata top-performer data; matches 11–45s winning band |
avatars |
[{"id": "cd6fb78c-e1a2-42f1-8b1e-902c15511877", "type": "preset"}] |
Valentina (female) — pinned to prevent server defaulting to Stefan (male). Override only when user requests a different avatar. |
generate_audio |
omit |
Server flips this to true on UGC mode regardless. Don't fight it; control via negative prompt instead. |
Prompt template
Phone-camera UGC vertical 9:16, 15 seconds, candid morning [setting] vibe, soft natural daylight, warm wellness aesthetic.
A young woman quietly prepares and holds her [PRODUCT NAME] — [SKU/flavor/variant]. She makes eye contact with the camera throughout but never speaks — confident, easy smile, mouth closed and relaxed.
Shot 1 (0-3s): medium shot of her in the [setting] looking directly at the camera, the [PRODUCT NAME] held in front of her chest with both hands, label facing forward.
Shot 2 (3-6s): cuts to close-up of her hands [doing the product action — scooping, pouring, opening], [color/texture detail].
Shot 3 (6-9s): back to her — she lifts the [product/result] beside her face, looks at camera with a small confident smile, gives a subtle 'cheers' nod.
Shot 4 (9-12s): close-up of her hand [secondary product detail — twisting cap, sealing, smoothing] against the [surface] background.
Shot 5 (12-15s): final medium shot — she stands by the window holding the closed [PRODUCT NAME] at chest height with one hand, [secondary prop] in the other, looking softly at the camera, lips closed in a slight smile.
Phone-camera UGC realism, slight grain, natural daylight color.
Negative: no speaking, no mouth open, no mouth moving, no talking, no dialogue, no voiceover, no spoken audio, no music, no soundtrack, no burned-in caption text, no on-screen typography, no subtitles, no logo overlays, [SKU-specific exclusions — e.g. "no mango flavor, no yellow powder, no orange powder"].
Variables to fill:
[PRODUCT NAME] — full SKU as it appears on the tub/box
[SKU/flavor/variant] — explicit, the variant being shot (e.g. "Strawberry Kiwi (pink powder)")
[setting] — kitchen, bathroom, bedroom, living room
[product action] — scoop into shaker, twist open, pour, etc.
[secondary prop] — what else lives on the counter (glass of water, journal, fresh fruit)
[SKU-specific exclusions] — every flavor/variant that exists in the product entity that we are NOT shooting today
Modes
| Mode |
Use when |
Avatar |
UGC |
Default. Female creator on camera, hands and face visible, never speaking. |
Pin Valentina (cd6fb78c-...) |
Hyper Motion |
Pure product b-roll, no person ever on screen. |
Server still attaches one but it won't appear in shots. Override prompt to "no person, hands only" or "no humans at all." |
Hard-won learnings
These are the failure modes that this skill prevents. Keep them in mind when overriding defaults.
Higgsfield server flips generate_audio: true on UGC mode regardless of input. You cannot disable audio via param. Control audio via negative prompt only: "no voiceover, no music, no spoken audio."
Marketing Studio paraphrases burned-in caption text and hallucinates voiceover dialogue. Never ask the model to render specific caption strings or recite a specific script — it will produce gibberish ("Done untknohy", "Doris igery labring baal.pak") and unrelated VO ("she's married in France"). Always do captions and voiceover in post-production via ZapCap (editor-captions skill) and ElevenLabs.
Pin the avatar. If you don't pass avatars, the server defaults to whichever preset it picks — including male avatars like Stefan when you wanted a female creator. Always pin explicitly.
Lock the SKU/flavor in BOTH positive and negative. Product entities often have multiple SKU images (e.g. one tub has Strawberry Kiwi pink AND Mango yellow). Without explicit locking, the model may scoop pink in shot 2 and hero a Mango tub in shot 5. State the target flavor in the positive prompt AND list every other flavor in the negative.
Marketing Studio scrape can fail on some PDPs. If show_marketing_studio returns failed, tell the user the URL is not ingestable and ask for a different link. Don't try to fix it programmatically.
VidJutsu critic on every render. No exceptions. Marketing Studio passes look completely fine in JSON metadata but the actual MP4 may have hallucinated audio, gibberish text, or flavor mismatch. The critic catches this in seconds — cheaper than a wasted post-production session.
Reference run
Job 00515168-6ca3-456d-8230-919f0a844b32 — Bloom Nutrition Greens (Strawberry Kiwi). Scored 10/10 on VidJutsu critic. Avatar: Valentina pinned. Mode: UGC. Use as the canonical example when validating future generations from this skill.
1---2name: b-roll-ugc3description: Generate a 15s UGC b-roll-style social ad from any product PDP URL via Higgsfield Marketing Studio. Pipeline ingests the URL, pulls Kalodata research on what's already winning for the product, generates with a hardened prompt template, polls to completion, and runs VidJutsu critic as a QA gate. Use when the user wants a Higgsfield UGC video, a Marketing Studio video, or a b-roll-style social spot for a specific product URL.4---56# b-roll-ugc78Produce a single 15s 9:16 UGC b-roll video for any product PDP URL Higgsfield Marketing Studio can ingest. Visual-only by default — voiceover and captions are layered post-production via ElevenLabs and ZapCap, never burned in by the model.910## When to use1112- User shares a product PDP URL and wants an ad/UGC video.13- User mentions "Higgsfield UGC", "Marketing Studio video", or "b-roll for [product]".14- Building a series of ad creatives for a brand.1516## When NOT to use1718- User wants a multi-shot character-driven narrative → use `director` instead.19- User wants pure product b-roll with zero person on screen → switch the `mode` to `Hyper Motion` (still works with this skill, see Modes section).2021## Pipeline (run sequentially)22231. **Ingest the product** via the Higgsfield CLI:2425 ```bash26 higgsfield marketing-studio products fetch --url <pdp-url> --wait --json27 ```2829 Capture `id` and verify `status: completed`. **If `status: failed`, stop immediately and tell the user the URL could not be ingested by Higgsfield Marketing Studio — ask them to provide a different link that the scraper can handle.** Do not attempt workarounds or retries; this is a hard requirement.30312. **Run Kalodata research** via the `kalopilot` skill. Send a query like:32 > For US TikTok Shop product ID `<numeric_id>` (or brand/keyword if not on TikTok Shop), find the top 5 highest-GMV creator videos in the last 30 days. For each: GMV, views, length, and a one-sentence description of the format/hook. Then summarize the single winning format pattern in one paragraph.3334 Use the result to inform the script's hook, b-roll vocabulary, and pacing.35363. **Generate the video** via the Higgsfield CLI using the prompt template below:3738 ```bash39 higgsfield generate create marketing_studio_video \40 --prompt "<filled prompt template>" \41 --product_ids '[<product_id>]' \42 --avatars '[{"id":"cd6fb78c-e1a2-42f1-8b1e-902c15511877","type":"preset"}]' \43 --mode ugc \44 --duration 15 \45 --resolution 720p \46 --aspect_ratio 9:16 \47 --wait --wait-timeout 15m --json48 ```4950 `--wait` blocks until terminal status; the result URL is in the JSON output. Marketing Studio video typically takes 3–5 minutes.51524. **QA gate via VidJutsu critic** — POST `https://api.vidjutsu.ai/v1/watch` with the rendered `rawUrl` and a prompt that checks: any speaking mouth, any spoken audio, any burned-in captions, product flavor accuracy, anatomy artifacts. Require a 1–10 score and pass/fail.53545. **Refine if score < 8** — tighten the negative prompt or pin the avatar more aggressively, then retry once. If a second attempt still fails, surface to the user rather than burning more attempts.5556## Defaults5758| Param | Default | Notes |59|---|---|---|60| `model` | `marketing_studio_video` | only model that supports URL-driven product entities |61| `mode` | `UGC` | switch to `Hyper Motion` for pure product b-roll, no person on screen |62| `aspect_ratio` | `9:16` | TikTok / Reels / Shorts native |63| `duration` | `15` | sweet spot from Kalodata top-performer data; matches 11–45s winning band |64| `avatars` | `[{"id": "cd6fb78c-e1a2-42f1-8b1e-902c15511877", "type": "preset"}]` | Valentina (female) — pinned to prevent server defaulting to Stefan (male). Override only when user requests a different avatar. |65| `generate_audio` | omit | Server flips this to `true` on UGC mode regardless. Don't fight it; control via negative prompt instead. |6667## Prompt template6869```70Phone-camera UGC vertical 9:16, 15 seconds, candid morning [setting] vibe, soft natural daylight, warm wellness aesthetic.7172A young woman quietly prepares and holds her [PRODUCT NAME] — [SKU/flavor/variant]. She makes eye contact with the camera throughout but never speaks — confident, easy smile, mouth closed and relaxed.7374Shot 1 (0-3s): medium shot of her in the [setting] looking directly at the camera, the [PRODUCT NAME] held in front of her chest with both hands, label facing forward.7576Shot 2 (3-6s): cuts to close-up of her hands [doing the product action — scooping, pouring, opening], [color/texture detail].7778Shot 3 (6-9s): back to her — she lifts the [product/result] beside her face, looks at camera with a small confident smile, gives a subtle 'cheers' nod.7980Shot 4 (9-12s): close-up of her hand [secondary product detail — twisting cap, sealing, smoothing] against the [surface] background.8182Shot 5 (12-15s): final medium shot — she stands by the window holding the closed [PRODUCT NAME] at chest height with one hand, [secondary prop] in the other, looking softly at the camera, lips closed in a slight smile.8384Phone-camera UGC realism, slight grain, natural daylight color.8586Negative: no speaking, no mouth open, no mouth moving, no talking, no dialogue, no voiceover, no spoken audio, no music, no soundtrack, no burned-in caption text, no on-screen typography, no subtitles, no logo overlays, [SKU-specific exclusions — e.g. "no mango flavor, no yellow powder, no orange powder"].87```8889**Variables to fill:**90- `[PRODUCT NAME]` — full SKU as it appears on the tub/box91- `[SKU/flavor/variant]` — explicit, the variant being shot (e.g. "Strawberry Kiwi (pink powder)")92- `[setting]` — kitchen, bathroom, bedroom, living room93- `[product action]` — scoop into shaker, twist open, pour, etc.94- `[secondary prop]` — what else lives on the counter (glass of water, journal, fresh fruit)95- `[SKU-specific exclusions]` — every flavor/variant that exists in the product entity that we are NOT shooting today9697## Modes9899| Mode | Use when | Avatar |100|---|---|---|101| `UGC` | Default. Female creator on camera, hands and face visible, never speaking. | Pin Valentina (`cd6fb78c-...`) |102| `Hyper Motion` | Pure product b-roll, no person ever on screen. | Server still attaches one but it won't appear in shots. Override prompt to "no person, hands only" or "no humans at all." |103104## Hard-won learnings105106These are the failure modes that this skill prevents. Keep them in mind when overriding defaults.1071081. **Higgsfield server flips `generate_audio: true` on UGC mode regardless of input.** You cannot disable audio via param. Control audio via negative prompt only: "no voiceover, no music, no spoken audio."1091102. **Marketing Studio paraphrases burned-in caption text and hallucinates voiceover dialogue.** Never ask the model to render specific caption strings or recite a specific script — it will produce gibberish ("Done untknohy", "Doris igery labring baal.pak") and unrelated VO ("she's married in France"). Always do captions and voiceover in post-production via ZapCap (`editor-captions` skill) and ElevenLabs.1111123. **Pin the avatar.** If you don't pass `avatars`, the server defaults to whichever preset it picks — including male avatars like Stefan when you wanted a female creator. Always pin explicitly.1131144. **Lock the SKU/flavor in BOTH positive and negative.** Product entities often have multiple SKU images (e.g. one tub has Strawberry Kiwi pink AND Mango yellow). Without explicit locking, the model may scoop pink in shot 2 and hero a Mango tub in shot 5. State the target flavor in the positive prompt AND list every other flavor in the negative.1151165. **Marketing Studio scrape can fail on some PDPs.** If `show_marketing_studio` returns `failed`, tell the user the URL is not ingestable and ask for a different link. Don't try to fix it programmatically.1171186. **VidJutsu critic on every render.** No exceptions. Marketing Studio passes look completely fine in JSON metadata but the actual MP4 may have hallucinated audio, gibberish text, or flavor mismatch. The critic catches this in seconds — cheaper than a wasted post-production session.119120## Reference run121122Job `00515168-6ca3-456d-8230-919f0a844b32` — Bloom Nutrition Greens (Strawberry Kiwi). Scored 10/10 on VidJutsu critic. Avatar: Valentina pinned. Mode: UGC. Use as the canonical example when validating future generations from this skill.