ClipUGC

Official registry Media and design

UGC videos for your app with AI influencers who keep the same face. Hosted (OAuth) or local.

Install

Add this to your client's MCP configuration (Claude Desktop: claude_desktop_config.json; Cursor: .cursor/mcp.json; VS Code and others use the same "mcpServers" shape).

Remote (streamable-http)
Claude Code
claude mcp add --transport http clipugc 'https://clipugc.com/mcp'
JSON configuration (Claude Desktop, Cursor, VS Code)
{
    "mcpServers": {
        "clipugc": {
            "type": "http",
            "url": "https://clipugc.com/mcp"
        }
    }
}
NPM package clipugc
Claude Code
claude mcp add clipugc -e 'CLIPUGC_API_KEY=<your clipugc_api_key>' -e 'CLIPUGC_API_BASE_URL=<CLIPUGC_API_BASE_URL>' -- npx -y clipugc@1.4.2 mcp
JSON configuration (Claude Desktop, Cursor, VS Code)
{
    "mcpServers": {
        "clipugc": {
            "command": "npx",
            "args": [
                "-y",
                "clipugc@1.4.2",
                "mcp"
            ],
            "env": {
                "CLIPUGC_API_KEY": "<your clipugc_api_key>",
                "CLIPUGC_API_BASE_URL": "<CLIPUGC_API_BASE_URL>"
            }
        }
    }
}

Environment variables

  • CLIPUGC_API_KEY secret ClipUGC API key from the dashboard (API Keys). Optional when `clipugc auth login` was run on this machine.
  • CLIPUGC_API_BASE_URL Override the API base URL (default https://clipugc.com/api/v2). Only for self-hosted or local instances.

Documentation

From the project's README on GitHub, refreshed weekly. Links open on GitHub.

Contents
  1. ClipUGC CLI
  2. Use it with Claude Code
  3. Hosted MCP server: Claude.ai, ChatGPT, Claude Code, Cursor, VS Code, Gemini CLI
  4. Local MCP server (API key): Claude Code, Cursor, Claude Desktop
  5. What it produces
  6. How it works
  7. Quickstart (plain CLI)
  8. Example prompts
  9. How it compares
  10. Documentation
  11. Local development
  12. Privacy Policy
  13. License

ClipUGC CLI

ClipUGC makes UGC videos for mobile apps with an AI influencer who keeps the same face in every video, with your app's screen recording inside the finished 9:16 video. This repo is its official CLI, local MCP server and Claude Code plugin. Create AI influencers, generate photorealistic looks of the same person, turn them into silent-reaction clips, and put your app recording into a ready-to-post UGC video. Nothing renders locally.

Three ways in:

You work inConnect withPlan
Claude.ai, ChatGPT, Claude Code, Cursor, VS Code, Gemini CLIThe hosted MCP server, https://clipugc.com/mcp. Sign in, no API key. SetupFree plan works
A terminal or your own scriptsnpm install -g clipugc and an API keyProfessional or Business
Claude Code skills/plugin marketplace add clipugc/ClipUGC-CLI (below)Same as the CLI

The hosted server is also the quickest free start: give it an App Store or Google Play link and its first_videos tool makes three finished videos at no cost.

npm install -g clipugc
clipugc auth login

Requires Node.js >= 20. Create an API key in the ClipUGC dashboard (API keys section). API keys are available on paid plans (Professional and Business). The hosted MCP server needs no key.

Use it with Claude Code

The fastest way in: this repo ships three Claude Code skills, so you describe what you want instead of learning flags. clipugc drives the CLI conversationally, ugc-director turns an app idea into a complete UGC video plan, and persona-account runs an ongoing AI creator account.

/plugin marketplace add clipugc/ClipUGC-CLI
/plugin install clipugc@ClipUGC-CLI

Installed as a plugin, the skills are namespaced under it:

/clipugc:ugc-director make a TikTok video for my habit tracker app
/clipugc:persona-account create an AI influencer for a fitness account
/clipugc:clipugc how many credits do I have left

(Cloning the repo instead? Claude Code reads .claude/skills/ directly and the skills are unprefixed, /ugc-director, /persona-account, /clipugc.)

See docs/skills.md for what each skill knows.

Prefer flags? Everything below works standalone, the skills just drive the same CLI.

Hosted MCP server: Claude.ai, ChatGPT, Claude Code, Cursor, VS Code, Gemini CLI

These use the hosted ClipUGC server at https://clipugc.com/mcp (39 tools, OAuth 2.1 sign-in, works on every plan including free). Nothing runs on your machine and there is no API key to copy: the first call opens a browser so you can sign in with your ClipUGC account.

Claude Code

claude mcp add --transport http clipugc https://clipugc.com/mcp

Claude.ai: Settings > Connectors > Add custom connector. Name it ClipUGC, paste https://clipugc.com/mcp, and sign in when Claude asks.

ChatGPT: Settings > Apps (Connectors on older versions) > Advanced > turn on Developer mode > Create. Name ClipUGC, the same URL, authentication OAuth. Developer mode is on Plus and Pro and not yet offered in the EEA, Switzerland or the UK. Step-by-step guide.

Gemini CLI

gemini extensions install https://github.com/clipugc/ClipUGC-CLI

This adds the hosted server, a short guide (GEMINI.md) and the skills.

Cursor

Once the ClipUGC plugin is listed in the Cursor Marketplace, install it there to get the server and the skills. Until then, add the server by hand in Settings > MCP or .cursor/mcp.json:

{
  "mcpServers": {
    "clipugc": {
      "url": "https://clipugc.com/mcp"
    }
  }
}

VS Code (GitHub Copilot agent mode)

code --add-mcp '{"name":"clipugc","type":"http","url":"https://clipugc.com/mcp"}'

Or search @mcp clipugc in the Extensions view once it shows up in the gallery.

Local MCP server (API key): Claude Code, Cursor, Claude Desktop

Listed on the MCP Registry and Smithery.

The CLI is also a local MCP server with 12 tools, for when you would rather run it on your machine with an API key than sign in to the hosted one. clipugc mcp speaks the Model Context Protocol over stdio, so any MCP client can create characters, looks, clips and finished videos as tools, without shelling out to the commands above.

Log in once so the server has a key (it reads the same ~/.config/clipugc/config.json the CLI uses):

npm install -g clipugc
clipugc auth login

Claude Code

claude mcp add clipugc -- npx -y clipugc@latest mcp

@latest matters: without it npx reuses any clipugc already installed on your machine, and a global install older than 1.2.0 has no mcp command, so Claude Code reports "Connection closed". If you still see that, update the old install with npm i -g clipugc@latest, or run npx -y clipugc@latest mcp once in a terminal so the download finishes (Ctrl+C after "12 tools ready"). Do not add it from inside a checkout of this repo: there npx resolves clipugc to the local project instead of the npm package.

Cursor (Settings > MCP, or .cursor/mcp.json in your project)

{
  "mcpServers": {
    "clipugc": {
      "command": "npx",
      "args": ["-y", "clipugc@latest", "mcp"]
    }
  }
}

If you would rather not run clipugc auth login on that machine, add an env block with CLIPUGC_API_KEY set to a key from the dashboard.

Claude Desktop

Claude Desktop installs the server as an extension, so there is no config file to edit and no Node install needed beyond the app itself:

  1. Download clipugc.mcpb from the latest GitHub release.
  2. Double-click the file, or open Claude Desktop, go to Settings > Extensions, and choose Install Extension (Advanced settings on some versions).
  3. Paste your ClipUGC API key when asked. Create one in the dashboard under API Keys.

The extension runs the same clipugc mcp server as above. To build the bundle yourself, run npm run build:mcpb (see "Local development").

Prompts: make_ugc_video, new_ai_influencer, hook_ideas (ready-made starts for the common jobs). Resources: clipugc://pipeline (the order of calls) and clipugc://pricing (documented credit costs; get_credits has the live table).

Tools: list_characters, create_character, generate_image, list_images, create_clip, create_motion_clip, create_scene_replace_clip, merge_ad, get_video, download_video, get_credits, list_hooks. Arguments follow the CLI flags (--per-page becomes per_page). Generation tools return the job id right away, like the CLI without --wait; poll with get_video (clips and finished videos) or list_images (looks) until the status is completed. Every tool reports its credit cost in its description, and get_credits returns the live prices.

What it produces

One character, cast once. Every picture below is the same person, only the setting, outfit and lighting change, because each look is generated from the character's base image rather than from the description again:

clipugc characters create --wait \
  --description "Very pretty Danish woman aged 22, light blonde fine hair to her shoulders with a middle parting, pale blue upturned eyes, heart-shaped face, porcelain cool-toned skin. Genuinely attractive Instagram-creator look, but reads as a real girl, natural skin texture with visible pores, not airbrushed." \
  --scene "close selfie in a softly lit bedroom at golden hour, warm low sun through the window behind her giving a rim light on her hair, full glam makeup with smoky bronze eyeshadow and glossy nude lips, phone-camera quality with mild grain, slightly off-centre framing"

# every look after that: same face, new setting, never re-describe the person
clipugc images generate --character <id> --wait \
  --scene "bathroom mirror selfie in the evening, phone visible in her hand, warm vanity lights either side of the mirror, polished makeup with glowing skin and glossy lips, phone-camera quality with grain, slightly off-centre framing"

Then any look becomes a silent reaction clip. Mouth closed throughout, lip-sync from a still image is the giveaway that a video is AI, so the format is a held expression plus a text hook, not talking:

clipugc videos create --image <lookId> --duration 5 --wait \
  --prompt "She glances down at the phone, back up to the lens, and one corner of her mouth pulls into a smirk she is clearly trying to suppress. Her lips stay closed and together for the entire clip. She does not speak, does not mouth any words, and her mouth never opens. Natural handheld movement, she shifts slightly, hair moves. Ordinary phone-camera footage, visible grain."

Note the shape of that prompt: an arc in beats (glance down → back up → smirk forms), an explicit no-talking clause, and ambient motion. Ask for a state instead of a progression, "she smirks", and the face morphs. The full library of ~30 reactions across nine emotion families lives in the ugc-director skill.

Adding your screen recording and a hook to that clip is free, so the last step costs nothing and you can test as many hooks as you like.

How it works

StepCost
1Cast an AI character: described in plain words; the server builds a structured appearance "DNA" and the first look2 credits
2Generate looks: the same face in new settings, outfits and lighting2 credits each
3Animate a look: a short silent reaction clip (mouth closed; lip-sync is what makes AI video look fake)7 (5s) / 13 (10s)
4Finish the video: your screen recording + a hook text overlay + optional musicfree

Every look after the first is generated from the character's base image, so the face stays the same person across an entire campaign or grid. That consistency is the point of the product.

Full pricing: image 2 · clip 7 (5s) / 13 (10s) · motion control 3 per second of driver video, 2 on --engine wan (capped at 30s) · putting your AI influencer into your own video (videos replace) 3 per second (capped at 30s) · scene-staged clip 9 (5s) / 15 (10s) · finished video free. Charges are duration-aware and refunds return the exact amount charged. Check live values with clipugc credits.

Quickstart (plain CLI)

# 1. Cast the AI influencer. Be specific, this is what decides whether it looks
#    like a real creator or like generic AI. (See the casting guide for the formula.)
clipugc characters create --wait \
  --description "Very pretty Danish woman aged 22, light blonde fine hair to her shoulders with a middle parting, pale blue upturned eyes, heart-shaped face, porcelain cool-toned skin. Genuinely attractive Instagram-creator look, but reads as a real girl, natural skin texture with visible pores, not airbrushed." \
  --scene "close selfie in a softly lit bedroom at golden hour, warm rim light on her hair, full glam makeup with winged liner and glossy lips, natural skin texture, amateur front-camera phone quality, headroom above her head for text"

# 2. Animate the look into a 5s silent reaction.
clipugc videos create --image <lookId> --duration 5 --wait \
  --prompt "Handheld selfie framing, slight drift. Her expression gradually shifts from neutral to amazed, eyebrows rise, eyes widen, lips part slightly in a silent gasp, then she breaks into a delighted grin and holds it, looking straight into the camera. Hair moves subtly. No talking."

# 3. Add your app recording and a hook. Free, so test as many hooks as you like.
clipugc videos merge <videoId> --app-video ./screenrec.mp4 --hook "nobody talks about this app" --wait

# 4. Download the finished video by its own id (merged_video_id), not the clip id.
clipugc finished download <videoId> -o ugc-video.mp4

Add --json to any command for machine-readable output, and --wait to any generation command to poll with a spinner until it completes.

Example prompts

The prompt is the product. Below is one of each kind; the full libraries are in docs/casting.md (9 nationalities) and the ugc-director skill (~30 reactions across 9 emotion families).

Casting: concrete features → an explicit attractiveness claim → directed makeup and lighting → a realism anchor. All four parts, or the result looks like AI:

Blonde Scandinavian: the fastest way to see what this tool does

clipugc characters create --wait \
  --description "Very pretty Danish woman aged 22, light blonde fine hair to her shoulders with a middle parting and natural movement, pale blue upturned eyes, heart-shaped face, porcelain cool-toned skin, soft pink lips, gentle jawline. Calm, faintly teasing expression. Genuinely attractive Instagram-creator look, but reads as a real girl, natural skin texture with visible pores, not airbrushed." \
  --scene "close selfie in a softly lit bedroom at golden hour, warm low sun through the window behind her giving a rim light on her hair, full glam makeup with winged liner, long lashes and glossy lips, natural skin texture, amateur front-camera phone quality, headroom above her head for text"

Russian: ash-blonde, high broad cheekbones, cool and reserved

clipugc characters create --wait \
  --description "Very pretty Russian woman aged 22 from Moscow, ash-blonde straight hair below her shoulders with a middle parting, cool grey-blue almond eyes set wide apart, high broad cheekbones, straight narrow nose, fair cool-toned skin, medium lips with a defined cupid's bow, fine straight brows. Reserved, slightly aloof expression that warms when she smiles. Strikingly attractive Instagram-creator look, yet unmistakably a real person, natural skin texture with visible pores, not airbrushed." \
  --scene "close selfie in a softly lit bedroom at golden hour, warm low sun behind her giving a rim light on her hair, soft glam makeup with winged liner and a nude glossy lip, natural skin texture, amateur front-camera phone quality, headroom above her head for text"

Ukrainian: honey-brown, soft oval face, warm and open

clipugc characters create --wait \
  --description "Very pretty Ukrainian woman aged 21 from Kyiv, honey-brown hair with a soft natural wave past her shoulders, warm green eyes with a gentle upturn, soft oval face with a rounded chin, light golden-toned skin, full lips, softly arched brows, a small mole above her lip. Warm, open, easy-smiling energy. Genuinely attractive Instagram-creator look that reads as a real girl, natural skin texture with visible pores, not airbrushed." \
  --scene "front-camera phone selfie by a large window in a bright apartment, soft diffused daylight on her face, plants blurred behind, everyday makeup with fluffy brows and a glossy lip, natural skin texture, amateur phone quality, headroom above the head for text"

Looks: never re-describe the person; the base image carries the face. Change only the setting, outfit and light:

clipugc images generate --character <id> --wait \
  --scene "mirror selfie in a bathroom in the evening, phone visible in her hand, warm vanity lights either side of the mirror, polished makeup with glowing skin and blush, natural skin texture, amateur phone quality, headroom above the head for text"

clipugc images generate --character <id> --wait \
  --scene "sitting in the driver's seat of a parked car in daylight, seatbelt on, daylight through the windscreen, natural skin texture, amateur phone quality, headroom above the head for text"

Reactions: an arc in beats, a held ending, ambient motion, and an explicit no-talking clause every time:

Smirk: "I know something you don't"

Handheld selfie framing with tiny natural wobble. She looks directly into the camera, one eyebrow raises slightly, a knowing smirk slowly spreads across her face, and she nods slowly twice, lips closed, holding eye contact the entire time. Hair moves subtly. No talking, mouth stays closed.

Jaw-drop: the result reveal

Handheld selfie framing, slight drift. Her expression gradually shifts from neutral to amazed, eyebrows rise, eyes widen, lips part slightly in a silent gasp, then she breaks into a delighted grin and holds it, looking straight into the camera. Hair moves subtly. No talking.

Dreamy cheek-rest: the soft beat a persona grid runs on

Nearly static selfie framing with subtle handheld drift. She rests her cheek against her palm, elbow anchored, eyes softening as a slow warm closed-mouth smile spreads, gaze drifting slightly off camera then returning to the lens, holding it. Hair moves subtly. No talking.

Head-shake: "why did nobody tell me"

Handheld selfie framing, slight wobble. She exhales through her nose, shakes her head slowly with a rueful closed-mouth smile, briefly glances up at the ceiling, then back into the camera with an amused resigned look, holding it. Hair follows the motion naturally. No talking.

Hooks: the text burned over the clip. A new hook on the same clip is free, so ship 2-3 variants of every video and let the platform pick:

nobody talks about this app
why did nobody tell me
I stopped paying for 4 apps
POV: you finally organised your week

How it compares

ClipUGC is one of several ways to make UGC-style videos from an AI agent. Two dated comparisons, written by us and with a "skip it if" for each tool, ClipUGC included:

In short: pick ClipUGC when you want one AI influencer with the same face across every video and your app on screen, made from a terminal or a chat, from $14.99 a month with a free plan to start. It does not post for you and has no product-page-to-video flow for online shops.

Documentation

GuideWhat's in it
Casting promptsThe four-part formula behind a good-looking influencer, plus ready-made castings, Scandinavian, Californian, Mediterranean, Korean, Russian, Ukrainian, Polish, Moldovan, Czech
Promoting your appThe end-to-end UGC video walkthrough, hook A/B testing, and who to cast for which app category
Command referenceEvery command and flag, with credit costs
ConfigurationConfig file, environment variables, exit codes
Claude Code skillsDrive all of this in natural language instead of by flag

Local development

npm ci
npm run build     # compile TypeScript to dist/
npm test          # run the vitest suite
npm run dev       # run from source (tsx src/index.ts)
npm run build:mcpb  # build the Claude Desktop extension: dist-mcpb/clipugc.mcpb
                    # also writes dist-mcpb/clipugc-smithery.mcpb for `smithery mcp publish`

manifest.json and icon.png at the repo root describe the Claude Desktop extension. The build script stages dist/, package.json and a production-only node_modules/ in dist-mcpb/stage/, validates the manifest and packs the bundle. Its version, name and tool list must match package.json and the MCP server; the tests check that.

Privacy Policy

This CLI and the Claude Desktop extension do not collect anything themselves. There is no analytics, no telemetry and no crash reporting in the code.

What leaves your machine: your prompts and tool arguments, the files you choose to upload (photos, app screen recordings, driver videos) and your API key. They are sent only to clipugc.com over HTTPS, and only to run the request you made. The API key is stored in ~/.config/clipugc/config.json (CLI) or in Claude Desktop's extension settings, and is never sent anywhere else.

How the ClipUGC service stores and handles that data, including retention and the AI providers it uses to render videos, is described in the ClipUGC privacy policy: <https://clipugc.com/privacy-policy?utm_source=github-readme&utm_medium=integration&utm_campaign=agent-directories>;.

Questions or deletion requests: <clipugc@gmail.com>.

License

MIT

Frequently asked questions

What is ClipUGC?

UGC videos for your app with AI influencers who keep the same face. Hosted (OAuth) or local.

How do I install ClipUGC?

It runs as a remote server. In Claude Code: claude mcp add --transport http clipugc 'https://clipugc.com/mcp'. For other clients, paste the JSON configuration from this page into their MCP settings.

Does ClipUGC need an API key?

Yes. It expects CLIPUGC_API_KEY, which you set in its configuration.

Is ClipUGC open source?

Yes. Its code is on GitHub under the MIT license.

Who maintains ClipUGC?

It is published by clipugc. AI.tn lists it but does not maintain or endorse it.

From the official MCP Registry. Listing is not an endorsement: review a server's code and permissions before giving it access to your data.