Agent skill

Video Clip Extractor

by linzzzzzz in linzzzzzz/openclip

Processes videos to identify engaging moments, generate transcripts, and create highlight clips with artistic titles and custom cover images.

MITAuto-check: warningsMedia & Creative

Install Video Clip Extractor

The automated check flagged lines worth reading first. See the safety section below.

skills CLI
$ npx skills add linzzzzzz/openclip --skill video-clip-extractor -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install linzzzzzz/openclip video-clip-extractor --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/linzzzzzz/openclip.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.trae/skills/video-clip-extractor .claude/skills/video-clip-extractor && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
video-clip-extractor
GitHub stars
569
Token cost
~2.8k tokens
SKILL.md length
1,056 words
Files
1
Skills in repo
1
Repo updated
First seen
Licence
MIT

At a glance

Processes videos to identify engaging moments, generate transcripts, and create highlight clips with artistic titles and custom cover images.

  • Works in 6 steps: Get the source — if the user didn't… → Clarify intent (optional) — if the user… → Check environment — does… → …
  • User needs to: extract highlights from long videos
  • SKILL.md covers When Triggered, Setup (first use only), Execution and Preflight Checklist, plus 6 more sections
  • Calls uv, brew and git; needs QWEN_API_KEY and OPENROUTER_API_KEY

What it does

Video Clip Extractor is an agent skill from linzzzzzz/openclip. 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…

Its SKILL.md is about 2.8k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Media & Creative, covering Video production, Transcription and Speech recognition and synthesis. It works with Bilibili, YouTube and FFmpeg. The repository describes itself as: OpenClip - AI-powered highlight extraction for long videos (AI 驱动的长视频精彩时刻提取工具). The licence is MIT.

When your agent uses it

  • User needs to: extract highlights from long videos
  • Cut best moments from videos
  • Cut video highlights
  • Process Bilibili/YouTube URLs

Example prompts

  • “Use the video-clip-extractor skill to process videos to identify engaging moments, generate transcripts, and create highlight clips with artistic…”
  • “/video-clip-extractor”

Requirements

  • Python 3
  • A credential in QWEN_API_KEY
  • A credential in OPENROUTER_API_KEY
  • Pre-approved tools (allowed-tools): Bash(uv run python video_orchestrator.py*), Bash(git clone*), Bash(git -C*openclip*), Bash(cd ~/.local/share/openclip*), AskUserQuestion

Workflow steps

6 steps, taken from the first numbered list in SKILL.md.

  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…
  3. Check environment — does video_orchestrator.py exist in the current directory? If yes, run directly. Otherwise use the global install at…
  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.

What it can do on your machine

Read from SKILL.md and the folder at commit 0289627. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves these tools, so the agent can use them without asking each time:

    • Bash(uv run python video_orchestrator.py*)
    • Bash(git clone*)
    • Bash(git -C*openclip*)
    • Bash(cd ~/.local/share/openclip*)
    • AskUserQuestion

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • uv
    • brew
    • git
    • apt
    • pip

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Links to these hosts (documentation or services it may open):

    • ffmpeg.org

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names these keys or tokens, usually read from environment variables:

    • QWEN_API_KEY
    • OPENROUTER_API_KEY
    • GLM_API_KEY
    • MINIMAX_API_KEY
    • HUGGINGFACE_TOKEN

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Video Clip Extractor loads about 2.8k tokens when it runs. Until then it costs about 178 tokens; SKILL.md has 1,056 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~178
When it runs · the whole SKILL.md, loaded when a task matches
~2.8k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check: warnings

The automated check found patterns that need a careful read before installing.

  • NoteRuns commands with sudoSKILL.md:63
    - Ubuntu: `sudo apt install ffmpeg`
  • WarningMentions a credentials file (SSH keys, cloud or package-manager tokens)SKILL.md:87
    | `--browser <browser>` | `firefox` | Browser for cookies: `chrome`, `firefox`, `edge`, `safari` |
  • NoteRuns commands with sudoSKILL.md:192
    fmpeg: `brew install ffmpeg` (macOS) or `sudo apt install ffmpeg` (Ubuntu) |

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from linzzzzzz/openclip at commit 0289627, republished under its MIT licence (© linzzzzzz). 1,056 words, ~2,762 tokens.

Download SKILL.mdSave it as .claude/skills/video-clip-extractor/SKILL.md (or your agent's skills folder).
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
bash
git clone https://github.com/linzzzzzz/openclip.git ~/.local/share/openclip
cd ~/.local/share/openclip && uv sync

To update openclip later:

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

Execution

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

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

If running globally (from any other directory):

bash
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
    • 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
ArgumentDescription
sourceVideo URL or local file path
Optional
FlagDefaultDescription
-o, --output <dir>processed_videosOutput directory
--max-clips <n>5Maximum number of highlight clips
--browser <browser>firefoxBrowser for cookies: chrome, firefox, edge, safari
--title-style <style>fire_flameTitle 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>mediumFont size preset for artistic titles. Options: small(30px), medium(40px), large(50px), xlarge(60px)
--cover-text-location <loc>centerCover text position: top, upper_middle, bottom, center
--cover-fill-color <color>yellowCover text fill color: yellow, red, white, cyan, green, orange, pink, purple, gold, silver
--cover-outline-color <color>blackCover text outline color: yellow, red, white, cyan, green, orange, pink, purple, gold, silver, black
--language <lang>zhOutput language: zh (Chinese), en (English)
--llm-provider <provider>qwenLLM 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
FlagDescription
--force-whisperIgnore platform subtitles, use Whisper
--skip-downloadUse existing downloaded video
--skip-transcriptSkip transcript generation, use existing transcript file
--skip-analysisSkip analysis, use existing analysis file for clip generation
--use-backgroundInclude background info (streamer names/nicknames) in analysis prompts
--skip-clipsSkip clip generation
--add-titlesAdd artistic titles to clips (disabled by default)
--skip-coverSkip cover image generation
--burn-subtitlesBurn SRT subtitles into video. Output goes to clips_post_processed/. Requires ffmpeg with libass
-v, --verboseEnable verbose logging
--debugExport full prompts sent to LLM (saved to debug_prompts/)
Show full SKILL.md (424 more words)Show less
Custom Filename Template (-f)

Uses yt-dlp template syntax. Common variables: %(title)s, %(uploader)s, %(upload_date)s, %(id)s, %(ext)s, %(duration)s.

Example: -f "%(upload_date)s_%(title)s.%(ext)s"

Environment Variables

Set the appropriate API key for the chosen --llm-provider:

  • QWEN_API_KEY — for --llm-provider qwen
  • OPENROUTER_API_KEY — for --llm-provider openrouter
  • GLM_API_KEY — for --llm-provider glm
  • MINIMAX_API_KEY — for --llm-provider minimax

Workflow

The orchestrator runs this pipeline automatically:

  1. Download — fetch video + platform subtitles (Bilibili/YouTube) or accept local file
  2. Split — divide videos longer than the built-in threshold into segments for parallel analysis
  3. Transcribe — use platform subtitles or Whisper AI; --force-whisper overrides
  4. Analyze — LLM scores transcript segments for engagement; --user-intent steers selection
  5. Generate clips — ffmpeg cuts the video at identified timestamps
  6. Add titles (opt-in) — render artistic text overlay using --title-style
  7. Generate covers — create thumbnail image for each clip

Use --skip-clips, --skip-cover to skip specific steps. Use --add-titles to enable artistic titles. Use --skip-download and --skip-analysis to resume from intermediate results.

Output Example

After a successful run, report results like this:

✅ Processing complete — 5 clips generated
📁 processed_videos/video_name/clips/

  clip_01.mp4  [00:12:34 – 00:15:20]  "Title of the moment"
  clip_02.mp4  [00:28:45 – 00:31:10]  "Another highlight"
  clip_03.mp4  [00:45:00 – 00:47:30]  "Key discussion point"
  ...

Cover images: clips/*.jpg

Output Structure

processed_videos/{video_name}/
├── downloads/              # Original video, subtitles, and metadata (URL sources)
├── local_videos/           # Copied video and subtitles (local file sources)
├── splits/                 # Split parts and AI analysis results
├── clips/                  # Generated highlight clips + cover images
└── clips_post_processed/   # Post-processed clips when using --add-titles and/or --burn-subtitles

Option Selection Guide

Whisper model — Default base works for clear audio. Use small for background noise, multiple speakers, or accents. Use turbo for speed + accuracy. Use large/medium only when transcript quality is critical.

--force-whisper — Use when platform subtitles are auto-generated (often inaccurate), when "no engaging moments found" occurs (better transcripts improve analysis), or for non-native language content where platform captions are unreliable.

--use-background — Use for content featuring recurring personalities (streamers, hosts) where nicknames and community references matter. Reads from prompts/background/background.md.

Multi-part analysis — Videos that get split are analyzed per-segment, then aggregated to the top 5 engaging moments across all segments.

--user-intent — Steers LLM clip selection at both the per-segment and cross-segment aggregation stages. Useful when you want to find clips about a specific topic (e.g. "AI safety predictions", "funny moments").

--burn-subtitles — Hardcodes the SRT subtitle into the video frame. Use when you want subtitles always visible (e.g. for social media). Combine with --subtitle-translation to add a translated subtitle track below the original.

--speaker-references — Enables speaker diarization for interviews/podcasts. Provide a directory of 10–30 second clean WAV clips (one per speaker), named after the speaker (e.g. references/Host.wav).

Troubleshooting

ErrorFix
"ffmpeg not found" / clip generation fails silentlyInstall ffmpeg: brew install ffmpeg (macOS) or sudo apt install ffmpeg (Ubuntu)
"No API key provided"Set QWEN_API_KEY, OPENROUTER_API_KEY, GLM_API_KEY, or MINIMAX_API_KEY env var
"Video download failed"Check network/URL; try different --browser; or use local file
"Transcript generation failed"Try --force-whisper or check audio quality
"No engaging moments found"Try --force-whisper for better transcript accuracy
"Clip generation failed"Ensure analysis completed; check for existing analysis file

© linzzzzzz, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in .trae/skills/video-clip-extractor of linzzzzzz/openclip.

Open the folder on GitHubat commit 0289627

Compare with similar skills

Video Clip Extractor next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Video Clip Extractor compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Video Clip Extractor this skilllinzzzzzz/openclip569—~2.8kAutomated safety check: WarnMIT
Watchmathiaschu/watch142—~4kAutomated safety check: WarnMIT
Watch Videocoreyhaines31/makerskills851—~3.8kAutomated safety check: PassMIT
Lecture To Notesysyecust/lecture-to-notes273—~14kAutomated safety check: NotesCustom licence
Video Transcribewendy7756/AI-Video-Transcriber3.3k—~937Automated safety check: NotesApache-2.0
Ffmpeg Skillkajisho5/ffmpeg-skill1.9k—~7.4kAutomated safety check: PassMIT

Similar skills

  • Watch

    mathiaschu/watch

    Watch a video from YouTube, Instagram, X/Twitter, Vimeo, TikTok or any of ~1800 yt-dlp sites (or a local path).

    142 GitHub stars~4k tokensUpdated 4 mo ago
    Media & CreativeAuto-check: warnings
  • Watch Video

    coreyhaines31/makerskills

    When you want to extract content from a video — YouTube, Loom, Vimeo, Riverside, Zoom recording, local MP4, X/IG video, anything yt-dlp supports.

    851 GitHub stars~3.8k tokensUpdated 2 days ago
    Media & CreativeAuto-check passed
  • Lecture To Notes

    ysyecust/lecture-to-notes

    A skill your agent uses when users provide YouTube, Bilibili, or X/Twitter lecture URLs and want reader-first Chinese LaTeX/PDF notes with source-faithful claims, fluent authored prose, and verified…

    273 GitHub stars~14k tokensUpdated 8 days ago
    Documents & OfficeAuto-check: notes
  • Video Transcribe

    wendy7756/AI-Video-Transcriber

    Transcribe and summarize a video or podcast from a URL (YouTube, TikTok, Bilibili, Apple Podcasts, SoundCloud, 30+ platforms) or from a local media/.txt file.

    3.3k GitHub stars~937 tokensUpdated 25 days ago
    Media & CreativeAuto-check: notes
  • Ffmpeg Skill

    kajisho5/ffmpeg-skill

    Edit video and audio with local FFmpeg from natural-language requests: cut, trim, join, resize/reframe (9:16, 1:1), speed change, captions and subtitles (SRT/ASS, animated, karaoke), logos and text…

    1.9k GitHub stars~7.4k tokensUpdated yesterday
    Media & CreativeAuto-check passed
  • Claude Real Video

    HUANGCHIHHUNGLeo/claude-real-video

    Watch a video for the user. An agent skill from HUANGCHIHHUNGLeo/claude-real-video.

    2.2k GitHub stars~639 tokensUpdated 2 days ago
    Media & CreativeAuto-check passed

Questions about Video Clip Extractor

What does Video Clip Extractor do?

Processes videos to identify engaging moments, generate transcripts, and create highlight clips with artistic titles and custom cover images. Video Clip Extractor is an agent skill from linzzzzzz/openclip. Processes videos to identify engaging moments, generate transcripts, and create highlight clips with artistic titles and custom cover images.

When should I use Video Clip Extractor?

Video Clip Extractor fits situations like: user needs to: extract highlights from long videos; cut best moments from videos; cut video highlights; process Bilibili/YouTube URLs.

How do I install Video Clip Extractor in Claude Code?

Run `npx skills add linzzzzzz/openclip --skill video-clip-extractor -a claude-code`. Or copy the skill folder (.trae/skills/video-clip-extractor in linzzzzzz/openclip) into .claude/skills/video-clip-extractor in your project. Claude Code loads it when a task matches its description.

How do I install Video Clip Extractor in Codex?

Run `npx skills add linzzzzzz/openclip --skill video-clip-extractor -a codex`. Or copy the skill folder (.trae/skills/video-clip-extractor in linzzzzzz/openclip) into .agents/skills/video-clip-extractor in your project. Codex loads it when a task matches its description.

Can I use Video Clip Extractor in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add linzzzzzz/openclip --skill video-clip-extractor -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/video-clip-extractor, .gemini/skills/video-clip-extractor, .github/skills/video-clip-extractor and .opencode/skills/video-clip-extractor in your project.

What does Video Clip Extractor need to run?

Going by SKILL.md and its folder, Video Clip Extractor needs the command-line tools its instructions call (uv, brew, git, apt and pip) and credentials named QWEN_API_KEY, OPENROUTER_API_KEY, GLM_API_KEY and MINIMAX_API_KEY. Our summary lists: Python 3; A credential in QWEN_API_KEY; A credential in OPENROUTER_API_KEY. Its frontmatter pre-approves these tools: Bash(uv run python video_orchestrator.py*), Bash(git clone*), Bash(git -C*openclip*), Bash(cd ~/.local/share/openclip*), AskUserQuestion.

Does Video Clip Extractor access the network?

SKILL.md names 1 domain. As links in the text: ffmpeg.org. This is read from the text; nothing was executed.

Is Video Clip Extractor safe to install?

Our automated static check of SKILL.md flagged 1 warning(s): mentions a credentials file (ssh keys, cloud or package-manager tokens). Read the flagged lines before installing; the check is not a guarantee either way.

What licence does Video Clip Extractor use?

Video Clip Extractor is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Video Clip Extractor use?

About 2.8k tokens (SKILL.md is roughly 11k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Video Clip Extractor?

Skills that share tags, products or a category with Video Clip Extractor: Watch (mathiaschu/watch, 142 stars), Watch Video (coreyhaines31/makerskills, 851 stars), Lecture To Notes (ysyecust/lecture-to-notes, 273 stars) and Video Transcribe (wendy7756/AI-Video-Transcriber, 3.3k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Video Clip Extractor?

linzzzzzz (a GitHub user) maintains it in linzzzzzz/openclip, which has 569 GitHub stars. The repository was last updated on August 24, 2026.

Source: linzzzzzz/openclip on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.