Make realistic AI videos of yourself, with your own face and voice, from inside OpenClaw. Powered by Promoat.
Install
openclaw plugins install clawhub:@promoat/openclaw-promoatAI Clone Videos for OpenClaw
Make realistic AI videos of yourself, with your own face and voice, without a camera. Describe the video, approve the price, and your agent delivers a finished vertical video. Powered by Promoat, and it runs on your own Promoat account.
Before you start
You need OpenClaw with a model provider already set up (openclaw onboard or openclaw configure), and a Promoat account with credits. The model's own cost is billed by your model provider. Videos are paid for with your Promoat credits.
Install
Current stable OpenClaw:
openclaw plugins install clawhub:@promoat/openclaw-promoat
Newer builds with ClawHub-default support:
openclaw plugins install @promoat/openclaw-promoat
OpenClaw asks you to review and approve a third-party plugin's declared capabilities before it installs. For this plugin that is its tools (the 11 always-on tools, plus 13 opt-in ones).
Set up
- Get an API key from the Promoat dashboard at https://platform.promoat.ai. It starts with
pmat_. - Give the key to the plugin, then enable it:
openclaw config set plugins.entries.promoat.config.apiKey pmat_your_key_here
openclaw plugins enable promoat
The key is stored in your OpenClaw config. It is never part of the plugin package, and the plugin reads it from nowhere else.
How a video gets made
Ask your agent for a video. It follows the same steps every time:
- Estimate.
estimate_videoprices the request. The agent shows you the credits it will cost next to your balance. - Confirm. Nothing is charged until you approve that price.
- Queue.
create_videoqueues the job and returns a job id at once. It passes the approved price asexpected_credits, and the call is refused without it. - Poll. A video can take from a couple of minutes up to about 25 minutes. The agent calls
get_jobuntil the job iscompletedorfailed. - Deliver. You get the video link, or the error code if it failed.
Edits (fix_scene, edit_script, fix_sound) work the same way: ask for a quote with dry_run, approve it, then run it.
Tools
Always on:
| Tool | What it does |
|---|---|
estimate_video | Price a video without queueing it |
create_video | Queue a video (spends credits, needs an approved estimate) |
create_character | Create a character from selfies or a description |
clone_voice | Create a voice from samples, or pick a studio voice |
list_voices | List your voices |
get_balance | Credit balance and usage |
get_job | Poll a job until it finishes |
get_scenes | The scenes of a finished video |
fix_scene | Fix one scene (makes a new video) |
edit_script | Give scenes new lines (makes a new video) |
fix_sound | Put a new voice take on a video (makes a new video) |
Opt-in tools. These are off until you allow them. Add the plugin to your tool allowlist additions (use tools.alsoAllow, not tools.allow, which replaces OpenClaw's defaults):
openclaw config set tools.alsoAllow '["promoat"]'
list_characters, get_character, delete_character, regenerate_character, list_voice_presets, delete_voice, reclone_voice, synthesize_speech, create_first_frame, plan_scenes, list_assets, get_asset, list_jobs.
Buying credits is not part of the plugin. Top up from the dashboard.
Settings
| Setting | Required | Notes |
|---|---|---|
apiKey | yes | Your Promoat API key (pmat_...). Marked sensitive. |
What it sends
The plugin talks to one server only: https://promoat-platform-plugins.vercel.app/mcp. Each tool call sends your Promoat API key (as a bearer token) and that tool's arguments to it, and shows you what comes back. The plugin makes no other network requests: no analytics, no model calls, no downloads.
Safety
- One key acts as one Promoat account, and the plugin never reaches any other.
- Paid tools refuse to run without an approved quote.
- Errors from Promoat come through with their
error_codeandmessageunchanged.
Development
npm install
npm test # unit tests, no network
npm run test:contract # free calls against the live server (needs PROMOAT_TEST_KEY in .env.local)
npm run build # compiles src/ to dist/
npm pack # the package that gets published
Requires Node 24.16 or newer.
