Install
openclaw skills install supapost-skillGenerate AI images and video, build TikTok slideshows, manage AI influencers, and schedule posts to TikTok / Instagram / YouTube / X through the Supapost MCP. Use whenever the user asks to create social content, run image-to-video, lock a character identity, or queue posts across connected accounts.
openclaw skills install supapost-skillSupapost is an end-to-end studio for AI-native content creators. This skill teaches your agent how to drive Supapost via its MCP server.
Use the vercel-labs/skills CLI to drop the SKILL.md into your coding agent's skills folder (Claude Code, Cursor, OpenCode, OpenClaw, etc.):
npx skills add supapost-dev/skills
Or download the raw file from https://supapost.so/skill.md.
Installing the skill only teaches the agent how to use Supapost. To actually call tools, connect the Supapost MCP. Create an API key at https://supapost.so/settings/developer (keys start with sp_), then pick the install for your client.
Claude Code (CLI):
claude mcp add --transport http supapost \
https://mcp.supapost.so \
--header "Authorization: Bearer sp_..."
Cursor / Windsurf / VS Code / any MCP client — add to ~/.cursor/mcp.json (or .mcp.json in the project root):
{
"mcpServers": {
"supapost": {
"url": "https://mcp.supapost.so",
"headers": { "Authorization": "Bearer sp_..." }
}
}
}
Verify the connection. After registering, call list_models once. A valid key returns a JSON list. A 401 Invalid API key means the key is wrong, expired, or missing the sp_ prefix — regenerate it at https://supapost.so/settings/developer.
Local stdio (MCP developers only): if you need to run the server locally against a custom SUPAPOST_API_URL, use the stdio package: claude mcp add supapost --env SUPAPOST_API_KEY=sp_... -- npx -y @supapost/mcp.
Reads: list_models, list_influencers, list_products, list_projects, get_project, list_scheduled_posts, list_assets, list_social_accounts, list_stores.
Writes: generate_image, generate_video, generate_slides, create_influencer, update_influencer, delete_influencer, upsert_project, delete_project, schedule_post, update_scheduled_post, delete_scheduled_post, publish_tiktok, delete_asset.
influencer_id to generate_image / generate_video to keep the character consistent across scenes.upsert_project to create or update; generate_slides creates a slides project in one call.scheduled_at as an ISO 8601 future datetime. Delivery is handled by Cloudflare Queues.generate_slides with { prompt: "<topic + angle + tone>" }.upsert_project to tweak metadata (name, status) only.Don't use
upsert_projectto author slide content from scratch. The editor stores slides as positionedlayerswith full typography and positioning metadata.generate_slidesproduces that shape correctly. Hand-rolling JSON throughupsert_projectwill save but the editor may render blank slides.
generate_image with the character description. Pick the best output.create_influencer with that image URL in images[]. The first image becomes the identity anchor.generate_image with influencer_id set. Do not restate the character in the prompt — describe scene, pose, outfit, lighting only.list_assets or generate_image).generate_video with { prompt, reference_images: [url], model: "kling-2.5-turbo-pro", duration: 5 }.list_social_accounts → find the TikTok account id.schedule_post with platform: "tiktok", social_account_id, scheduled_at (ISO 8601, future), and either a project_id (existing slide deck) or image_urls[].publish_tiktok with { account_id, image_urls, title }. This creates a TikTok draft the user reviews in the TikTok app before going live.
SUPAPOST_API_KEY into logs, files, prompts, or tool args. It lives only in the MCP env.list_influencers / list_projects / list_stores to resolve the id first.delete_*) with the user before calling.scheduled_at is in the future and in ISO 8601 with timezone (e.g. 2026-05-01T09:00:00Z).generate_image / generate_video return a job id. Surface that to the user rather than pretending the asset is ready.model unset) unless the user asks for a specific one. Use list_models to show options.The API returns { message: "..." } on failure with an HTTP status. Common cases:
401 Invalid API key — key is wrong, expired, or missing the sp_ prefix.403 No team found — key isn't linked to a team; user needs to recreate it.404 Not found — bad id, or the resource belongs to a different team.400 — validation error; surface the message verbatim.