opusclip

Installation
SKILL.md

OpusClip

Turn long-form videos into short clips via the OpusClip API.

Prerequisites

CLI Quick Reference

Run the bundled CLI at scripts/opusclip. All commands output JSON.

opusclip submit --url URL [options]           Submit video for clipping (alias: create-project)
opusclip list --project ID [--summary]        List clips (alias: get-clips)
opusclip describe --project ID --clip CID     Get clip details (transcript, layout info)
opusclip storyboard --project ID --clip CID   Generate 2x2 frame preview (requires ffmpeg)
opusclip trim --project ID --clip CID --start S --end E  Local trim (requires ffmpeg)
opusclip preview --project ID [--output PATH] Generate HTML preview and open in browser
opusclip share --project ID                   Share project (alias: share-project)
opusclip templates                            List brand templates
opusclip upload --file PATH [options]         Upload local video + create project
opusclip collections <sub> [options]          Manage collections
opusclip censor <sub> [options]               Censor profanity in clips
opusclip post <sub> [options]                 Social posting (publish, schedule, generate copy)

submit

Alias: create-project

opusclip submit --url "https://youtube.com/watch?v=..." [options]
Flag Description
--url (required) Video URL
--model ClipBasic (talking-head) or ClipAnything (diverse)
--prompt Custom clipping prompt (ClipAnything only)
--keywords Comma-separated topic keywords (ClipBasic only)
--aspect portrait (default), landscape, square
--durations Target clip lengths in seconds, e.g. "30,60"
--range-start / --range-end Clip only a portion (seconds)
--template Brand template ID
--genre Video genre hint
--lang Source language code
--title Video title metadata
--webhook Webhook URL for completion notification
--skip-curate Process original video without AI curation
--remove-filler Remove filler words

upload

Same flags as submit plus --file PATH. Handles the full 4-step GCS upload flow automatically.

list

Alias: get-clips

opusclip list --project PROJECT_ID
opusclip list --project PROJECT_ID --summary
opusclip list --collection COLLECTION_ID
Flag Description
--project Project ID to fetch clips for
--collection Collection ID to fetch clips for
--summary Output condensed JSON with title, description, hashtags, scores, duration, and preview/export URLs (instead of full raw response)

When presenting clips to the user, always use --summary to get human-readable fields (title, description, hashtags, scores). Display clips with their title and description rather than just clip IDs.

The output contains project_id and clip_id as separate fields. Use clip_id (e.g. 0RiWBs5xuF) for --clip flags, not the composite ID.

preview

Generate an HTML preview page with video players for all clips and open it in the browser.

opusclip preview --project PROJECT_ID
opusclip preview --project PROJECT_ID --output /path/to/output.html
opusclip preview --collection COLLECTION_ID
Flag Description
--project Project ID
--collection Collection ID
--output Custom output path (default: /tmp/opusclip-preview-{id}.html)

The preview page shows clips sorted by score with inline video players, titles, descriptions, hashtags, and detailed AI scores (hook, coherence, connection, trend). Use this whenever the user wants to watch or preview their clips.

share

Alias: share-project

opusclip share --project PROJECT_ID
Flag Description
--project (required) Project ID

collections

opusclip collections list
opusclip collections create --name "NAME"
opusclip collections delete --id ID
opusclip collections export --id ID
opusclip collections add-clip --id COL_ID --content-id PROJECT_ID.CLIP_ID
opusclip collections remove-clip --id COL_ID --content-id PROJECT_ID.CLIP_ID

Collections can be exported (download links) but cannot be shared publicly. To share clips publicly, use share --project on the project instead.

censor

opusclip censor create --project PID --clip CID [--beep]
opusclip censor status --job JOB_ID

Statuses: QUEUEDPROCESSINGCONCLUDED / FAILED

describe

Get structured information about a clip. Use this to understand clip content without watching the video.

opusclip describe --project PROJECT_ID --clip CLIP_ID
opusclip describe --transcript --project PROJECT_ID --clip CLIP_ID
opusclip describe --layout --project PROJECT_ID --clip CLIP_ID
Flag Description
--project (required) Project ID
--clip (required) Clip ID
--transcript Show only transcript text
--layout Show only layout/framing info

Without --transcript or --layout, shows both. Use --transcript when you need to understand what was said. Use --layout to check current framing before suggesting layout changes.

storyboard

Generate a 2x2 frame grid image from a clip's preview video. Requires ffmpeg.

opusclip storyboard --project PROJECT_ID --clip CLIP_ID
opusclip storyboard --project PROJECT_ID --clip CLIP_ID --output /path/to/output.jpg
Flag Description
--project (required) Project ID
--clip (required) Clip ID
--output Custom output path (default: /tmp/opusclip-storyboard-{clipId}.jpg)

Opens the image automatically on macOS/Linux. Use this for quick visual review of a clip's content.

trim

Trim a clip's preview video locally. Requires ffmpeg.

opusclip trim --project PROJECT_ID --clip CLIP_ID --start 3 --end 50
opusclip trim --project PROJECT_ID --clip CLIP_ID --start 3 --end 50 --output trimmed.mp4
Flag Description
--project (required) Project ID
--clip (required) Clip ID
--start (required) Start time in seconds
--end (required) End time in seconds
--output Custom output path (default: /tmp/opusclip-trimmed-{clipId}.mp4)

post

Manage social posting — publish clips to YouTube, TikTok, Facebook, Instagram, LinkedIn, and X.

opusclip post accounts
opusclip post generate-copy --project PID --clip CID --account AID [--prompt "tone"]
opusclip post copy-status --job JOB_ID
opusclip post publish --project PID --clip CID --account AID --title "Title" [--description "..."] [--privacy public]
opusclip post schedule --project PID --clip CID --account AID --title "Title" --at 2026-03-25T14:00:00Z
opusclip post cancel --schedule SCHEDULE_ID
Subcommand Description
accounts List connected social accounts (default)
generate-copy Generate AI-optimized post copy for a clip
copy-status Poll for generated copy result
publish Publish a clip immediately
schedule Schedule a clip for future publishing
cancel Cancel a scheduled post

Supported platforms: YouTube, TikTok Business, Facebook Page, Instagram Business, LinkedIn, X (Twitter). "Twitter" refers to X — the platform identifier is TWITTER. Each X post costs 1 credit.

When the user doesn't specify a post title, use the clip's title from the list --summary output.

Common Workflows

Clip a YouTube video

opusclip submit --url "https://youtube.com/watch?v=VIDEO_ID"
# Wait for processing, then:
opusclip list --project PROJECT_ID --summary
# Preview clips in browser:
opusclip preview --project PROJECT_ID

Use ClipAnything with a custom prompt

opusclip submit \
  --url "https://youtube.com/watch?v=VIDEO_ID" \
  --model ClipAnything \
  --prompt "Find the most emotional moments" \
  --durations "30,60,90"

Upload a local video, clip, and organize

opusclip upload --file video.mp4 --title "Interview" --model ClipBasic
opusclip list --project PROJECT_ID
opusclip collections create --name "Best Clips"
opusclip collections add-clip --id COL_ID --content-id PROJECT_ID.CLIP_ID
opusclip collections export --id COL_ID

Clip, curate, and share

opusclip submit --url "https://youtube.com/watch?v=..."
opusclip list --project PROJECT_ID --summary

# Understand clip content
opusclip describe --transcript --project PROJECT_ID --clip CLIP_ID

# Visual review
opusclip storyboard --project PROJECT_ID --clip CLIP_ID

# Share
opusclip share --project PROJECT_ID

Clip, generate copy, and post to social

# 1. Submit and get clips
opusclip submit --url "https://youtube.com/watch?v=..."
opusclip list --project PROJECT_ID --summary

# 2. See where you can post
opusclip post accounts

# 3. Generate platform-optimized copy
opusclip post generate-copy --project PROJECT_ID --clip CLIP_ID --account ACCOUNT_ID --prompt "witty and engaging"
opusclip post copy-status --job JOB_ID

# 4a. Publish immediately
opusclip post publish --project PROJECT_ID --clip CLIP_ID --account ACCOUNT_ID --title "Check this out!"

# 4b. Or schedule for later
opusclip post schedule --project PROJECT_ID --clip CLIP_ID --account ACCOUNT_ID --title "Check this out!" --at 2026-03-25T14:00:00Z

# Cancel if needed
opusclip post cancel --schedule SCHEDULE_ID

Constraints

  • Rate limit: 30 req/min
  • Max video: 10 hours, 30 GB
  • Max concurrent: 50 projects
  • Projects expire after 30 days
  • 1 credit = 1 minute of video

API Reference

For detailed endpoint schemas, parameters, and response formats, see references/api-reference.md.

Installs
5
First Seen
Feb 26, 2026