Skip to content
Content
Skill

/video-clip-extractor

Processes videos to identify engaging moments, generate transcripts, and create highlight clips with artistic titles and custom cover images. Use when user needs to: extract highlights from long videos or livestreams, clip or cut best moments from videos, cut video highlights,

From plugin
openclip
5791 skill

Claude Code

$ npx -y skills add linzzzzzz/openclip --skill video-clip-extractor --agent claude-code

SKILL.md

video-clip-extractor.SKILL.md
name: "video-clip-extractor"
description: "Processes videos to identify engaging moments, generate transcripts, and create highlight clips with artistic titles and custom cover images. Use when user needs to: extract highlights from long videos or livestreams, clip or cut best moments from videos, cut video highlights, process Bilibili/YouTube URLs or local video files, generate transcripts via Whisper, analyze content for engaging moments, create short-form clips with styled titles and covers, adjust cover text position and colors, find and export memorable scenes from recordings, burn subtitles into clips (with optional translation), guide clip selection with user intent, or identify speakers in multi-person conversations."
allowed-tools: Bash(uv run python video_orchestrator.py*), Bash(git clone*), Bash(git -C*openclip*), Bash(cd ~/.local/share/openclip*), AskUserQuestion

Video Clip Extractor Skill

Run the video orchestrator to process videos and extract engaging highlights.

When Triggered

1. **Get the source** — if the user didn't provide a video URL or file path, ask for it. 2. **Clarify intent** (optional) — if the user wants clips focused on a specific topic, capture it for `--user-intent`. If unclear, ask: "Any specific topic or moments to focus on? (e.g. 'funny moments', 'key arguments')" 3. **Check environment** — does `video_orchestrator.py` exist in the current directory? If yes, run directly. Otherwise use the global install at `~/.local/share/openclip`. 4. **Verify prerequisites** — check ffmpeg is installed and at least one API key is set. Warn if missing before running. 5. **Run the command** and stream output to user. 6. **Report results** — after completion, list the generated clips with timestamps and titles.

Setup (first use only)

Before running, determine the execution context:

1. **Inside openclip repo** — if `video_orchestrator.py` exists in the current directory, skip setup and run directly. 2. **Global install** — if `~/.local/share/openclip` does not exist, run these steps:

**Prerequisites:** `git` and `uv` must be installed.

  • Install uv if missing: macOS: `brew install uv` · Linux/Windows: `pip install uv`
git clone https://github.com/linzzzzzz/openclip.git ~/.local/share/openclip
cd ~/.local/share/openclip && uv sync

To update openclip later:

git -C ~/.local/share/openclip pull && cd ~/.local/share/openclip && uv sync

Execution

**If inside the openclip repo** (current directory contains `video_orchestrator.py`):

uv run python video_orchestrator.py [options] <source>

**If running globally** (from any other directory):

cd ~/.local/share/openclip && uv run python video_orchestrator.py -o "$OLDPWD/processed_videos" [options] <source>

`$OLDPWD` captures the user's original directory so clips are saved there, not inside the openclip install.

Where `<source>` is a video URL (Bilibili/YouTube) or local file path (MP4, WebM, AVI, MOV, MKV).

For local files with existing subtitles, place the `.srt` file in the same directory with the same filename (e.g. `video.mp4` → `video.srt`).

Preflight Checklist

  • **Inside openclip repo**: run from the repo root so relative paths (e.g. `references/`, `prompts/`) resolve correctly
  • **`ffmpeg` must be installed** (required for all clip generation):
  • macOS: `brew install ffmpeg`
  • Ubuntu: `sudo apt install ffmpeg`
  • Windows: download from [ffmpeg.org](https://ffmpeg.org)
  • If using `--burn-subtitles`: needs ffmpeg with `libass` (see README for details)
  • Set one API key:
  • `QWEN_API_KEY` (default provider: qwen), or
  • `OPENROUTER_API_KEY` (if `--llm-provider openrouter`), or
  • `GLM_API_KEY` (if `--llm-provider glm`), or
  • `MINIMAX_API_KEY` (if `--llm-provider minimax`)
  • If using `--speaker-references`: run `uv sync --extra speakers` and set `HUGGINGFACE_TOKEN`

CLI Reference

Required

| Argument | Description | |---|---| | `source` | Video URL or local file path |

Optional

| Flag | Default | Description | |---|---|---| | `-o`, `--output <dir>` | `processed_videos` | Output directory | | `--max-clips <n>` | `5` | Maximum number of highlight clips | | `--browser <browser>` | `firefox` | Browser for cookies: `chrome`, `firefox`, `edge`, `safari` | | `--title-style <style>` | `fire_flame` | Title style: `gradient_3d`, `neon_glow`, `metallic_gold`, `rainbow_3d`, `crystal_ice`, `fire_flame`, `metallic_silver`, `glowing_plasma`, `stone_carved`, `glass_transparent` | | `--title-font-size <size>` | `medium` | Font size preset for artistic titles. Options: small(30px), medium(40px), large(50px), xlarge(60px) | | `--cover-text-location <loc>` | `center` | Cover text position: `top`, `upper_middle`, `bottom`, `center` | | `--cover-fill-color <color>` | `yellow` | Cover text fill color: `yellow`, `red`, `white`, `cyan`, `green`, `orange`, `pink`, `purple`, `gold`, `silver` | | `--cover-outline-color <color>` | `black` | Cover text outline color: `yellow`, `red`, `white`, `cyan`, `green`, `orange`, `pink`, `purple`, `gold`, `silver`, `black` | | `--language <lang>` | `zh` | Output language: `zh` (Chinese), `en` (English) | | `--llm-provider <provider>` | `qwen` | LLM provider: `qwen`, `openrouter`, `glm`, `minimax` | | `--user-intent <text>` | — | Free-text focus description (e.g. "moments about AI risks"). Steers LLM clip selection toward this topic | | `--subtitle-translation <lang>` | — | Translate subtitles to this language before burning (e.g. `"Simplified Chinese"`). Requires `--burn-subtitles` and `QWEN_API_KEY` | | `--speaker-references <dir>` | — | Directory of reference WAV files (one per speaker, filename = speaker name) for speaker diarization. Requires `uv sync --extra speakers` and `HUGGINGFACE_TOKEN` | | `-f`, `--filename <template>` | — | yt-dlp template: `%(title)s`, `%(uploader)s`, `%(id)s`, etc. |

Flags

| Flag | Description | |---|---| | `--force-whisper` | Ignore platform subtitles, use Whisper | | `--s

Read more
@linzzzzzz
Ships withopenclip

OpenClip - AI-powered highlight extraction for long videos (AI 驱动的长视频精彩时刻提取工具)

Stars on GitHub

Momentum

stars in total
579
Star history of linzzzzzz/openclip on GitHub, a chart by star-history.com

More skills from other plugins.

prompt-lookup

prompt-lookup

Activates when the user asks about AI prompts, needs prompt templates, wants to search for prompts, or mentions prompts.chat. Use…

@gh-f@gh-fInstall Skill
ppt-master

ppt-master

AI-driven presentation workflow for generating editable PPTX decks and slides, reconstructing page visuals, creating reusable…

@hugohe3@hugohe3Install Skill
morph-ppt

morph-ppt

Use this skill when the user wants a .pptx with smooth cross-slide animation — PowerPoint Morph transitions, Keynote-style…

@iofficeai@iofficeaiInstall Skill

Questions about video-clip-extractor.

Which coding agents can use video-clip-extractor?
video-clip-extractor installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.