agentsclimarketplace

Make ugc

Skill gitroomhq/agent-media/skills/make-ugc

The ONE tool for UGC video. Give a `script` (any length) and optionally a `person` description, an `image` (photo), or a `character` (saved char_… or sheet URL); it returns the finished vertical video. Short script → one clip; long monologue → full multi-take (never trimmed); pass `broll_url` → narrated b-roll overlay. Captions are OPT-IN — ASK the user if they want them (and which style) before generating; set `captions:true` only if they say yes. You never pick a sub-tool.From its SKILL.md

Install
npx -y skills add gitroomhq/agent-media --skill make-ugc

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

SKILL.md

6.0 KB, as published. Nobody here has run it

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:

{ "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:

{ "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:

{ "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:

{ "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.

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

GET https://api.agent-media.ai/v1/skills/runs/<skill_run_id>
Authorization: Bearer $AGENT_MEDIA_API_KEY

Returns per-step status + current_step; final_output.video_url is your finished MP4 when status is succeeded.

Keep the user posted — don't go silent. A video takes a few minutes: a new person runs portrait → character sheet → the video (→ captions if asked); reusing a saved person skips straight to the video. When you submit, tell the user the plan + a rough ETA, then poll and report each current_step as it changes (e.g. "building the character sheet…", "rendering the video…", "adding captions…") so they always know what's happening.

House rules

Source of truth

Auto-generated by scripts/generate-public-skill.ts from services/api-v2/src/skills/registry.ts. Do not hand-edit; CI rejects drift.

Keep looking

Skills are one crate of 627,801. 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.