OpenClip: UGC ad generation
generate_ugc renders a short vertical UGC-style clip (roughly 7 to 12 seconds) from a creative
brief. Free accounts get ONE generation per day. Paid accounts are metered in credits by the
seconds rendered.
Renders are heavy. Expect a couple of minutes per clip, not seconds.
Setup (once)
OpenClip is a remote MCP server at https://openclip.app/mcp. Sign in with your OpenClip
account when the OAuth prompt appears, there is no API key to copy.
- Claude Code:
claude mcp add --transport http openclip https://openclip.app/mcp, then/mcpto authorize. - Claude Desktop / web: Settings, Connectors, "Add custom connector", paste the URL, sign in.
- Cursor (
.cursor/mcp.json):{ "mcpServers": { "openclip": { "url": "https://openclip.app/mcp" } } } - Header-only clients: mint an MCP token at
openclip.app/settings/connectand connect tohttps://openclip.app/mcp/keywithAuthorization: Bearer <token>.
Sanity check: call get_account.
The loop
- Discover the roster FIRST.
list_ugc_creatorsreturns the validcreatorandstart_framevalues for this team: a curated roster plus the team's own saved creators, grouped by niche. Never guess a creator name, pick one from this call. - Generate.
generate_ugc(...)with either:brief_name- a server-side preset, the fast path, orbrief- an inline object of structured creative fields (characterand friends).
- Poll. Returns a
ugc_jobhashid. Pollget_ugc_job_status(ugc_job)every 10 to 15 seconds.queued/renderingare in flight.completedreturnsvideo_urlplusresult_meta(duration, dimensions, fps, seed).failedreturnserror. - Review past work.
list_ugc_jobslists a team's previous UGC clips, and is how you find augc_jobid to poll if you lost it.
The brief is structured, not a prompt
This is the thing agents get wrong most. brief is not a prose prompt. It is an object of
discrete creative fields (character, and the other fields the API accepts). Writing a
paragraph into one field wastes the structure and produces mush.
Write each field as a concrete, physical, filmable detail:
- Name what is in frame, not how it should feel. "Holding the bottle at chest height, kitchen counter behind" beats "energetic and aspirational vibes".
- One idea per field. Do not stack three beats into
character. - Constraints produce better output than adjectives. A specific setting, a specific prop, and a specific action beat "high quality, professional, engaging".
Testing ad angles
When the user wants variations rather than one clip, change ONE variable per render so the comparison means something:
- Same creator, different hook.
- Same hook, different creator, when you are testing who lands the message.
- Same everything, different
start_frame, when you are testing the thumbnail moment.
Free accounts get one generation per day, so on a free account, spend it on the single most
different angle rather than a near-duplicate. Check get_account before promising a batch.
Rules
list_ugc_creatorsbefore every first generation in a session. The roster is team-specific and changes.- Always poll. Renders take minutes,
generate_ugcreturns immediately. - Clips are short by design, roughly 7 to 12 seconds. Do not promise a 60 second ad.
- Free tier is ONE generation per day. Say so before the user plans a batch on a free account.
result_metaincludes theseed. Keep it when the user liked a render and wants a close variant.
Errors
Tool failures come back as a tool result with isError: true and a plain-text message, not an
HTTP status. "Not authenticated. Reconnect your OpenClip token." means reconnect or re-mint
the token. Validation messages (an unknown creator, a malformed brief) come back as the message
text, fix the argument and retry.
Example prompts to actions
- "Make a UGC ad for my app" -
list_ugc_creators, pick a fitting creator,generate_ugc(brief={...}), pollget_ugc_job_status, returnvideo_url. - "Give me three angles to test" - one render per angle, one variable changed each time, poll each. Check the daily limit first on a free account.
- "Use the same girl as last time" -
list_ugc_jobsto find the previous job, read its creator, reuse it. - "What creators can I use?" -
list_ugc_creators, show them grouped by niche.
Related
Clipping real long-form footage into shorts is openclip-clipping. Free trimming, cropping, and
compression of the generated clip is openclip-video-editing.