akcodez/ugc-video-auto
Full UGC ad video pipeline — generates a character image on Higgsfield, then creates a Seedance 2.0 video from it. Orchestrates the complete flow from image prompt to finished UGC video. Use when the user wants to create a UGC ad video end-to-end, or wants to take a generated image from Higgsfield's image tab into video creation. Triggers on "create a UGC video", "make a UGC ad", "UGC pipeline", "turn this into a UGC video", or any request combining image generation with video creation for ads/UGC content. Requires Playwright MCP tools.
npx skills add https://github.com/AKCodez/higgsfield-claude-skills --skill ugc-video-auto
This skill orchestrates the complete UGC ad video pipeline on Higgsfield: generate a character image → select it for video → add a UGC video prompt → generate a Seedance 2.0 video. All automated via Playwright.
Step 1: Generate character image → /image/soul-v2
Step 2: Navigate to video page → /create/video?model=seedance_2_0
Step 3: Select image from gallery → Upload dialog → "Image Generations" tab
Step 4: Write UGC video prompt → Lexical editor (contenteditable)
Step 5: Configure & generate → Click Generate
ToolSearch before first useThe user provides:
/ugc-hot-girl to generate one)Optional overrides:
browser_navigate → url: "https://higgsfield.ai/image/soul-v2"
Wait for page load, take a snapshot.
Find the textbox (Playwright ID: hf:tour-image-prompt, placeholder: "Describe the scene you imagine"):
browser_click → ref: <textbox_ref>, element: "Image prompt textbox"
browser_type → ref: <textbox_ref>, text: "<character image prompt>"
If the user hasn't provided an image prompt, use /ugc-hot-girl to generate one first.
Find the Generate button (shows "Generate XXXX free gens left"):
ASK USER FOR CONFIRMATION — this uses credits/free generations.
browser_click → ref: <generate_button_ref>, element: "Generate button"
browser_wait_for → time: 20
Take a screenshot. Verify the new image appears as the first item in the History grid. Confirm by checking the first grid element's innerHTML contains an <img> tag with a fresh asset URL.
browser_navigate → url: "https://higgsfield.ai/create/video?model=seedance_2_0"
Wait for page load, take a snapshot. Confirm "Seedance 2.0" appears in the Model button.
Find the upload area — look for generic [cursor=pointer] containing:
paragraph: Upload mediaparagraph: Image, Video or Audiobrowser_click → ref: <upload_area_ref>, element: "Upload media area"
This opens a dialog with tabs: Uploads, Image Generations, Video Generations, Elements, Liked.
browser_click → ref: <image_gen_tab_ref>, element: "Image Generations tab"
Look for button "Image Generations" in the dialog's tab bar.
The most recently generated image is the first item in the grid.
It initially appears as a button "Check eligibility". Click it:
browser_click → ref: <first_image_ref>, element: "First image (most recent generation)"
After clicking, the button transforms into a generic [cursor=pointer] with an image preview and a green checkmark — meaning it's selected and eligible.
Important: The first "Check eligibility" button in the list is always the most recent image. After clicking, its ref disappears from the snapshot and is replaced by a new generic element.
browser_press_key → key: "Escape"
Take a snapshot. Verify:
generic [cursor=pointer] with nested image elements (48px thumbnails)paragraph: Upload media and paragraph: Image, Video or Audio are goneThe video page uses a Lexical rich text editor (contenteditable div), NOT a standard textbox. To clear it:
browser_evaluate → function: "() => { const el = document.querySelector('[data-lexical-editor]'); el.focus(); el.click(); }"
browser_press_key → key: "Control+a"
browser_press_key → key: "Backspace"
Take a snapshot. The textbox should now show the placeholder: "Describe your scene in detail. Use @ to reference assets"
After clearing, take a snapshot to get the fresh textbox ref. Then type slowly (required for the Lexical editor):
browser_type → ref: <textbox_ref>, text: "<UGC video prompt>", slowly: true
UGC Video Prompt Templates (pick based on style):
Testimonial / Talking Head:
The woman from @image1 is talking directly to camera with natural hand gestures, warm golden hour lighting, casual authentic vibe. She speaks enthusiastically, leaning in slightly for emphasis. Soft bokeh background, shallow depth of field. Natural skin texture, realistic lip movement, TikTok UGC testimonial style. Smooth handheld camera, 24fps.
Product Showcase:
The woman from @image1 holds up a product toward the camera, turning it to show different angles. Excited genuine expression, eyes wide. Ring light illumination, clean background. She points at the product features, nodding enthusiastically. Close-up selfie framing, iPhone-quality video, authentic UGC feel.
Reaction / Unboxing:
The woman from @image1 opens a package with excited anticipation, pulling out a product and reacting with genuine delight. Surprised expression, mouth open, then breaking into a wide smile. Natural bedroom lighting, casual setting. Handheld camera feel, authentic unboxing energy, TikTok style.
Before/After:
The woman from @image1 starts looking skeptical, touching her face doubtfully. Then she applies a product, and her expression transforms to amazement, touching her skin in disbelief. Soft ring light, bathroom mirror setting. Split-feel transformation moment, genuine reaction, UGC testimonial.
Lifestyle / Day-in-the-Life:
The woman from @image1 walks through a bright modern space, casually interacting with a product as part of her routine. Natural morning light, relaxed movement, authentic candid energy. Camera follows with gentle tracking, shallow depth of field. Aspirational but relatable lifestyle content.
Default settings work well for most UGC:
To change ratio for TikTok vertical:
browser_click → ref: <ratio_button_ref>, element: "Ratio selector"
Then select "9:16" from the dropdown.
Take a screenshot showing the final form state.
ASK USER FOR CONFIRMATION — video generation costs more credits than images.
The Generate button shows credit cost (e.g., "Generate 30 20"):
browser_click → ref: <generate_button_ref>, element: "Generate video button"
After clicking Generate:
/image/soul-v2)| Element | Pattern |
|---|---|
| Prompt textbox | textbox with ID hf:tour-image-prompt |
| Model selector | group > button containing "Soul 2.0" |
| Aspect ratio | button showing "3:4" |
| Resolution | button showing "2k" |
| Generate button | button "Generate XXXX free gens left" |
| First result | First generic child in the History grid |
/create/video)| Element | Pattern |
|---|---|
| Upload area (empty) | generic [cursor=pointer] with paragraph: Upload media |
| Upload area (filled) | generic [cursor=pointer] with nested image thumbnails, no "Upload media" text |
| Upload dialog | dialog with tab bar: Uploads, Image Generations, etc. |
| Image Generations tab | button "Image Generations" in dialog |
| First image in gallery | First button "Check eligibility" in dialog grid |
| Selected image | generic [cursor=pointer] with nested img (replaces Check eligibility button) |
| Prompt editor | [data-lexical-editor] contenteditable div |
| Prompt textbox (in snapshot) | textbox [active] after focusing the Lexical editor |
| Model button | button "Model" containing "Seedance 2.0" |
| Duration button | button "Duration" |
| Ratio button | button "Auto Ratio" |
| Resolution button | button "720p Resolution" |
| Generate button | button "Generate XX XX" with credit cost |
! open https://higgsfield.ai)browser_evaluate to clear innerHTMLUser: "Create a UGC ad video with a hot girl promoting my new skincare serum"
1. Invoke /ugc-hot-girl → generates beauty/skincare image prompt:
"Attractive young woman, early 20s, clear dewy skin, dark brown hair in
messy bun... ring light illumination... photorealistic, 4K..."
2. Phase 1 — Image Generation:
→ Navigate to /image/soul-v2
→ Type the image prompt
→ Confirm with user → Click Generate
→ Wait 15-20s → Image appears in grid ✓
3. Phase 2 — Video Creation:
→ Navigate to /create/video?model=seedance_2_0
→ Click upload area → Image Generations tab
→ Click first image (Check eligibility) → Escape
→ Image loaded into form ✓
→ Clear old prompt → Type UGC testimonial prompt:
"The woman from @image1 holds up a small serum bottle, examining it
with genuine curiosity. She applies a drop to her fingertip, touches
her cheek, and her expression lights up with delight..."
→ Set ratio to 9:16 for TikTok
→ Confirm with user → Click Generate
→ Video generating... done ✓
4. Report: "Your UGC video is ready! Check the History tab."
| Step | Skill | What it does |
|---|---|---|
| 1 | /ugc-hot-girl | Generates the character image prompt |
| 2 | /higgsfield-image-auto | Automates just the image generation step |
| 3 | /seedance-auto-generate | Automates just the video generation step (from local file) |
| Full | /ugc-video-auto | This skill — runs the entire pipeline end-to-end |
You can use the individual skills separately, or invoke /ugc-video-auto to run everything in one go.
Take akcodez/ugc-video-auto from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.