First-party app
OpusClip

OpusClip

Turn long-form video into short, AI-clipped highlights, and publish or schedule them to connected social accounts.

stable Video & StreamingAI & Machine LearningSocial Media

About

OpusClip ships in the w6w first-party pack. It declares 22 actions, 2 health checks, and the host runs its code in a sandbox that never sees the credential.

App id
io.w6w.opusclip
Version
0.1.0
Author
w6w
Licence
MIT
Categories
Video & Streaming · AI & Machine Learning · Social Media

Overview

OpusClip turns a long-form video into short, vertical, AI-curated clips: submit a video URL, choose a curation model (talking-head-tuned ClipBasic or prompt-driven ClipAnything) and it returns ready-to-post clips with captions, an optional AI-generated headline, and a brand template applied.

This app covers the OpusClip Clip API end to end — creating and sharing projects, reading back the clips a project produced, brand templates, and export links for a single clip or a whole collection — plus content-safety censor jobs, AI thumbnail generation, and a project’s trimmed source-video transcript.

It also covers social distribution: list connected social accounts, generate platform-tuned captions for a clip, publish a clip immediately or schedule it for later, and cancel a pending schedule.

Health checks track OpusClip’s own status page. There is no live, pre-emptive read of remaining monthly API quota — the vendor only reports the cap by refusing a request with it already hit — so that check is declared unavailable rather than guessed at.

Build with OpusClip

Three routes to the same 22 actions. The Workflow tab is generated from OpusClip's own manifest and carries its real ids, so it is copy-pasteable; the Code and CLI examples are the same call for any action on any app, so every app-specific value in them is a blank you fill in.

List Brand Templates

brand-template-list

List your account's brand templates. Use a templateId as clip-project-create's brandTemplateId to apply one, or use one of OpusClip's preset ids (see the README).

Create Censor Job

censor-job-create

Start an asynchronous job to bleep or mask flagged content in a clip.

Get Censor Job

censor-job-get

Get a censor job's current status.

List Clips

clip-list

List the exportable clips a project or a collection produced.

Create Project

clip-project-create

Submit a long-form video (YouTube, Google Drive, Vimeo, a public S3 MP4, and more) to create a new clipping project.

Get Project

clip-project-get

Get a clip project's current stage, model and metadata.

Share Project

clip-project-update-visibility

Set a project's visibility. PUBLIC lets anyone open, edit and export it; DEFAULT restricts it to team members.

Add Clip to Collection

collection-content-add

Add a clip to a collection.

Remove Clip from Collection

collection-content-remove

Remove a clip from a collection.

Create Collection

collection-create

Create a named collection to group clips.

Delete Collection

collection-delete

Delete a collection. Does not delete the clips it contained.

Export Collection

collection-export

Get an HD download link for every clip in a collection.

List Collections

collection-list

List your account's collections, or the collections containing a given clip.

Create Thumbnail Generation Job

generative-job-create

Experimental. Generate thumbnail options for a video. 7 credits per call, charged on success and refunded on failure.

Get Generative Job

generative-job-get

Poll a thumbnail generation job for its status, progress, and result.

Publish Clip Instantly

post-task-create

Publish a clip immediately to a connected social account. Each X post costs 1 credit.

Cancel Scheduled Post

publish-schedule-cancel

Cancel a scheduled publish task before its publish time.

Schedule Post

publish-schedule-create

Schedule a clip for future publishing to a connected social account. Each X post costs 1 credit.

List Social Accounts

social-account-list

List the connected social destinations available for posting.

Create Social Copy Job

social-copy-job-create

Generate platform-tuned post copy (title, description, hashtags) for a clip.

Get Social Copy Job

social-copy-job-get

Poll a social copy generation job for its status and generated copy.

Get Transcript

transcript-get

Get a project's trimmed source-video transcript (paragraphs with word-level timings). Returns null if the project has no transcript yet.

A workflow step names the app and the action, and the editor fills in the connection when you pick one. This is the Step shape from the workflow spec, carrying OpusClip's real ids.

{
  "manifestVersion": "2",
  "name": "opusclip-example",
  "steps": [
    {
      "id": "censor-job-create",
      "uses": {
        "app": "io.w6w.opusclip",
        "action": "censor-job-create",
        "connection": "conn_YOUR_CONNECTION_ID"
      },
      "with": {
        "projectId": "<projectId>",
        "clipId": "<clipId>"
      }
    }
  ]
}

Here are some of the things you can do

  • Create Censor Job

    perform
    censor-job-create
  • List Brand Templates

    read
    brand-template-list
  • Get Censor Job

    read
    censor-job-get
  • List Clips

    read
    clip-list
  • Create Project

    perform
    clip-project-create

+17 more actions available

Every app-specific value here is a blank you have to fill in. An app action is reached through the connection that authenticates it, so the address is a connection id, not the app id — and connections belong to your account, so a public page cannot know yours. Create one for OpusClip, then fill in the three blanks: conn_YOUR_CONNECTION_ID, the action key, and the parameters that action declares. The call itself is real — the shape is transcribed from the studio's own snippet builder, which prints the same kind of blanks — but nothing in it is specific to OpusClip. The Workflow tab is where this app's real ids are.

Install
npm install @w6w/sdk
yarn add @w6w/sdk
pnpm add @w6w/sdk
deno add npm:@w6w/sdk
Code
import { W6wClient, isActionRun } from "@w6w/sdk";

// Reads W6W_BASE_URL and W6W_TOKEN from the environment when omitted.
const client = new W6wClient();

const envelope = await client.run({
  urn: "conn_YOUR_CONNECTION_ID",
  action: "censor-job-create",
  payload: {
    projectId: "<value>",
    clipId: "<value>",
    // beepSound: "<value>",
  },
});

if (isActionRun(envelope)) console.log(envelope.value);
Install the CLI
npm install -g @w6w/cli
CLI
w6w run conn_YOUR_CONNECTION_ID --action censor-job-create --payload '{"projectId":"<value>","clipId":"<value>"}'

Give an AI agent OpusClip — without giving it OpusClip's credentials. One MCP endpoint exposes every app, function and workflow the caller is entitled to, as tools it can discover and run. Access is granted per team while we onboard.

One tool call
{
  "name": "w6w_invoke",
  "arguments": {
    "ref": "app:io.w6w.opusclip#censor-job-create",
    "input": {
      "projectId": "<projectId>",
      "clipId": "<clipId>"
    }
  }
}

Every tool names its target with a single ref. The app: form above doesn't name a connection at all — the host resolves which of the caller's OpusClip connections to sign with, and refuses rather than guesses when the answer is ambiguous.

What the agent gets

Credentials it can't read

The token is attached host-side, at the moment of the call. It is never a tool argument, never in the model's context, and never in a transcript — so a prompt injection has nothing to exfiltrate.

A tool surface scoped to the caller

Tools are derived per end user from what that person has actually connected and is entitled to — not one shared bot identity carrying the union of everyone's access.

A durable workflow in one call

Multi-step work runs on the workflow engine and returns a run handle the agent can poll — retries, branching and state survive the conversation that started them.

Health-aware discovery

OpusClip's declared health checks are on the surface too, so an agent can tell "the vendor is down" from "your credential expired" before it burns a retry on either.

The MCP surface is part of the hosted platform. OpusClip itself is MIT, and the runtime that executes it is source-available (FSL).

Request MCP access

Health checks

OpusClip declares its own checks, so its health is a property of the app rather than something the host guesses at.

service

OpusClip platform status

Page-level status plus per-component detail from status.opus.pro (Instatus). A component's own status can read OPERATIONAL while it carries an open incident, so this check also folds in each component's activeIncidents.

quota

Monthly API credit headroom