agentsclimarketplace

Ugc video

Skill xainflow/skills/skills/official/ugc-video

Create UGC-style video ads with AI-generated creators showcasing products. Builds a complete workflow with character creation, script writing, and video generation.From its SKILL.md

Install
npx -y skills add xainflow/skills --skill ugc-video

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

10.6 KB, ~2.6k tokens by cl100k_base, as published. Nobody here has run it

UGC Video Creator

Create an authentic UGC (User Generated Content) video ad workflow. UGC videos feature a creator naturally showcasing a product with casual, authentic energy — like a real person recommending something they love on TikTok or Instagram Reels.

Phase 1: Collect Inputs

Adapt to what the user already has. Ask one thing at a time.

Product

Ask the user for their product. Accept any of:

  • An existing asset from their library (use xainflow_list_assets to browse)
  • A file path or URL to a product image
  • A text description (you will generate the product image later)

If the user provides a text description only, note that you will need to generate a product image using xainflow_generate_image before building the workflow.

Character / Creator

Ask the user if they have a character/creator image or want one generated.

  • If they have one: accept an existing asset, file path, or URL
  • If they want one generated: ask for a brief description (age, gender, ethnicity, style, setting). You will generate it using xainflow_generate_image with a detailed prompt for a realistic person looking at camera in a casual setting.

Orientation

Ask the user what format they want:

  • 9:16 (vertical) — TikTok, Instagram Reels, YouTube Shorts (recommended for UGC)
  • 16:9 (landscape) — YouTube, ads
  • 1:1 (square) — Instagram feed

Default to 9:16 if they do not specify.

Brief

Ask the user about their product:

  • Product name and what it is
  • Key selling points (2-3 max)
  • Target audience
  • Tone: casual/fun, professional, excited, calm
  • Any specific phrases or CTAs they want included

Phase 2: Script Generation

Write a UGC video script based on the brief. UGC scripts sound natural and unscripted.

Script Guidelines

Intro (hook) — 2-4 seconds:

  • Start with a casual hook that grabs attention
  • Examples: "Okay so I have to tell you about this...", "I just found the best [product category]...", "POV: you finally discover [benefit]..."
  • Must feel spontaneous, not rehearsed

Product showcase — 4-8 seconds:

  • Naturally introduce the product
  • Show genuine enthusiasm, not salesy pitch
  • Mention 1-2 key benefits conversationally
  • Examples: "Look at this packaging though...", "And the best part is...", "I've been using it for a week and honestly..."

Present to User

Show the script to the user with clear labels:

INTRO: "[hook text]"
PRODUCT: "[product showcase text]"

Ask if they want to edit anything. Iterate until they approve.

Phase 3: Generate Missing Assets

If the user needs a character or product image generated:

Character Generation

Use xainflow_generate_image with:

  • model: gemini-pro (highest quality for realistic people)
  • aspect_ratio: match the chosen orientation (9:16, 16:9, or 1:1)
  • prompt: Detailed description of a real person. Include:
    • Physical appearance (age, features, hair)
    • Clothing style (casual, trendy — matches UGC aesthetic)
    • Setting (home, kitchen, bathroom, outdoors — wherever product is used)
    • Expression (genuine smile, excited, natural)
    • Camera: medium close-up, looking at camera, natural lighting
    • IMPORTANT: Do NOT mention any product in the character prompt
  • save_to_gallery: true

Show the generated character to the user. Ask if they want to regenerate or proceed.

Product Generation (if needed)

Use xainflow_generate_image with:

  • model: gemini-pro
  • aspect_ratio: 1:1 (product shots work best square)
  • prompt: Clean product photo on simple background
  • save_to_gallery: true

Phase 4: Build Workflow

Use xainflow_create_workflow with a complete flow_state containing all nodes and edges.

Workflow Name

Name it: "UGC - [Product Name]" (e.g., "UGC - Organic Ketchup")

Required Nodes

Build the workflow with these nodes. Positions assume 9:16 orientation — adjust group widths if landscape.

Use the user's chosen orientation for ratio (imageGenerator) and videoRatio (videoGenerator).

Use the user's chosen orientation to determine video duration:

  • Short scripts (under 15 words): "4" seconds
  • Medium scripts (15-30 words): "6" seconds
  • Long scripts (30+ words): "8" seconds

GROUPS (7 groups):

IDLabelPositionSize (w x h)Color
group-charactersCharacters(470, 30)1650 x 550cyan
group-inputInput(150, 700)450 x 380yellow
group-initial-videoInitial Video(470, 700)1950 x 550green
group-objectObject(150, 1370)450 x 380yellow
group-message-objectMessage Object(150, 1850)450 x 380yellow
group-image-objectImage Object(470, 1370)1650 x 550blue
group-video-objectVideo Object(2250, 1370)700 x 550green

All groups: zIndex: -1, fontSize: "lg"

NODES inside groups:

IDTypeParent GroupPosition (relative)Key Data
asset-characterassetgroup-characters(40, 80){ assetType: "character", selectedAsset: { file_url: "[CHARACTER_URL]" }, output: "[CHARACTER_URL]" }
prompt-char-descpromptGeneratorgroup-characters(400, 80){ prompt: "[DETAILED_CHARACTER_DESCRIPTION]", expandEnabled: true }
img-characterimageGeneratorgroup-characters(1000, 80){ model: "gemini-3-pro-image-preview", ratio: "[ORIENTATION]", numberOfResults: 1, imageSize: "2K" }
prompt-intropromptGeneratorgroup-input(40, 80){ prompt: "[INTRO_SCRIPT]", expandEnabled: false }
comp-initialcompositiongroup-initial-video(40, 80){ name: "Initial Video Composition" }
img-initialimageGeneratorgroup-initial-video(500, 80){ model: "gemini-3-pro-image-preview", ratio: "[ORIENTATION]", numberOfResults: 1, imageSize: "2K" }
vid-initialvideoGeneratorgroup-initial-video(1100, 80){ videoModel: "seedance-1.5-pro", videoDuration: "[DURATION]", videoResolution: "720p", videoRatio: "[ORIENTATION]", audioEnabled: true, mode: "image-to-video" }
asset-productassetgroup-object(40, 80){ assetType: "product", selectedAsset: { file_url: "[PRODUCT_URL]" }, output: "[PRODUCT_URL]" }
prompt-productpromptGeneratorgroup-message-object(40, 80){ prompt: "[PRODUCT_SCRIPT]", expandEnabled: false }
comp-productcompositiongroup-image-object(40, 80){ name: "Product Composition" }
img-productimageGeneratorgroup-image-object(600, 80){ model: "gemini-3-pro-image-preview", ratio: "[ORIENTATION]", numberOfResults: 1, imageSize: "2K" }
vid-productvideoGeneratorgroup-video-object(40, 80){ videoModel: "seedance-1.5-pro", videoDuration: "[DURATION]", videoResolution: "720p", videoRatio: "[ORIENTATION]", audioEnabled: true, mode: "image-to-video" }

Edges

SourceSource HandleTargetTarget Handle
asset-characterasset-outputcomp-initialasset-input-slot-1
prompt-char-descprompt-outputimg-characterprompt-input
asset-characterasset-outputimg-characterasset-input-slot-char
prompt-introprompt-outputcomp-initialprompt-input
img-characterimage-outputcomp-initialasset-input-slot-2
comp-initialcomposition-outputimg-initialcomposition-input
img-initialimage-outputvid-initialfirst-frame-input
prompt-introprompt-outputvid-initialprompt-input
asset-characterasset-outputcomp-productasset-input-slot-3
asset-productasset-outputcomp-productasset-input-slot-4
prompt-productprompt-outputcomp-productprompt-input
comp-productcomposition-outputimg-productcomposition-input
img-productimage-outputvid-productfirst-frame-input
prompt-productprompt-outputvid-productprompt-input

Character Description Prompt

Write a detailed visual description of the character for the prompt-char-desc node. This prompt is used to generate a high-quality reference image. Include:

  • Physical appearance matching the character asset
  • Setting/environment where the UGC video takes place
  • Clothing and styling
  • Natural pose and expression
  • Lighting (natural, warm, casual)
  • DO NOT mention any product

Video Prompt Guidelines

When setting prompts for video nodes:

  • Include explicit motion (action verbs with direction/tempo)
  • Include camera movement (slow pan, dolly, tracking shot, steadicam)
  • With first frame (image-to-video): DON'T re-describe what's visible. Focus on what MOVES and HOW
  • Motion verbs: billows, flutters, sways, cascades, drifts, sweeps, blooms, ripples
  • For 4-5s: 1 action + 1 camera move
  • For 6-10s: 2 beats (start → change)
  • No meta-language ("a video of"), no filler ("beautiful", "stunning")
  • Include speech in quotes for audio-enabled videos

Phase 5: Summary & Execution

Show Summary

Before executing, show the user:

UGC Video Workflow Summary:
- Character: [description or asset name]
- Product: [product name]
- Script:
  INTRO: "[intro text]"
  PRODUCT: "[product text]"
- Format: [9:16 / 16:9 / 1:1]
- Video model: Seedance 1.5 Pro (720p, with audio)
- Estimated credits: ~300-500

The workflow will generate:
1. Character reference image (150 cr)
2. Character intro image (150 cr)
3. Intro video clip (~48-96 cr)
4. Character + product image (150 cr)
5. Product video clip (~48-96 cr)

Ask for confirmation before executing.

Execute

Use xainflow_execute_workflow with the workflow_id.

Important: Video nodes are ASYNCHRONOUS. After execution:

  1. Image nodes will complete immediately — report their results
  2. Video nodes will return generation_id — tell the user videos are processing
  3. Wait ~60 seconds, then poll each video with xainflow_get_video_status(generation_id)
  4. Keep polling every 30 seconds until all videos complete or fail
  5. Report final results with video URLs

Output

Save all generated assets to the output-folder ("UGC Videos"). Create the folder if it does not exist using xainflow_manage_folders.

Present final results:

UGC Video Complete!

Generated assets:
- Character image: [link]
- Intro video: [link] ([duration]s)
- Product composite image: [link]
- Product video: [link] ([duration]s)

Total credits used: [amount]

What ships with it

Read from the repository

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

Keep looking

Skills are one crate of 325,949. 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.