agentsclimarketplace

Product ugc

Skill NovateStudioGit/novate-studio-skills/creative-production/product-ugc

Run when the user wants to create product UGC content, a UGC selfie of a model holding a product, creator-to-camera content featuring a product, or use the /product-ugc command. Takes a short concept brief ("model unboxes product", "gym selfie review", "ASMR try-on"), optionally a script, and generates a multi-shot Seedance 2.0 prompt with authentic UGC vocabulary. The model headshot, styled body (if any), and product image are uploaded as references — no intermediate selfie generation. Defaults 720p / 15s / 9:16, all overridable. Output saved under the active brand folder.From its SKILL.md

Install
npx -y skills add NovateStudioGit/novate-studio-skills --skill product-ugc

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

SKILL.md

16.5 KB, ~4.1k tokens by cl100k_base, as published. Nobody here has run it

Product UGC

Concept-driven one-shot pipeline. You take a short brief from the user, generate a Seedance 2.0 multi-shot prompt using the Prompt Construction Framework below, write it to the spec, and the Python script dispatches it directly to bytedance/seedance-2.0/reference-to-video with the model headshot, styled body (if any), and product image as references.

Defaults: 720p / 15s / 9:16. All three overridable.

Prerequisite: The user must have already created a model (/model) and have product images set up (/brand). For styled wardrobe, also /style first.

Output saved to ./brands/[brand-name]/product-ugc/[output-name]/.


Step 1 — Select brand

Scan ./brands/ for subfolders that contain a brand-identity/visual-guidelines.md.

  • One brand found: use it. Confirm: "Using brand: [name]"
  • Multiple brands: list and ask which
  • None: tell the user to run /brand first

Step 2 — Select model

Ask: "Use a styled model (outfit applied) or unstyled model (plain casting)?"

Styled: list ./brands/[brand]/styled/ and read style-spec.json for model_dir. The latest styled body image becomes @Image2.

Unstyled: list ./brands/[brand]/models/. Only the headshot is used as identity (@Image1); outfit goes in the prompt text.

If neither folder has outputs: "No models found. Use /model first. For outfit styling, also /style."


Step 3 — Select product

Ask: "Which product should the video feature?"

Check ./brands/[brand]/brand-identity/product-images/. If not found, check products.json, try to download from the brand site, or ask the user to drop/paste the image.


Step 4 — Concept brief

Ask the user a single open question:

"Describe the concept in one or two lines — what kind of UGC video do you want? Examples:

  • 'sofia unboxes the magnesium on her desk'
  • 'gym selfie review while warming up'
  • 'ASMR top-down try-on of the running socks'
  • 'kitchen demo of the bottle'
  • 'walking down the street showing off the cap'"

Step 5 — Confirm format

If the brief matches one of these common patterns we've tuned for, use it as the scaffold. Otherwise use custom and build the prompt from the Prompt Construction Framework directly — the framework is format-agnostic and handles any concept.

FormatWhenStructure
selfie-reviewModel talks to camera about the product.iPhone front/back camera mix, 3–4 dialogue beats, casual show-a-friend energy.
unboxing"unbox", "reveal", "opens the package", desk shot.Overhead top-down, hands only, ASMR cardboard/tissue/reveal beats, minimal or no dialogue.
try-onClothing, accessories, "try-on haul", "GRWM".Full-length mirror, jump cuts between outfit stages, confident poses.
lifestyle-demo"gym", "court", "kitchen", "while running" — using product in an environment.Mix of selfie + action shots, props phone, demonstrates use.
asmr-product"ASMR", "tactile", "satisfying", no model dialogue.Close-up tactile, slow deliberate movements, amplified sound.
customAnything that doesn't fit the above — mukbang, driving vlog, get-ready-with-me variants, dual-creator skits, anything.Author the prompt directly from the Prompt Construction Framework — pick camera approach, beat structure, and dialogue style based on the concept itself.

If the brief clearly matches one of the first 5, confirm it. If it doesn't, use custom — don't force-fit.


Step 6 — Script

Ask:

"Three options for the script:

  1. Paste your own
  2. I'll write one based on the concept
  3. I'll write one grounded in the product's landing page (paste the URL)"
  • Path 1 — use verbatim
  • Path 2 — write 2–4 short fragmented lines, casual show-a-friend tone, no marketing speak
  • Path 3 — WebFetch the URL, extract 1–2 concrete benefits, write the script with those benefits surfaced naturally. If the user can't find a URL, fall back to Path 2

For dialogue-free formats (unboxing, asmr-product, or any custom concept where the model isn't speaking): script is optional. Many of the best examples have zero dialogue.


Step 7 — Technical params

Ask in one message with defaults:

"Defaults: 15s / 720p / 9:16. Override any of:

  • Duration (4–15s)
  • Resolution (480p / 720p / 1080p)
  • Aspect ratio (9:16 / 16:9 / 1:1 / 4:3 / 3:4 / 21:9 / auto)"

Step 8 — Output name

Slug from model + product + 1–2 word concept hint:

  • model-product-desk-asmr
  • marcus-cap-urban-walk
  • jade-bottle-kitchen-review

Step 9 — Generate the prompt

Using the Prompt Construction Framework (below), author the full Seedance 2.0 prompt. Show it to the user inline, then write it verbatim to the spec.

Spec format — brands/[brand]/product-ugc/[output-name]/product-ugc-spec.json:

{
  "output_name": "model-product-desk-asmr",
  "brand": "puresport",
  "model_type": "styled",
  "model_dir": "brands/puresport/models/sofia",
  "styled_dir": "brands/puresport/styled/sofia-allblack-athletic",
  "product_image": "brands/puresport/brand-identity/product-images/ultra-magnesium.jpg",
  "concept": "ASMR top-down unboxing of the magnesium sachets on a wooden desk",
  "format": "unboxing",
  "script": "",
  "prompt": "<the full prompt you authored>",
  "duration": 15,
  "resolution": "720p",
  "aspect_ratio": "9:16"
}

The format field is freeform — use one of the archetype names if it fits, or any short descriptor (custom, mukbang-review, driving-vlog, etc.). It's descriptive metadata; nothing downstream validates it.

For unstyled, set styled_dir: null and put the outfit description directly in the prompt text.


Step 10 — Run

python3 skills/references/generate-product-ugc.py brands/[brand]/product-ugc/[output-name]

Reference upload order is positional (the script enforces this — drives @Image1/@Image2/@Image3):

  • Styled: Image 1 = headshot, Image 2 = styled body, Image 3 = product
  • Unstyled: Image 1 = headshot, Image 2 = product

Cost: ~$0.30/sec at 720p, ~$0.50/sec at 1080p (standard tier). Audio included.


Step 11 — Present + iterate

Tell the user the path: brands/[brand]/product-ugc/[output-name]/[output-name]_v1.mp4

Offer:

  • Regenerate — same spec, new run, auto-increments _v2.mp4
  • Adjust prompt — edit any field in the spec (concept, script, prompt, duration, etc.) and regenerate
  • Rewrite prompt — change the concept/format, I'll author a new prompt

Each run auto-increments — previous outputs are never overwritten.


Prompt Construction Framework

Every prompt you author follows this structure. Distilled from working Seedance 2.0 UGC examples and the official Seedance + Higgsfield prompting guides.

Structure (in order)

(a) Opening style line — one sentence

Vertical [aspect_ratio] [format] UGC [product category] [activity], shot on iPhone [camera type], [lighting], [energy], casual "[one-line vibe quote]" vibe, real skin tones, no filters, no color grading.

Examples:

  • Vertical 9:16 selfie-style UGC running-socks review, shot on iPhone front and back camera mix, bright natural daylight, casual "showing a friend my new socks" vibe, real skin tones, no filters.
  • Vertical 9:16 ASMR unboxing of the magnesium sachets, top-down overhead camera, warm soft natural light from a window on the left, slow deliberate hands-only movements, no filters.

(b) Scene paragraph — concrete environment

Specific location, lighting source/direction, surfaces, props in frame. Avoid abstract descriptors. Ground it in a real place.

Good: A bright living room with warm window light from the left, clean wooden floor, a folded exercise mat behind her, a half-drunk water bottle on the side table.

Bad: A nice indoor space with good lighting.

(c) Subject + Product paragraph — reference tags, no visual description

  • @Image1 is the model — match face, hair, identity exactly.
  • For styled: @Image2 shows the outfit — match clothing, fabric, fit exactly.
  • For styled: name the product briefly and let the reference carry all visual detail — e.g., "She is holding @Image3, the blush stick shown in @Image3."
  • For unstyled: the model is wearing [outfit description]; name the product briefly — e.g., "The product is @Image2, the lip + cheek stick shown in @Image2."

Do NOT describe the product's visual appearance — no colors, no packaging details, no branding text, no finish descriptions. The reference image is the ground truth; adding visual descriptors will conflict with what Seedance sees in the image and produce an off-brand product render.

(d) Action sequence — multi-shot with explicit timecodes

Break duration into 3–5 timecoded beats. For 15s: 0–3s / 3–7s / 7–11s / 11–15s. For 8s: 0–2s / 2–5s / 5–8s. For 4s: 0–2s / 2–4s.

Each beat must include:

  • Camera angle/movement — "front camera close-up", "switches to back camera", "overhead top-down", "low angle from the floor", "props phone against the wall, steps back to show full body"
  • Physical action — what hands/body do with the product
  • Dialogue (in quotes) if applicable — see dialogue principles
  • Product interaction — rotate, tilt to catch light, tap, hold up to lens, fill the frame, etc.

Use the working format:

0–3s — Hook: [camera] [action]. "[dialogue]"
3–7s — Detail: [camera switch] [action] [product moment]. "[dialogue]"
7–11s — Demo / Demonstration: [camera change] [action]. "[dialogue]"
11–15s — Final: [camera] [pose] [smile/look]. "[closing line]"

(e) Dialogue principles — what makes UGC sound real, not AI-written

  • Fragmented, not polished — "Okay so —", "Wait. Wait look at this.", "I cannot stop doing this."
  • Genuine reactions over claims — describe what they see/feel, not why the product is good
  • Self-aware playfulness — "WHY is there a duck.", "Is this crazy or—"
  • Pauses and repetition — "Yeah. Yeah this is the one."
  • Showing-a-friend tone, NOT marketing — never "this product features X benefit"
  • Deadpan close — "That's it. That's the review.", "You are welcome."
  • 2–4 short lines total for a 15s clip. Less is more.
  • For unboxing / ASMR formats: dialogue is often zero — sound design carries it.
  • Tone matters more than content. Real UGC has hesitation, half-thoughts, breaths.

(f) Style closing paragraph — aesthetic + negative cues

Aesthetic line: Authentic UGC / TikTok aesthetic, real skin tones, natural iPhone HDR, slight handheld micro-shake, natural lens distortion, slight exposure shifts.

Sound:

  • If speaking: Natural voice and room tone, no music, no sound effects beyond ambient.
  • If ASMR: Crisp amplified ASMR sounds — cardboard tap, sticker peel, tissue rustle, vinyl figure lifted from foam, [other specific sounds]. No music. Pure ASMR sounds only.

Negatives (always include): No text overlays, no filters, no studio lighting, no over-processed look. The phone, camera, and any mirror reflection of a phone or hands holding a phone must never be visible.

(g) Reference tags

Place @Image1 / @Image2 / @Image3 inline where they're referenced. Seedance binds references by position (the first uploaded image is @Image1, etc.) — so the tags only need to be consistent throughout the prompt. The Python script handles the upload order automatically based on model_type.


Reference example 1 — selfie-review (15s, styled model)

Vertical 9:16 selfie-style UGC review of the puresport running socks, shot on iPhone front and back camera mix, bright natural daylight from a window, casual "showing a friend my new socks" vibe, real skin tones, no filters, no color grading.

A bright living room — warm light from the left, clean wooden floor, an exercise mat folded against the wall behind her, a water bottle on the side table.

@Image1 is the model — match her face, hair, and identity exactly. @Image2 shows the outfit she's wearing — match the clothing, fabric, fit, and styling exactly. She is holding @Image3, the running socks shown in @Image3.

0–3s — Hook: She holds @Image3 up to the front camera with one hand, the socks filling the vertical frame, her sleeve visible at the edge. She tilts them slowly so the daylight catches the fabric: "Okay, these just arrived and I am obsessed with the colour."

3–7s — Detail: Switches to the back camera. Brings @Image3 close to the lens — the neon pink and the puresport wordmark fill the frame, the cushioning texture visible. "Look at the cushion on these — it feels insane."

7–11s — Demo: Props the phone against her bag, steps back. Pulls on one sock, flexes her foot, looks up at the camera with a small laugh: "These are actually so comfortable."

11–15s — Final: Picks the phone back up. Holds @Image3 up beside her face on the front camera, smiles directly into the lens: "Yeah. Yeah these are the ones."

Authentic UGC / TikTok aesthetic, real skin tones, natural iPhone HDR, slight handheld micro-shake, natural lens distortion. Natural voice and room tone, no music, no sound effects beyond ambient. No text overlays, no filters, no studio lighting, no over-processed look. The phone, camera, and any mirror reflection of a phone or hands holding a phone must never be visible.

Reference example 2 — unboxing (15s, hands-only, no dialogue)

Vertical 9:16 ASMR unboxing of the puresport magnesium sachets, top-down overhead camera looking straight down at a light wooden desk surface, warm soft natural light from a window on the left, slow deliberate hands-only movements, no filters, no color grading.

The desk is light wood. Only hands are visible — female hands, short natural nails, sleeves of a soft sage-green knit sweater. A small ceramic plate and a folded white linen napkin sit to the upper right of the frame.

@Image1 is the model — only her hands and forearms in the sage sweater sleeves appear in frame, no face. The product is @Image2, the magnesium sachet pack shown in @Image2.

0–4s — Box reveal: The sealed magnesium box sits centered on the wooden desk. Fingers tap the lid three times — satisfying hollow cardboard thuds. Both hands grip the lid and lift it straight up slowly, revealing the foil sachets nestled inside.

4–9s — Sachet pull: One hand reaches in and slowly draws out a single magnesium sachet, holds it at center frame, rotates it gently so the foil catches the warm light. The puresport wordmark and the magnesium product name face the lens.

9–13s — Pour ritual: The sachet is torn open at the corner (satisfying crisp tear sound), tipped gently over the ceramic plate so a small mound of magnesium powder pours out, then placed beside it.

13–15s — Final: Hands withdraw. Hold the final composition — open box at top of frame, single sachet, small powder mound on the plate, warm light catching the wood grain.

Cozy ASMR unboxing aesthetic for Xiaohongshu / TikTok. Crisp amplified ASMR sounds — cardboard tap, lid lift, foil sachet handled, sachet tear, powder pour, sachet placed on wood. No music. Pure ASMR sounds only. Warm natural daylight. Slow, satisfying, tactile. No text overlays, no filters, no studio lighting. The phone, camera, and any mirror reflection of a phone or hands holding a phone must never be visible.

Notes

  • Prompt is the contract — you author it, write it to the spec, the Python script passes it through verbatim to Seedance 2.0. No Python-side prompt assembly.
  • Reference order is positional@Image1 always = headshot. For styled: @Image2 = styled body, @Image3 = product. For unstyled: @Image2 = product.
  • Defaults: 720p / 15s / 9:16 — sweet spot for cost and platform fit (~$4.50/clip at 15s 720p).
  • Each brand has its own product-ugc/ subfolder — multiple brands run independently.
  • Editable spec — power users can edit any field in product-ugc-spec.json (including prompt) and re-run the script directly.

What ships with it

Read from the repository

Just SKILL.md. No reference files, no scripts.

Keep looking

Skills are one crate of 326,452. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.