Agent-native video editing
Connect the coding agent you already use.
Real recordings in. Launch-ready ad out.
Create a cloud Editor draft, upload recordings of your real app, and let your coding agent arrange, narrate, score, render, and download the ad. Generated scenes are optional garnish. Hubfluencer Studio on macOS is the flagship for local capture and precise editing.
Tokens live in the web app under Settings → Access tokens. Prepaid credits at $0.99 each — less in bulk — and drafts are free. The agent quotes the price and asks before it spends.
# You type
> Use Hubfluencer to turn this checkout recording into a launch ad.
# Your agent calls (creator profile — the default)
create_editor_draft({ product_prompt: "Checkout walkthrough from a real recording" })
upload_video({ slug, file_path: "./checkout.mp4" })
render({ slug })
# You get back
→ { slug: "...", ready: true,
video_url: "https://...mp4 (presigned, ~24h)",
saved_to: "./checkout.mp4" }
How it works
Three steps. One prompt. One MP4.
Connect your account
Create your account at app.hubfluencer.com and generate an access token (Settings → Access tokens, Generate videos scope) — or skip the copy-paste and run npx -y @hubfluencer/mcp@0.20.0 login.
Drafts and planning are free — buy credits ($0.99 each, less in bulk) when you're ready to render.
Add the MCP
Register the Hubfluencer MCP server with your agent — one command or a small config snippet. Pick your tool in the Quickstart below.
npx -y @hubfluencer/mcp@0.20.0 --profile creator
The creator profile keeps the high-level create, recovery, and delivery tools visible so your agent spends less context on discovery. Existing setups remain on the full profile by default.
Prompt your agent
Say “Use Hubfluencer to make a 15s ad for my candle brand” and get an MP4 back.
Drafts are free. A short renders for 15 credits (≈ $15 max), a 5-scene editor ad for ~28 (≈ $28 max) — your agent confirms the price with you first, and most renders finish in a few minutes.
Quickstart
Wire it up to your agent.
Pick your tool. Each kit registers the same @hubfluencer/mcp server and ships a concise, on-demand skill. The MCP gives your agent the tools; the skill teaches spend approval and lifecycle rules, then loads its advanced guide only when needed.
Add the MCP — one command
claude mcp add --transport stdio --env HUBFLUENCER_API_TOKEN=YOUR_TOKEN hubfluencer -- npx -y @hubfluencer/mcp@0.20.0 --profile creator
Paste it into your shell — not into a running Claude session, where it's read as a prompt instead of executed. All flags go before the server name; -- separates it from the command Claude Code runs. Use --scope project to write the server into .mcp.json at the repo root.
…or a config file
{
"mcpServers": {
"hubfluencer": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@hubfluencer/mcp@0.20.0", "--profile", "creator"],
"env": {
"HUBFLUENCER_API_TOKEN": "${HUBFLUENCER_API_TOKEN}"
}
}
}
}
Teach the agent
Install the complete on-demand skill with one command. Add --project for .claude/skills instead of your personal skill directory.
npx -y @hubfluencer/mcp@0.20.0 install-skill --client claude-code
Download the kit
Add the MCP — one command
codex mcp add hubfluencer --env HUBFLUENCER_API_TOKEN=YOUR_TOKEN -- npx -y @hubfluencer/mcp@0.20.0 --profile creator
…or a config file
[mcp_servers.hubfluencer]
command = "npx"
args = ["-y", "@hubfluencer/mcp@0.20.0", "--profile", "creator"]
[mcp_servers.hubfluencer.env]
HUBFLUENCER_API_TOKEN = "YOUR_TOKEN"
# Optional:
# HUBFLUENCER_BASE_URL = "https://hubfluencer.com"
# HUBFLUENCER_OUTPUT_DIR = "/absolute/path/where/mp4s/may/be/written"
Restart Codex after editing config.toml. Manage with codex mcp list / get / remove.
Teach the agent
Install the complete skill in Codex's shared native ~/.agents/skills/hubfluencer-create directory. Add --project for .agents/skills/hubfluencer-create in the current project. AGENTS.md is now only an optional short pointer.
npx -y @hubfluencer/mcp@0.20.0 install-skill --client codex
Download the kit
Add the MCP — config only
OpenCode has no mcp add command. Hand-edit the JSON config. Note: type is local (not stdio), and the key is environment (not env).
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"hubfluencer": {
"type": "local",
"command": ["npx", "-y", "@hubfluencer/mcp@0.20.0", "--profile", "creator"],
"enabled": true,
"environment": {
"HUBFLUENCER_API_TOKEN": "YOUR_ACCESS_TOKEN"
}
}
}
}
Goes in opencode.json (project root) or ~/.config/opencode/opencode.json. Restart OpenCode after editing.
Teach the agent
Use OpenCode's native on-demand skill directory instead of putting the full workflow in always-on AGENTS.md. Add --project for .opencode/skills.
npx -y @hubfluencer/mcp@0.20.0 install-skill --client opencode
Download the kit
Add MCP support, then the server
Pi has no native MCP — install the pi-mcp-adapter extension, then drop an mcp.json config.
pi install npm:pi-mcp-adapter
{
"mcpServers": {
"hubfluencer": {
"command": "npx",
"args": ["-y", "@hubfluencer/mcp@0.20.0", "--profile", "creator"],
"env": {
"HUBFLUENCER_API_TOKEN": "${HUBFLUENCER_API_TOKEN}"
}
}
}
}
Teach the agent
Install the concise skill and its advanced reference together. Add --project for .pi/skills; AGENTS.md is only an optional short pointer.
npx -y @hubfluencer/mcp@0.20.0 install-skill --client pi
Download the kit
One config shape, many clients
Cursor, Windsurf, Claude Desktop and most other MCP clients accept the same mcpServers block:
{
"mcpServers": {
"hubfluencer": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@hubfluencer/mcp@0.20.0", "--profile", "creator"],
"env": {
"HUBFLUENCER_API_TOKEN": "${HUBFLUENCER_API_TOKEN}"
}
}
}
}
-
Cursor
—
.cursor/mcp.jsonin the project, or ~/.cursor/mcp.json globally. -
Windsurf
—
~/.codeium/windsurf/mcp_config.json -
Claude Desktop
—
claude_desktop_config.jsonvia Settings → Developer → Edit config.
Field names occasionally differ between clients (env vs environment) — check your tool's MCP docs if the server doesn't appear.
Teach the agent
Grab the plain-Markdown guidance and drop it wherever your tool reads instructions — a rules file, project notes, or the system prompt. API.md is the same reference the skills consult.
Download the kit
Tool reference
What the agent can call.
| Tool | What it does | Credits |
|---|---|---|
create_editor_draft |
Create an empty editor timeline for real recordings. Default creator-profile start. | 0 |
upload_video |
Upload your own video clip and drop it onto the timeline as a scene. | 0 |
render |
Render the timeline. Footage-only projects are 0 credits; ungenerated AI scenes charge at render. | 0+ |
make_video |
Full profile only: creates a synthetic draft, quotes it, generates, polls and downloads. | 15+ |
create_short |
Create a short draft from a prompt. | 0 |
generate_short |
Render a short draft. | 15 |
create_editor_ad |
Create a multi-scene editor ad draft for story prompts. | 0 |
cancel_autopilot |
Stop exactly the Autopilot attempt observed in generation_summary; the tool forwards its run/start fence and keeps completed work. | 0 |
cancel_segment_generation |
Cancel one individually generated scene with its claim token and refund its charge. | refund |
set_product |
Attach a product photo as the identity reference for every generated AI scene; its description grounds the story and the exact image becomes the closing shot unless you set another. | 0 |
set_logo |
Overlay your brand logo on the finished video. | 0 |
set_closing_image |
Set a custom end-card image — upload one or reuse the product shot. | 0 |
get_status |
Check current status, including real per-clip progress while a paid short renders. | 0 |
wait_for_completion |
Poll until the render finishes; call it again if it times out mid-wait. | 0 |
download_result |
Download the finished MP4 from its presigned (~24h) URL. | 0 |
list_renders |
List every render version with status, download/thumbnail URLs, duration, freshness, and retryability. | 0 |
retry_render |
Re-run a failed render from its saved snapshot. | 0 |
list_voices |
List voice-over voices and their verified languages. | 0 |
get_credits |
Read the current credit balance before spending. | 0 |
list_projects |
List the account's recent video projects. | 0 |
The default creator profile starts with real footage: create_editor_draft, upload_video, then render. make_video and shorts live on --profile full. A footage-only render is 0 credits; generated scenes and a short render spend credits (a credit is $0.99, less in bulk) — quote first.
Bringing your own media is free: upload_video drops your footage onto the timeline, and set_product / set_logo / set_closing_image add your brand. Beyond this curated set, the MCP also exposes the full granular editor — scenario, per-scene prompts, narration, voice and music — so the agent can direct an ad end to end. See the @hubfluencer/mcp tool list for everything.
How it works
Record the real app. Let your coding agent edit.
Hubfluencer Studio captures display, window, region, or the iOS Simulator. Connect the coding agent you already use. Cloud editor ads and shorts stay on --profile full as the no-Mac escape valve.
Capture
Record the real product on a Mac. Local editing is free; credits meter only third-party ingredients (voice, music, AI garnish).
Connect
Device-link or a Generate-videos token. Agent tokens are video:read + video:generate — never account:admin.
Edit
create_editor_draft → upload_video → optional voice/music → render. That is the default creator profile.
Deliver
wait_for_completion then download_result. Review links and the reminder calendar stay available when you need a client or a posting date.
Campaign packs, series, tracking, and make_video remain in the API and on --profile full. They are not the Connect-your-agent default.
Auth & credits
Prepaid credits, scoped tokens.
You buy credits and create access tokens in the app — $0.99 a credit, less in bulk. Nothing crypto here — just a balance and a bearer token. The agent quotes the cost and asks before it spends; you stay in control.
Access tokens
Created in the app under Settings → Access tokens. The agent scope is labelled “Generate videos” =
video:generate
+ video:read. Agent tokens never get account:admin.
Environment variables the server reads:
-
HUBFLUENCER_API_TOKEN— required (unless logged in) -
HUBFLUENCER_BASE_URL— optional, defaulthttps://hubfluencer.com -
HUBFLUENCER_OUTPUT_DIR— optional, confines where MP4s may be written
Connect with no copy-paste
Run npx -y @hubfluencer/mcp@0.20.0 login. It prints a URL and a short code; you approve the connection in the signed-in app. A scoped token is saved to
~/.hubfluencer/credentials.json
and the server picks it up automatically — so you can omit HUBFLUENCER_API_TOKEN entirely.
npx -y @hubfluencer/mcp@0.20.0 login
The agent never invents a token and never echoes one in its output.
Failure handling
-
402— credits_insufficient: report required vs available, then stop (no loop). -
409— already running: keep polling, do not restart. -
403— insufficient_scope: the token lacks video:generate. - Retries: send an Idempotency-Key on generate calls so a retry can't double-charge.
Credits
- Draft & plan — free (plus 20 AI assists/day)
- Render a short — 15 credits (≈ $15 max)
- 5-scene editor ad — ~28 credits (≈ $28 max; preflight the exact cost)
A credit is $0.99, less in bulk — prepaid in the app. The skills have the agent quote the cost and get your go-ahead before spending.
Out of scope
Publishing to TikTok / Instagram needs a human-linked social account. The agent never auto-publishes — it returns the finished MP4 plus a ready-to-paste caption so you post it yourself.
Direct REST — no MCP
Prefer raw HTTP? Go for it.
Base URL is
https://hubfluencer.com, everything lives under /api, and you authenticate with
Authorization: Bearer <token>. Three requests take a short from prompt to MP4: create the draft, start the render, then follow generation_summary timing and available actions until download_result is advertised.
Every external endpoint, with parameters and example responses — no token needed to read it. The raw OpenAPI spec is linked from there too.
For Editor and Short, generation_summary is lifecycle authority: follow generation_summary.timing.poll_after_ms, invoke only generation_summary.available_actions, and use product projections as display metadata or explicit route fences only. Fetch the artifact only when download_result is advertised.
# 1. Create an editor draft (0 credits) — language is required; response includes the slug
curl -X POST https://hubfluencer.com/api/editor \
-H "Authorization: Bearer $HUBFLUENCER_API_TOKEN" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: editor-draft:checkout" \
-d '{"language": "en", "product_prompt": "Checkout walkthrough from a real recording"}'
# 2. Upload recordings (0 credits) via MCP upload_video, or POST /api/editor/SLUG/uploads/presign → PUT → confirm.
# 3. Render (0 credits when every scene is already footage).
curl -X POST https://hubfluencer.com/api/editor/SLUG/render \
-H "Authorization: Bearer $HUBFLUENCER_API_TOKEN" \
-H "Idempotency-Key: editor-render:SLUG"
FAQ
Questions, answered.
How long does a render take?
A few minutes for most shorts; multi-scene autopilot runs can take longer. Poll only while generation_summary.timing.poll_after_ms is positive, using the exact server cadence; null means stop and follow an advertised action.
What does a video cost in real money?
A credit is $0.99 — less when bought in bulk (packs and subscriptions). A short is 15 credits (up to ~$15), a 5-scene editor ad ~28 (up to ~$28) — drafts, planning and 20 AI assists a day are free, and the skills have your agent confirm the price with you before rendering.
Watermarks or usage restrictions?
No watermarks — the MP4 you download is the final asset, ready to post. You keep the rights to everything you upload.
Can I run it headless — CI, cron, a bot?
Yes. Auth is a plain env-var Bearer token, every feature is REST underneath, and the MCP server is a stateless npx process — anything that speaks MCP or HTTP works.
Where do I get help?
The Discord is the fastest lane — or email contact@hubfluencer.com. Bug reports and feature requests about the MCP kits are especially welcome.