Video Clip Extractor
linzzzzzz/openclip
Processes videos to identify engaging moments, generate transcripts, and create highlight clips with artistic titles and custom cover images.
Audio and video processing with ffmpeg. An agent skill from oaustegard/claude-skills.
$ npx skills add oaustegard/claude-skills --skill processing-video -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install oaustegard/claude-skills processing-video --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/oaustegard/claude-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/processing-video .claude/skills/processing-video && rm -rf skills-srcUse ~/.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/
Install the "processing-video" agent skill from https://github.com/oaustegard/claude-skills/tree/main/processing-video into .claude/skills/processing-video/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "processing-video", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/oaustegard/claude-skills/tree/main/processing-videoType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add oaustegard/claude-skills --skill processing-video -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install oaustegard/claude-skills processing-video --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/oaustegard/claude-skills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/processing-video .agents/skills/processing-video && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "processing-video" agent skill from https://github.com/oaustegard/claude-skills/tree/main/processing-video into .agents/skills/processing-video/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "processing-video", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add oaustegard/claude-skills --skill processing-video -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install oaustegard/claude-skills processing-video --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/oaustegard/claude-skills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/processing-video .cursor/skills/processing-video && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "processing-video" agent skill from https://github.com/oaustegard/claude-skills/tree/main/processing-video into .cursor/skills/processing-video/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "processing-video", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/oaustegard/claude-skills.git --path processing-video--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add oaustegard/claude-skills --skill processing-video -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install oaustegard/claude-skills processing-video --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/oaustegard/claude-skills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/processing-video .gemini/skills/processing-video && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "processing-video" agent skill from https://github.com/oaustegard/claude-skills/tree/main/processing-video into .gemini/skills/processing-video/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "processing-video", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install oaustegard/claude-skills processing-videoInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add oaustegard/claude-skills --skill processing-video -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/oaustegard/claude-skills.git skills-src && mkdir -p .github/skills && cp -r skills-src/processing-video .github/skills/processing-video && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "processing-video" agent skill from https://github.com/oaustegard/claude-skills/tree/main/processing-video into .github/skills/processing-video/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "processing-video", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add oaustegard/claude-skills --skill processing-video -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install oaustegard/claude-skills processing-video --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/oaustegard/claude-skills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/processing-video .opencode/skills/processing-video && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "processing-video" agent skill from https://github.com/oaustegard/claude-skills/tree/main/processing-video into .opencode/skills/processing-video/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "processing-video", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
processing-videoAudio and video processing with ffmpeg. An agent skill from oaustegard/claude-skills.
Processing Video is an agent skill from oaustegard/claude-skills. Audio and video processing with ffmpeg. Use when: user asks to convert, trim, merge, compress, or transcode video or audio files; extract audio from video; create GIFs or animated WebP from video; add subtitles or watermarks to video; change video resolution, framerate, or codec; normalize audio loudness; extract frames from video; concatenate clips; create thumbnails from video; strip or add audio tracks; convert between audio formats (MP3, AAC, FLAC, Opus, WAV); adjust volume; apply video filters; stabilize…
Its SKILL.md is about 2.4k tokens, which your agent loads only when the skill is triggered. The skill folder holds 2 other files (for example `CHANGELOG.md` and `README.md`).
It sits in Media & Creative, covering Video production, Transcription and Social media graphics. It works with FFmpeg. The repository describes itself as: My collection of Claude skills. The licence is MIT.
Read from SKILL.md and the folder at commit 559a6cd. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
ffmpegffprobeFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Processing Video loads about 2.4k tokens when it runs. Until then it costs about 237 tokens; SKILL.md has 431 words of instructions outside code blocks.
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.
The automated check found no risky patterns in SKILL.md.
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.
The full file from oaustegard/claude-skills at commit 559a6cd, republished under its MIT licence (© oaustegard). 431 words, ~2,442 tokens.
.claude/skills/processing-video/SKILL.md (or your agent's skills folder). This skill also uses 2 other files; get the full folder from GitHub.ffmpeg 6.1.1 is pre-installed with a full-featured build. Also available: ffprobe (media analysis) and ffplay (playback, limited use in container).
Before writing custom Python for media tasks, check whether ffmpeg handles it in a single command.
To interpret video content (summarize, describe, find scenes) rather than transform it, use the parsing-video skill — it samples frames into timestamped contact sheets that can be read as images.
ffprobe — always start here to understand what you're working with.
ffprobe -v quiet -print_format json -show_format -show_streams input.mp4
ffprobe -v quiet -show_entries format=duration,bit_rate -of csv=p=0 input.mp4
ffprobe -v quiet -select_streams v:0 -show_entries stream=width,height,r_frame_rate,codec_name -of csv=p=0 input.mp4ffmpeg -i input.avi output.mp4 # container swap (re-encode)
ffmpeg -i input.avi -c copy output.mp4 # container swap (no re-encode, fast)
ffmpeg -i input.mp4 -c:v libx265 -crf 28 output.mp4 # H.265
ffmpeg -i input.mp4 -c:v libvpx-vp9 -crf 30 -b:v 0 out.webm # VP9 WebM
ffmpeg -i input.mp4 -c:v libsvtav1 -crf 35 output.mp4 # AV1 (SVT, fastest AV1 encoder)
ffmpeg -i input.mp4 -c:v libjxl output.jxl # JPEG XL (single frame)Encoder selection guide:
| Goal | Encoder | Typical flags |
|---|---|---|
| Compatibility | libx264 | -crf 23 -preset medium |
| Better compression | libx265 | -crf 28 -preset medium |
| Web delivery | libvpx-vp9 | -crf 30 -b:v 0 |
| Best compression | libsvtav1 | -crf 35 -preset 6 |
| Lossless archival | libx264 | -crf 0 -preset veryslow |
Lower CRF = higher quality. x264 default 23, x265 default 28, SVT-AV1 default 35 are visually similar.
ffmpeg -i input.wav -c:a libmp3lame -q:a 2 output.mp3 # MP3 VBR ~190kbps
ffmpeg -i input.wav -c:a libopus -b:a 128k output.opus # Opus (best quality/size)
ffmpeg -i input.wav -c:a aac -b:a 192k output.m4a # AAC
ffmpeg -i input.wav -c:a flac output.flac # FLAC lossless
ffmpeg -i input.mp3 -ar 44100 -ac 2 output.wav # to WAV, set sample rate/channelsffmpeg -i video.mp4 -vn -c:a copy audio.aac # extract without re-encoding
ffmpeg -i video.mp4 -vn -c:a libmp3lame -q:a 2 audio.mp3 # extract as MP3
ffmpeg -i video.mp4 -vn -c:a libopus -b:a 128k audio.opusffmpeg -i input.mp4 -ss 00:01:30 -to 00:03:00 -c copy clip.mp4 # fast, keyframe-aligned
ffmpeg -ss 00:01:30 -i input.mp4 -to 00:01:30 -c copy clip.mp4 # -ss before -i = faster seek
ffmpeg -i input.mp4 -ss 00:01:30 -to 00:03:00 -c:v libx264 -c:a aac clip.mp4 # frame-accurate (re-encode)-ss before -i seeks by keyframe (fast, may be imprecise). After -i decodes from start (slow, precise). For frame-accurate cuts, re-encode.
Demuxer method (same codec, no re-encode):
# Create file list
printf "file '%s'\n" clip1.mp4 clip2.mp4 clip3.mp4 > list.txt
ffmpeg -f concat -safe 0 -i list.txt -c copy merged.mp4Filter method (different formats, re-encodes):
ffmpeg -i clip1.mp4 -i clip2.mp4 -filter_complex "[0:v][0:a][1:v][1:a]concat=n=2:v=1:a=1[v][a]" -map "[v]" -map "[a]" merged.mp4ffmpeg -i input.mp4 -vf "scale=1280:720" output.mp4 # exact size
ffmpeg -i input.mp4 -vf "scale=1280:-1" output.mp4 # width 1280, auto height
ffmpeg -i input.mp4 -vf "scale=-1:720:flags=lanczos" output.mp4 # height 720, Lanczos
ffmpeg -i input.mp4 -vf "scale=iw/2:ih/2" output.mp4 # half size
ffmpeg -i input.mp4 -vf "pad=1920:1080:(ow-iw)/2:(oh-ih)/2" output.mp4 # letterbox to 1080pffmpeg -i input.mp4 -r 30 output.mp4 # simple (drops/dupes frames)
ffmpeg -i input.mp4 -vf "fps=24" output.mp4 # filter-based
ffmpeg -i input.mp4 -vf "minterpolate=fps=60" output.mp4 # motion interpolation (slow)Use the two-pass palette method for quality:
ffmpeg -i input.mp4 -vf "fps=10,scale=480:-1:flags=lanczos,palettegen" palette.png
ffmpeg -i input.mp4 -i palette.png -lavfi "fps=10,scale=480:-1:flags=lanczos[x];[x][1:v]paletteuse" output.gifSingle-pass (simpler, lower quality):
ffmpeg -i input.mp4 -vf "fps=10,scale=480:-1" output.gifffmpeg -i input.mp4 -vf "fps=15,scale=480:-1" -c:v libwebp -lossless 0 -q:v 75 -loop 0 output.webpffmpeg -i input.mp4 -vf "fps=1" frame_%04d.png # 1 frame/second
ffmpeg -i input.mp4 -vf "select='eq(pict_type,I)'" -vsync vfr keyframe_%04d.png # keyframes only
ffmpeg -i input.mp4 -vf "thumbnail=300" -frames:v 1 thumb.png # best thumbnail from first 300 frames
ffmpeg -ss 00:00:05 -i input.mp4 -frames:v 1 screenshot.png # single frame at timestamp
ffmpeg -i input.mp4 -vf "select='gt(scene,0.3)'" -vsync vfr cut_%04d.png # first frame of each detected cutThe scene score is a frame-pair difference: it catches hard cuts but misses gradual transitions (dissolves/fades) and within-shot content changes; pans can false-positive. For robust shot detection use PySceneDetect (scenedetect -i input.mp4 list-scenes).
ffmpeg -i input.mp4 -vf "subtitles=subs.srt" output.mp4 # burn in SRT
ffmpeg -i input.mp4 -vf "ass=subs.ass" output.mp4 # burn in ASS (styled)
ffmpeg -i input.mp4 -i subs.srt -c copy -c:s mov_text output.mp4 # soft subs in MP4Subtitle rendering uses libass (full ASS/SSA styling support).
ffmpeg -i input.mp4 -vf "drawtext=text='Hello':fontsize=48:fontcolor=white:x=10:y=10" output.mp4
ffmpeg -i input.mp4 -i watermark.png -filter_complex "overlay=W-w-10:H-h-10" output.mp4
ffmpeg -i input.mp4 -vf "drawtext=text='%{pts\:hms}':fontsize=24:fontcolor=white:x=10:y=H-30" output.mp4 # timestampffmpeg -i input.mp4 -af "volume=1.5" output.mp4 # volume boost
ffmpeg -i input.mp4 -af "loudnorm=I=-16:TP=-1.5:LRA=11" output.mp4 # EBU R128 normalization
ffmpeg -i input.mp4 -af "afade=t=in:d=2,afade=t=out:st=58:d=2" output.mp4 # fade in/out
ffmpeg -i input.mp4 -af "highpass=f=200,lowpass=f=3000" output.mp4 # bandpass
ffmpeg -i input.mp4 -an output_silent.mp4 # strip audio
ffmpeg -i video.mp4 -i audio.mp3 -c:v copy -map 0:v -map 1:a output.mp4 # replace audio trackffmpeg -i shaky.mp4 -vf "vidstabdetect=shakiness=5:accuracy=15" -f null -
ffmpeg -i shaky.mp4 -vf "vidstabtransform=smoothing=10:input=transforms.trf" stabilized.mp4ffmpeg -i clip1.mp4 -i clip2.mp4 -filter_complex "xfade=transition=fade:duration=1:offset=4" output.mp4Transition types: fade, wipeleft, wiperight, slideup, slidedown, circlecrop, dissolve, and ~40 more.
ffmpeg -i audio.mp3 -filter_complex "showwavespic=s=1280x240:colors=0x1e90ff" -frames:v 1 waveform.png
ffmpeg -i audio.mp3 -filter_complex "showspectrumpic=s=1280x720" -frames:v 1 spectrum.pngffmpeg -i input.mp4 -c:v libx264 -crf 28 -preset faster -c:a aac -b:a 128k smaller.mp4
ffmpeg -i input.mp4 -c:v libx265 -crf 32 -preset medium -c:a libopus -b:a 96k smallest.mp4CRF is the primary quality knob. Preset trades encoding speed for compression efficiency.
Video encoders: libx264, libx265, libvpx (VP8), libvpx-vp9, libsvtav1, librav1e, libaom-av1, libjxl (JPEG XL), gif, png, apng, libwebp Audio encoders: aac, libmp3lame, libopus, libvorbis, flac, ac3, pcm_s16le Subtitle: ASS/SSA (libass), SRT, DVB, DVD, MOV text 426 formats, 562 filters, hardware accel stubs (vaapi, vulkan, opencl — limited use in container)
/home/claude/, deliver to /mnt/user-data/outputs/.-preset faster or -preset veryfast for large files to avoid timeouts.© oaustegard, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 2 other files in processing-video of oaustegard/claude-skills.
Open the folder on GitHubat commit 559a6cd
Processing Video 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.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Processing Video this skilloaustegard/claude-skills | 150 | — | ~2.4k | Automated safety check: Pass | MIT | |
| Video Clip Extractorlinzzzzzz/openclip | 569 | — | ~2.8k | Automated safety check: Warn | MIT | |
| Video Understandcalesthio/OpenMontage | 65k | — | ~841 | Automated safety check: Pass | AGPL-3.0 | |
| Karaoke CaptionsAI-Builder-Club/skills | 1.3k | — | ~850 | Automated safety check: Pass | None | |
| Ffmpegrendi-api/ffmpeg-cheatsheet | 1.7k | — | ~1.2k | Automated safety check: Pass | None | |
| AutoshortsUpload-Post/skill-autoshorts | 150 | — | ~5.3k | Automated safety check: Notes | MIT |
linzzzzzz/openclip
Processes videos to identify engaging moments, generate transcripts, and create highlight clips with artistic titles and custom cover images.
calesthio/OpenMontage
Understand video content locally using ffmpeg frame extraction and Whisper transcription.
AI-Builder-Club/skills
Generate TikTok/Shorts-style karaoke captions using MLX Whisper, ASS subtitles, and FFmpeg libass.
rendi-api/ffmpeg-cheatsheet
A skill your agent uses when the user asks for FFmpeg or FFprobe commands, video/audio conversion, trimming, resizing, padding, overlays, subtitles, thumbnails, GIFs, storyboards, slideshows…
Upload-Post/skill-autoshorts
Daily pipeline that picks one long video from a folder, transcribes it with Whisper, uses Gemini 3 Flash multimodal to find every viral short-form moment, cuts each candidate with FFmpeg, adds a…
Orkas-AI/Orkas-VideoStudio
Intelligent editing of real user-supplied footage—understand it with transcript/inspected-frame/scene/silence/quality evidence, then choose deterministic timeline operations or a constrained…
oaustegard/claude-skills
Deprecated sampler that captures short windows of the Bluesky firehose, clusters trending terms and builds an HTML report; replaced by the browsing-bluesky skill.
oaustegard/claude-skills
Builds interactive Vega-Lite charts from uploaded data: analyzes the fields, picks five to ten fitting chart types, and produces a React artifact with the data embedded inline.
oaustegard/claude-skills
Builds self-contained single-file HTML pages such as reports, decks, postmortems, flowcharts and prototypes from a small spec using a bundled Python composer and templates.
oaustegard/claude-skills
Rewrites model-sounding prose into plain technical writing and checks that every claim survives, for PR text, docs, commit messages and similar drafts.
oaustegard/claude-skills
Zero-shot univariate time series forecasting using the Reverso foundation model (NumPy/Numba CPU-only inference).
oaustegard/claude-skills
Guides building standards-based Preact apps with native-first choices, HTM syntax, import maps and vendored ESM, from single-file demos to larger builds.
Works with
Categories
Audio and video processing with ffmpeg. An agent skill from oaustegard/claude-skills. Processing Video is an agent skill from oaustegard/claude-skills. Audio and video processing with ffmpeg.
Processing Video fits situations like: : user asks to convert; transcode video; extract audio from video; animated WebP from video.
Run `npx skills add oaustegard/claude-skills --skill processing-video -a claude-code`. Or copy the skill folder (processing-video in oaustegard/claude-skills) into .claude/skills/processing-video in your project. Claude Code loads it when a task matches its description.
Run `npx skills add oaustegard/claude-skills --skill processing-video -a codex`. Or copy the skill folder (processing-video in oaustegard/claude-skills) into .agents/skills/processing-video in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add oaustegard/claude-skills --skill processing-video -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/processing-video, .gemini/skills/processing-video, .github/skills/processing-video and .opencode/skills/processing-video in your project.
Going by SKILL.md and its folder, Processing Video needs the command-line tools its instructions call (ffmpeg and ffprobe). Our summary lists: Python 3.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Processing Video is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.4k tokens (SKILL.md is roughly 9.8k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Processing Video: Video Clip Extractor (linzzzzzz/openclip, 569 stars), Video Understand (calesthio/OpenMontage, 65k stars), Karaoke Captions (AI-Builder-Club/skills, 1.3k stars) and Ffmpeg (rendi-api/ffmpeg-cheatsheet, 1.7k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
oaustegard (a GitHub user) maintains it in oaustegard/claude-skills, which has 150 GitHub stars. The repository holds 93 skills in this directory. The repository was last updated on October 2, 2026.
Source: oaustegard/claude-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.