For developers & vibe coders
Ship video from your terminal.
Your agent writes the ad. You post the MP4.
Connect the Hubfluencer MCP to your coding agent and turn a single prompt into a finished, post-ready ad — or bring your own footage, product shots and logo for the agent to edit in. You keep the credits and access tokens in the app; the agent just makes the video.
Tokens live in Settings → Access tokens. Prepaid credits — no crypto, nothing to mine.
> Use Hubfluencer to make a 15s ad for my candle brand.
make_video({ prompt: "...", save_path: "./candle-ad.mp4" })
→ { slug: "...", kind: "editor", terminal: true, ready: true,
video_url: "https://...mp4 (presigned, ~24h)",
saved_to: "./candle-ad.mp4" }
How it works
Three steps. One prompt. One MP4.
Connect your account
In the app, buy credits and create an access token (Settings → Access tokens, Generate videos scope). Or run npx -y @hubfluencer/mcp login to connect with no copy-paste.
Add the MCP
Register the Hubfluencer MCP server with your agent — one command, or a small config snippet.
npx -y @hubfluencer/mcp
Run this in a normal terminal — not inside a Claude or agent session, where a nested agent runs the line as a prompt and the server never gets registered.
Prompt your agent
Say “Use Hubfluencer to make a 15s ad for my candle brand” and get an MP4 back.
Creating a draft is free. Rendering a short costs 15 credits; multi-scene editor ads cost more.
Quickstart
Wire it up to your agent.
Pick your tool. Each kit registers the same @hubfluencer/mcp server and ships a ready-made skill so the agent knows how to drive it.
Add the MCP — one command
claude mcp add --transport stdio --env HUBFLUENCER_API_TOKEN=YOUR_TOKEN hubfluencer -- npx -y @hubfluencer/mcp
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"],
"env": {
"HUBFLUENCER_API_TOKEN": "${HUBFLUENCER_API_TOKEN}"
}
}
}
}
Teach the agent
Drop the skill at .claude/skills/hubfluencer-create/SKILL.md (project, committed) or ~/.claude/skills/… (personal). The directory name becomes the /hubfluencer-create command.
Download the kit
Add the MCP — one command
codex mcp add hubfluencer --env HUBFLUENCER_API_TOKEN=YOUR_TOKEN -- npx -y @hubfluencer/mcp
…or a config file
[mcp_servers.hubfluencer]
command = "npx"
args = ["-y", "@hubfluencer/mcp"]
[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 skill at ~/.codex/skills/hubfluencer-create/SKILL.md (personal) or .codex/skills/… (project). For always-on guidance, paste the AGENTS.md section into ~/.codex/AGENTS.md or the repo root.
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"],
"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
OpenCode reads a plain-Markdown AGENTS.md at the project root (or ~/.config/opencode/AGENTS.md). Drop the Hubfluencer usage section in there.
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"],
"env": {
"HUBFLUENCER_API_TOKEN": "${HUBFLUENCER_API_TOKEN}"
}
}
}
}
Tool reference
What the agent can call.
| Tool | What it does | Credits |
|---|---|---|
make_video |
One-shot: prompt in, finished MP4 out. Creates, 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 |
upload_video |
Upload your own video clip and drop it onto the timeline as a scene. | 0 |
set_product |
Attach your product photo so it features across the AI scenes. | 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 a project's current stage / status. | 0 |
wait_for_completion |
Poll until a render finishes. Call again on terminal:false. | 0 |
download_result |
Download the finished MP4 from its presigned (~24h) URL. | 0 |
list_renders |
List every render version with its status and download URL. | 0 |
retry_render |
Re-run a failed render from its saved snapshot. | 0 |
list_voices |
List available voice-over voices. | 0 |
get_credits |
Read the current credit balance before spending. | 0 |
list_projects |
List the account's recent video projects. | 0 |
make_video is the one-shot path. A short render is 15 credits; multi-scene editor ads cost more — preflight with GET /api/editor/:slug/autopilot/cost.
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.
Auth & credits
Prepaid credits, scoped tokens.
You buy credits and create access tokens in the app. Nothing crypto here — just a balance and a bearer token. The agent 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 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 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.
Credits
- Create a draft — 0 credits
- Render a short — 15 credits
- Multi-scene editor ad — more (preflight the cost)
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>. A short is a two-call path: create, then generate, then poll until the stage is video_ready.
Every external endpoint, with parameters and example responses — no token needed to read it. The raw OpenAPI spec is linked from there too.
# 1. Create the draft (0 credits) — response includes the slug
curl -X POST https://hubfluencer.com/api/shorts \
-H "Authorization: Bearer $HUBFLUENCER_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"product_prompt": "15s ad for my candle brand"}'
# 2. Start the render (15 credits)
curl -X POST https://hubfluencer.com/api/shorts/SLUG/generate \
-H "Authorization: Bearer $HUBFLUENCER_API_TOKEN"
# 3. Poll until stage == "video_ready", then read latest_render.video_url
curl https://hubfluencer.com/api/shorts/SLUG \
-H "Authorization: Bearer $HUBFLUENCER_API_TOKEN"