# Make UGC video Human Guide

## What This Is For
End-to-end UGC video in one call. It gives the agent a clearer input/output frame for content production: what context to ask for, what decisions to make, and what usable artifact to return.

Use this as a human-readable version of the Make UGC video agent skill. It is meant for marketers, operators, founders, and other non-coders who want the workflow without reading agent-specific implementation instructions.

## When To Use This
- Use this when you need a repeatable process for make UGC video.
- Use this when the task needs judgment, examples, constraints, or a clear output format rather than a one-off prompt.
- Use this when you want to hand an AI assistant enough context to produce a usable marketing artifact.

## When Not To Use This
- Do not use this when you only need a quick factual answer.
- Do not use this when the work depends on private data you cannot share with the assistant.
- Do not use this as a replacement for legal, compliance, financial, or medical review.

## What You Need Before Starting
- The goal or business outcome you want.
- The audience, customer segment, or market context.
- Any source material the assistant should respect, such as notes, briefs, examples, URLs, or brand guidance.
- Constraints such as tone, length, channel, deadline, region, or approval requirements.
- A clear definition of what a good final answer should look like.

## Step-By-Step Workflow
1. State the job clearly: "Use the Make UGC video guide to help me with..."
2. Add context: audience, goal, offer, channel, source material, and constraints.
3. Ask the assistant to identify missing inputs before producing the final output.
4. Have the assistant follow the skill-specific guidance below.
5. Review the result against the final checklist and ask for revisions where needed.

## Skill-Specific Guidance
- **Short line** → one clean talking-head clip.
- **Full monologue** (any length) → a seamless multi-take video, **never trimmed to fit a clip**.
- **`broll_url`** → the person narrates over your b-roll / gameplay / product footage.
- `script` — the spoken line, **any length**. A sentence becomes one clip; a paragraph becomes the full multi-take video. Never trimmed.
- `scene_action` — a silent clip instead (dancing, b-roll, vibes). Requires a `character`.
- `person` — describe them in words, e.g. `"a 25-year-old woman with curly red hair"`.
- `image` — a photo of the person: a public `https` URL **or** base64. The face is locked to it.
- `character` — reuse a saved character: its `char_…` id (from `list_characters`) **or** its `character_sheet_url`.
- `name` — optional name/age/vibe hint, e.g. `"Sophia, 28"`.
- `captions` — off unless set true (ask first, above); `caption_style` (`hormozi` | `tiktok` | `minimal`)
- `look` (`natural` | `commercial` | `raw_iphone`), `aspect_ratio` (`9:16` | `1:1`)
- `broll_url` — an `https` video overlaid on the lower half while they narrate.

## Decision Points And Nuance
The original skill emphasizes: Inputs, Examples, Reuse the same person across a session, How to call it, Cost & timing, Polling the result, House rules, Source of truth, Supporting file: reference/auth.md, Without the CLI.

Use these questions to steer the work:
- What is the intended audience or buyer?
- What source material must be preserved?
- What should the assistant optimize for: clarity, persuasion, accuracy, speed, creativity, or conversion?
- What examples represent the desired quality bar?
- What should the assistant avoid?

## Common Mistakes
- You give a `script` and (optionally) who says it — agent-media picks the pipeline, the take count, and the duration for you. You NEVER pick a sub-tool:
- **Full monologue** (any length) → a seamless multi-take video, **never trimmed to fit a clip**.
- `script` — the spoken line, **any length**. A sentence becomes one clip; a paragraph becomes the full multi-take video. Never trimmed.
- A full monologue from a saved character — multi-take, never trimmed:
- See [reference/pacing.md](../../reference/pacing.md) — you don't manage pacing; make_ugc sizes every take to the words.
- Auto-generated by `scripts/generate-public-skill.ts` from `services/api-v2/src/skills/registry.ts`. Do not hand-edit; CI rejects drift.

## Copy-And-Paste Prompt
```text
Use the Make UGC video human guide.

My goal:
[Describe the business outcome]

Audience:
[Describe who this is for]

Context and source material:
[Paste notes, examples, links, or existing copy]

Constraints:
[Tone, length, channel, timeline, must-include items, must-avoid items]

Before producing the final output, ask me for any missing information that would materially improve the result.
```

## Final Checklist
- [ ] The output matches the original goal.
- [ ] The audience and context are reflected in the answer.
- [ ] Important constraints and source material were preserved.
- [ ] The assistant made the relevant decisions explicit.
- [ ] The final artifact is ready to use, review, or hand to the next person.

## Source
This guide was generated from the gitroomhq/agent-media skill entry for `make-ugc`.

## Source Skill Notes
These notes preserve the nuance from the original skill. Use them as supporting reference when the workflow above feels too generic.

# Agent-Media UGC Video

**One tool. One call. A finished, captioned, vertical UGC video.**

You give a `script` and (optionally) who says it — agent-media picks the pipeline, the take count, and the duration for you. You NEVER pick a sub-tool:

- **Short line** → one clean talking-head clip.
- **Full monologue** (any length) → a seamless multi-take video, **never trimmed to fit a clip**.
- **`broll_url`** → the person narrates over your b-roll / gameplay / product footage.

## Inputs

**What they say** — exactly one of:
- `script` — the spoken line, **any length**. A sentence becomes one clip; a paragraph becomes the full multi-take video. Never trimmed.
- `scene_action` — a silent clip instead (dancing, b-roll, vibes). Requires a `character`.

**Who says it** — optional, pass at most one (omit → a default person is generated):
- `person` — describe them in words, e.g. `"a 25-year-old woman with curly red hair"`.
- `image` — a photo of the person: a public `https` URL **or** base64. The face is locked to it.
- `character` — reuse a saved character: its `char_…` id (from `list_characters`) **or** its `character_sheet_url`.
- `name` — optional name/age/vibe hint, e.g. `"Sophia, 28"`.

> A **long monologue** or a **`broll_url`** review needs a real face — pass `image` or `character`, not just `person`.

**Captions are OPT-IN — do NOT add them on your own.** First ASK the user whether they want captions and which `caption_style` (`hormozi` | `tiktok` | `minimal`); set `captions:true` only if they say yes, otherwise leave it off.

**Look & format** — all optional:
- `captions` — off unless set true (ask first, above); `caption_style` (`hormozi` | `tiktok` | `minimal`)
- `look` (`natural` | `commercial` | `raw_iphone`), `aspect_ratio` (`9:16` | `1:1`)
- `broll_url` — an `https` video overlaid on the lower half while they narrate.
- `duration` — leave blank; length is inferred from the script. Set only to force a short clip.

## Examples

A quick clip from a text description:
```json
{ "script": "Honestly? This app saved my whole morning routine.", "person": "a friendly young woman, soft daylight" }
```

A full monologue from a saved character — multi-take, never trimmed:
```json
{ "script": "Okay I have to be honest with you for a second. Three months ago I was completely overwhelmed … (the entire monologue, as long as you like) … and that is your sign.", "character": "char_8f3ac210" }
```

From a photo of a real person:
```json
{ "script": "Wait — you have to see what this actually does.", "image": "https://example.com/face.jpg", "name": "Maya, 27" }
```

A narrated b-roll / gameplay review:
```json
{ "script": "Watch this play — this is where the whole match turns around.", "broll_url": "https://example.com/clip.mp4", "character": "char_8f3ac210" }
```

## Reuse the same person across a session

After a video finishes, the character is **saved** — `GET /v1/characters` lists it with a `character_id` (`char_…`) and a `character_sheet_url`. For the NEXT video in the same task, pass that as `character` instead of a new `person`: it keeps the exact same face, and it's faster + cheaper because it reuses the existing portrait + character sheet rather than re-making them (the character sheet is never skipped — it's reused). Only generate a NEW person when the user asks for a different one. **If you're not sure whether they want the same person or a new one, ASK the user before generating.**

## How to call it

Preferred path: MCP tool `mcp__agent-media__make_ugc`. The full schema is auto-published via `tools/list`; the fields above are the manual.

Fallback path: REST.
```http
POST https://api.agent-media.ai/v1/skills/make_ugc/run
Authorization: Bearer $AGENT_MEDIA_API_KEY
Content-Type: application/json
Idempotency-Key: <any unique string per intent>

{ "script": "Okay this completely changed how I work — I plan my whole week in ten minutes now.", "character": "char_8f3ac210" }
```

## Cost & timing

- Credits: `route-dependent: ~190–505 for a short clip; priced per-take for a long monologue or b-roll review`
- Wall time (typical): `360–1400s`
- Deducted as each take runs.

## Polling the result
