원클릭으로
publish-to-social
// Publish a generated agent-media video to the user's connected TikTok, Instagram, or X. Connect channels (OAuth) and post or schedule via the REST API. Use after producing a video with make_ugc_video / make_simple_selfie.
// Publish a generated agent-media video to the user's connected TikTok, Instagram, or X. Connect channels (OAuth) and post or schedule via the REST API. Use after producing a video with make_ugc_video / make_simple_selfie.
Generate a 5/10/15s vertical UGC video where your character holds, wears, and shows a product. Provide a character_sheet_url (R2-hosted) and the product image (product_image_url — any https URL — OR product_image_base64; re-hosted to R2 automatically). Two modes: script for a lip-synced talking-head product review (2-4 words/sec), OR scene_action for a silent demo / b-roll. Set subject (e.g. "a young woman") to lock the person's gender/appearance so a gendered product can't drift it. framing: "close_up" (chest-up, default) or "full_body" (head-to-toe, for turn-arounds / showing the whole outfit). Both the person and the exact product are locked from the reference images.
Playbook for orchestrating an end-to-end UGC video on the agent-media vNext runtime. Read this before deciding whether to call the one-shot make_ugc_video skill or to chain the four primitives (make_portrait → make_character_sheet → make_simple_selfie → make_subtitles) manually.
Generate a 5/10/15-second vertical UGC selfie video from a character sheet. Two modes: provide a script for a lip-synced talking-head (2-4 words/sec), OR provide scene_action for a non-speech clip (dancing, b-roll, vibes) with optional background_music and no dialogue. Subject is framed waist-up, hands free, TikTok aesthetic.
Bring your own audio: lip-sync a face (an R2-hosted image / character sheet, OR an existing clip) to a provided audio track. No text-to-speech or voice cloning — the character speaks your uploaded recording. Output is a 9:16 talking-head video.
End-to-end UGC video in one call. Provide EITHER a text description of the person, OR a portrait URL (R2-hosted), OR an uploaded image. The pipeline auto-generates the missing portrait, builds a character sheet, and produces a 5/10/15s vertical selfie video with native lip-synced audio of your script.
Generate a photographic storyboard / wireframe board from a character sheet (R2-hosted) + script. Multi-panel grid showing the same person performing the action progression, 4 / 6 / 8 / 10 numbered panels.
| name | Publish to Social |
| description | Publish a generated agent-media video to the user's connected TikTok, Instagram, or X. Connect channels (OAuth) and post or schedule via the REST API. Use after producing a video with make_ugc_video / make_simple_selfie. |
| x-skill-slug | publish-to-social |
| x-skill-version | 1.0.0 |
Post a finished agent-media video (an R2 video_url from any of the video skills) to the user's connected social channels — TikTok, Instagram, or X. Works from three surfaces: REST, the CLI (agent-media social ...), and MCP tools (social_channels / social_connect / social_publish). All calls use the user's Authorization: Bearer ma_... token against https://api.agent-media.ai.
GET /v1/social/providers -> connectable networks: tiktok, instagram, instagram-standalone, x
POST /v1/social/connect { provider } -> { url } # the user opens this OAuth url and authorizes
GET /v1/social/channels -> { channels: [{ id, name, provider, profile, picture }] }
DELETE /v1/social/channels/:channelId -> disconnect
The connect step returns an OAuth URL the human must open and authorize — an agent cannot complete OAuth itself. Once authorized, the channel appears in /v1/social/channels with an id you pass to publish.
CLI: agent-media social providers · agent-media social connect x · agent-media social channels.
MCP: social_connect { provider } (returns the URL for the user) · social_channels.
curl -X POST https://api.agent-media.ai/v1/social/publish \
-H "Authorization: Bearer ma_..." -H "Content-Type: application/json" \
-d '{ "video_url": "https://pub-...r2.dev/generation-outputs/<user>/<job>/...mp4",
"channel_ids": ["<channel-id-from-/channels>"],
"caption": "made with agent-media",
"type": "now" }' # or "type":"schedule" + "date":"2026-06-01T10:00:00.000Z"
CLI: agent-media social publish --video <url> --channels <id,id> --caption "..." (add --at <iso> to schedule).
MCP: social_publish { video_url, channel_ids, caption, type }.
video_url must be an agent-media R2 URL (the output of a video skill) — agent-media re-hosts it on the publishing provider for you. channel_ids come from /v1/social/channels. Per-network requirements (e.g. X reply settings) are filled in server-side; you don't send them.
Returns { success: true, media_id, post_ids: ["..."] }. A real post was created only when post_ids is non-empty — treat an empty post_ids as a failure, not a success.
make_ugc_video (or make_simple_selfie) → final_output.video_url.video_url to the chosen channel_ids; confirm post_ids came back.Note: social operations run on a shared rate budget — don't poll; connect once and publish on demand.