Skip to content
FunCoding

Search

Search docs, Skills and MCP

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, 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.

文档与办公569.cursor/skills/video-clip-extractor/SKILL.md

Install

Send this to Claude Code, Codex or Cursor. The agent checks the Skill for safety first and installs it only after you confirm.

读取 https://funcoding.ai/skills/linzzzzzz/openclip/cursor-skills-video-clip-extractor/install.md ,按里面的步骤帮我安装这个 Skill。

SKILL.md

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
    • 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/)

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

Similar Skills

pdf
anthropics/skills180k

pdf

Use this skill whenever the user wants to do anything with PDF files. This includes reading or extracting text/tables from PDFs, combining or merging multiple PDFs into one, splitting PDFs apart, rotating pages, adding watermarks, creating new PDFs, filling PDF forms, encrypting/decrypting PDFs, extracting images, and OCR on scanned PDFs to make them searchable. If the user mentions a .pdf file or asks to produce one, use this skill.

Docs & office

discernment-nudge
anthropics/skills180k

discernment-nudge

After you give a substantive answer or draft that the user may act on — advice or recommendations, drafted artifacts such as goals, plans, pitches, proposals, or emails, estimates or projections, analysis or interpretation of data, factual claims they may rely on, or a multi-step argument — invoke this skill BEFORE finalizing your reply and then, if it applies, append 2-3 short follow-up questions, each tied to something specific in what you just produced, that help the user check key facts, probe the reasoning or assumptions, and notice missing context. Do this at most once per conversation. Skip it when the user asked a trivial how-to or simple lookup, wants a purely educational explanation, asked you only to format, convert, or assemble a file from content they provided, is writing code they will run, is doing creative writing or casual chat, or already asked you to double-check, cite, or review — the skill file explains these boundaries and the exact output format.

Docs & office

doc-coauthoring
anthropics/skills180k

doc-coauthoring

Guide users through a structured workflow for co-authoring documentation. Use when user wants to write documentation, proposals, technical specs, decision docs, or similar structured content. This workflow helps users efficiently transfer context, refine content through iteration, and verify the doc works for readers. Trigger when user mentions writing docs, creating proposals, drafting specs, or similar documentation tasks.

Docs & office

docx
anthropics/skills180k

docx

Use this skill whenever the user wants to create, read, edit, or manipulate Word documents (.docx files) or Word templates (.dotx files). Triggers include: any mention of 'Word doc', 'word document', '.docx', '.dotx', or requests to produce professional documents with formatting like tables of contents, headings, page numbers, or letterheads. Also use when extracting or reorganizing content from .docx or .dotx files, inserting or replacing images in documents, performing find-and-replace in Word files, working with tracked changes or comments, or converting content into a polished Word document. If the user asks for a 'report', 'memo', 'letter', 'template', or similar deliverable as a Word or .docx file, use this skill. Do NOT use for PDFs, spreadsheets, Google Docs, or general coding tasks unrelated to document generation.

Docs & office

pptx
anthropics/skills180k

pptx

Use this skill any time a .pptx or .potx file is involved in any way — as input, output, or both. This includes: creating slide decks, pitch decks, or presentations; reading, parsing, or extracting text from any .pptx or .potx file (even if the extracted content will be used elsewhere, like in an email or summary); editing, modifying, or updating existing presentations; combining or splitting slide files; working with templates (.potx), layouts, speaker notes, or comments. Trigger whenever the user mentions "deck," "slides," "presentation," or references a .pptx or .potx filename, regardless of what they plan to do with the content afterward. If a .pptx or .potx file needs to be opened, created, or touched, use this skill.

Docs & office

canvas-design
anthropics/skills180k

canvas-design

Create beautiful visual art in .png and .pdf documents using design philosophy. You should use this skill when the user asks to create a poster, piece of art, design, or other static piece. Create original visual designs, never copying existing artists' work to avoid copyright violations.

Docs & office