OpenClip: repurposing long-form into a content batch
This is the end-to-end workflow skill. One long video in, a set of ready-to-post vertical clips out, each with captions and copy. It stitches together the OpenClip clipping pipeline, captions, and the free media tools.
The clipping pipeline is PAID (needs an active subscription and credits). The reframing and trimming tools are free.
Setup (once)
OpenClip is a remote MCP server at https://openclip.app/mcp. Sign in with your OpenClip
account when the OAuth prompt appears, there is no API key to copy.
- Claude Code:
claude mcp add --transport http openclip https://openclip.app/mcp, then/mcpto authorize. - Claude Desktop / web: Settings, Connectors, "Add custom connector", paste the URL, sign in.
- Cursor (
.cursor/mcp.json):{ "mcpServers": { "openclip": { "url": "https://openclip.app/mcp" } } } - Header-only clients: mint an MCP token at
openclip.app/settings/connectand connect tohttps://openclip.app/mcp/keywithAuthorization: Bearer <token>.
Sanity check: call get_account and confirm credits_remaining > 0.
The workflow
Before you start, agree two things with the user: how many clips they want, and which platforms. Those two answers drive every decision below. Do not silently pick for them.
- Submit the source.
submit_video(url). Returns ajob_id, statusqueued. For a local file:create_upload, PUT the bytes, thencomplete_upload. - Poll to completion.
get_video_status(job_id)untilcompleted. A near-instantfailedmeans no active subscription.pending_creditsmeans out of credits. Say so plainly and stop, do not keep polling a terminal state. - Pull the moments.
list_clips(job_id). Sort byvirality_score(0 to 10) and take the number the user asked for. Show them the shortlist with title, hook, duration, and score BEFORE rendering anything, so they can veto. Rendering costs credits. - Caption each pick.
list_caption_presets, thenrender_clip(moment_id, caption_preset)for each approved moment. Polllist_clipsuntil every moment has arendered_clip. - Reframe if needed. The pipeline output is already short-form oriented. If the user needs a
different aspect for a specific platform, run the free
edit_video(video, operation="crop", aspect="9:16" | "1:1" | "4:5")on the rendered clip. - Hand over the batch. For each clip give: the
rendered_clipURL,title,hook,social_copy,duration_ms,virality_score, and the suggestedplatformsfield.
Platform shapes
- TikTok, Reels, Shorts - 9:16 vertical. This is the default, the pipeline targets it.
- Instagram feed - 4:5 or 1:1. Crop the rendered clip with
edit_video. - X and LinkedIn - 16:9 or 1:1 both work. Captions matter more than aspect, most of these autoplay muted.
Each moment carries a platforms field from the pipeline. Use it as a starting suggestion, not
a rule, and reconcile it with what the user actually posts to.
Sequencing and cost
- Batch the polling. Submit once, then poll
get_video_statuson a loop rather than re-submitting. - Render only the approved moments. Every
render_clipis work, do not render all ten when the user wanted three. - For a recurring workflow (same captions, same composition, same logo watermark every time),
save a processing agent with
create_agentand pass it tosubmit_video. That makes every future batch identical without re-specifying.describe_agent_settingslists every field. get_usageshows the credit balance (credits are minutes of processing) before you start a big batch. Check it when the user asks for a large number of clips.
Rules
- Always poll, every step is async.
- Rank by
virality_score, higher is better. Explain rankings withviral_score_details(hook strength, shareability, rewatchability, surprise, emotional impact). - Times are milliseconds.
- Clip URLs are permanent CDN links, not signed or expiring.
- Projects and folders are not supported. Do not promise the user a folder structure.
- Do not rewrite
social_copyinto influencer voice unless asked. It is generated to match the clip, and heavy-handed rewriting usually makes it worse.
Example prompts to actions
- "Turn this podcast into 10 TikToks" - submit, poll,
list_clips, show top 10 shortlist, get approval, render each with captions, poll, hand over the batch. - "Give me a week of content from this webinar" - same, sized to 5 to 7 clips, grouped by theme
using each moment's
category. - "Just the best one, captioned like MrBeast" - submit, poll, take the top
virality_score,render_clip(moment_id, caption_preset="beast"), poll. - "Same look as last time" - reuse the saved agent id on
submit_video.
Related
The pipeline mechanics and status handling in detail are in openclip-clipping. Caption
presets and custom caption styling are in openclip-captions. Free cropping, trimming, and
compression are in openclip-video-editing.