workflow-ugc-automation
Claude-orchestrated batch pipeline for DawnBands AI UGC/video ads: product URL -> brand-dna.json (scripts/brand_dna.py), reference ad -> per-second dissect -> <=15 s scene prompts, one base -> N variants swapping ONE variable (hook / actor / setting / product angle / delivery) with a variants manifest, generation fan-out bound to registry ROLES behind Fish's per-batch spend go, then QA + review sheet + ad-batch-hub staging.
Lane: ugc-omni (every photoreal-people unit, gates G0-G4) / cartoon-h3 / statics / seedance b-roll, picked per format; H3 native voice (yapper) is a side arm only · not built yet: 8 (see below) · source: /Users/ayden/.openclaw/workspace/skills/workflow-ugc-automation
workflow-ugc-automation — sources
davidaistar videos (analysed in ~/research/davidaistar/)
- f83UH-qmNUs — "Claude Code + Seedance 2.0 = automated UGC" (
analysis/gemini_f83UH-qmNUs.md, analysis/ugc_seedance.md). Claude desktop (Code tab) + the Chrome extension drives StarPop: paste a product URL into "Brand DNA" (images, colours, description), drop in two markdown skill files (a 13-format UGC library + a prompt-writing skill), optionally pin an actor, Claude writes one prompt per format split into Action / Audio (voice, room tone, delivery, dialogue) / Quality, Fish-equivalent approves, Claude clicks generate in the browser (Seedance 2, 9:16, 14 s, 720p, ~18-21 credits each), watches the parallel jobs and returns URLs. Five formats from one brief: handheld selfie, one-shot UGC, cinematic short, Pixar object, podcast. His own read: Pixar and one-shot UGC strongest, cinematic short weak for DR, podcast needs a longer cut. No CPA/ROAS for these outputs.
Kept: URL → brand DNA; skill files as the standard (this skill + format skills); Action/Audio/Quality prompt blocks; "give the scene + the line, let the model improvise camera work"; longer ads as sections threaded through the same refs; one locked actor across variants; parallel multi-format test from one brief.
Changed: API entry points instead of a browser driving a SaaS UI (fragile, un-auditable, can't enforce spend gates); approval is Fish's per-batch go recorded in a manifest, not a chat click; models bound to registry roles, not "Seedance 2" by name.
- wGVBPiaFYiw (short) — the same Claude-takes-the-browser demo, five formats for one pet product. Same keep/change as f83UH.
- cPQ9e0RfiQE (short) — handheld iPhone UGC, pet supplement: believable behaviour/mannerisms are what sell the realism. Kept as a QA question ("does the person act like a real tired mom at 6:40?").
- J7k_eNpLO3o (short) — recap of a 7-ad, 3-funnel-stage static campaign: research how customers talk, let the AI improvise from a good template, control specifics in a SEPARATE step. Kept: improvise first, then one controlled pass per fix (matches cartoon-h3 rule 10 and the one-variable rule).
- 2zOlhDAOwb4 (short) — two-speaker interview UGC with correct turn attribution. Routed to
format-street-interview / format-podcast; not a lane of this workflow.
- aqo2L5wYGEg — StarPop platform walkthrough (
analysis/gemini_aqo2L5wYGEg.md, transcript txt/aqo2L5wYGEg.txt). Video analyzer (URL → stats, transcript, per-segment prompt extraction), extract frames, motion swap, bulk voice change across many clips, a static-ad template library pulled from high-converting Meta statics (the 136-template swipe file in analysis/guide_copy_images_shorts.md), selling points named in the prompt change what the image shows, product-in-hand image first so the model knows scale, variation mode (one base + N variation images, or a prompt variable like environment = kitchen/pool/bench → N outputs in one run).
Kept: analyzer → our scripts/ad_dissector.py; variation mode → variants.json with one axis per variant and prompt variables; bulk voice pass → one voice lock per actor across all units; in-hand scale ref → brand-dna unlit images + real product footage; selling points in prompts → copy.headlines + claims register feed the product-angle axis.
Changed / refused: no motion swap (registry Motion transfer role is NOT BUILT); no uncensored-model routing; no Sora-style "remix" of someone else's video.
Diffs that set the gaps
analysis/diff_ai_ugc.md row "Automation/orchestration": our gap is generality, not capability: every batch re-collects assets by hand → the reusable Brand-DNA script (built 10-06: scripts/brand_dna.py). Top-5 #2: isolate the hand/product fidelity failure on ONE shot before any lane depends on omni-reference.
analysis/diff_cloning.md: P0 dissector (built: scripts/ad_dissector.py); P1 batch_variation.py (built 10-06 as scripts/ugc_tools/batch_variation.py, scene-set variants, not image batches) + static swipe archive (NOT BUILT); competitor dissect = gap map, never a template (10-05 rule).
REPORT.md AI-UGC row: "no brand-DNA intake; segment chain is hand-built; long 80-90 s format vs his 15-30 s."
Refused outright
- Face-blur / medium-distance tricks to pass a provider's likeness filter (core §3: never work around a filter).
- Verbatim competitor or actor/demographic-swap clones (diff_cloning §2).
- AI-disclosure "don't bother" posture and China-proxy account setups.
Our receipts
- 10-06
brand_dna.py free test on https://dawnbands.com/products/dawn-morning-recovery-band: redirect to /products/dawn-wake-band, $44.99 live vs $39.99 in product-truth.md, 5 of 14 PDP images show a lit display, 1,242 reviews label, fonts Dawn Sans/Dawn Text/Inter, primary #2F4A63. Output output/brand-dna/dawn-wake-band/brand-dna.json.
- Hub draft-first + verdict API:
~/ad-batch-hub/CLAUDE.md, project_ad_batch_hub.md.
- Spend discipline:
feedback_higgsfield_credit_discipline.md (one candidate, ≤4 panels, --regen, never UI Rerun, smoke first).
- Meta safety:
feedback_meta_upload_preflight.md, feedback_meta_link_match.md; ~/.claude/CLAUDE.md "no Marketing API writes from unattended loops".
- Product/hand fidelity: yapper 10-04 band-in-hand 3-4/10 on H3 refs → real-footage composite for reveals (
project_dawn_yapper_2026-10-04).
starpop.ai articles (his written process, read 10-06; paraphrased)
- seedance-2-0-prompt-engineering-guide, how-to-use-seedance-2-0-to-make-ads, how-to-use-kling-3-0-to-make-ads:
- Changed (procedure §3 rules 5-7, schema
ref_map / seam_out): reference map with one job per asset; one action + one camera instruction per shot; same subject noun; front-load the critical instruction; ~60-100 words; positive constraint statements (no negative prompts); clean footage, text added in the editor.
- Changed (variants):
delivery axis, words fixed (both guides list delivery as its own test batch).
- Changed (QA, step 7): fixed review order (product first) and "diagnose the cause, change one variable" before a regen.
- Not adopted: the fixed "4K, cinematic texture" quality suffix on UGC units (the Kling guide itself says excess cinematic language makes UGC look like a commercial); "generate 2-4 variants and compare" (credit discipline:
--candidates 1, regens in their own call); exact second timestamps where shot order is enough (the Seedance ad guide prefers numbered shots).
- seedance-2-5-ads / top-5-ai-video-generators-realistic-ugc: judge a model or batch on usable-output rate and generations-to-publishable, not the best clip. Changed: manifest records takes to approved; review.md shows cost per approved variant including failed takes. Its "30 s master → 6/10/15/30 s cutdowns" is not adopted as an axis (runtime is a format decision, one variable per ad set).
- omni-reference-vs-start-end-frames: every seam is batched (stated transitions), chained (last frame → next start) or a chosen cut; judge an omni model on transitions. Changed:
seam_out per unit. Not adopted: last-frame chaining on photoreal people (Fish closed the yapper keyframe chain 10-05); cartoon lanes follow cartoon-h3's own batching.
- how-to-use-claude-for-ugc-ads / how-to-build-a-claude-skill-for-ads: two skills (prompt writer → browser executor), a brief-validation gate with
[assumed] flags, an explicit "go" before execution, text page reads over screenshots. Our equivalent: format skill + this workflow, hub draft + Fish's recorded go, API entry points. Not adopted: browser-driving the SaaS (already refused), his single-generation two-shot podcast (format-podcast keeps one speaker per generation).
- everything-you-need-to-know-about-seedance-2-0: extension length = the new segment, not the total; up to 12 input files with 15 s combined video/audio refs. Registry-level (Video extend role NOT BUILT); proposed note there.
- how-to-animate-a-photo-with-ai / best-ai-image-to-video-generator: tier-C i2v hygiene: the start frame already at 1080×1920 (a tool's own crop lands wrong), uncluttered frame edges (edges move most), low motion first, flicker → lower motion. Fits our tier-C units; no model changes (vendor list is marketing, not tested).
- best-ai-stack-ecommerce-paid-marketing: hypothesis matrix over cosmetic variants, don't call winners on CTR. Already our rules (core §6, one variable).