Find compelling moments in a video — funny dialogue OR repeated impact actions like axe chops, hits, throws, drumbeats — cut them as standalone clips, optionally reformat 16:9 ↔ 9:16, time-warp pans…
Install the "clipify" agent skill from https://github.com/louisedesadeleer/clipify/tree/main into .claude/skills/clipify/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "clipify", 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.
skills CLI
$ npx skills add louisedesadeleer/clipify --skill clipify -a codex
Project install goes to .agents/skills/; add -g for ~/.codex/skills/.
Install the "clipify" agent skill from https://github.com/louisedesadeleer/clipify/tree/main into .agents/skills/clipify/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "clipify", 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.
skills CLI
$ npx skills add louisedesadeleer/clipify --skill clipify -a cursor
Project install goes to .agents/skills/; add -g for ~/.cursor/skills/.
Install the "clipify" agent skill from https://github.com/louisedesadeleer/clipify/tree/main into .cursor/skills/clipify/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "clipify", 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.
skills CLI
$ npx skills add louisedesadeleer/clipify --skill clipify -a gemini-cli
Project install goes to .agents/skills/; add -g for ~/.gemini/skills/.
Install the "clipify" agent skill from https://github.com/louisedesadeleer/clipify/tree/main into .gemini/skills/clipify/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "clipify", 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.
Installs 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).
skills CLI
$ npx skills add louisedesadeleer/clipify --skill clipify -a github-copilot
Project install goes to .agents/skills/; add -g for ~/.copilot/skills/.
Install the "clipify" agent skill from https://github.com/louisedesadeleer/clipify/tree/main into .github/skills/clipify/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "clipify", 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.
skills CLI
$ npx skills add louisedesadeleer/clipify --skill clipify -a opencode
OpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
Install the "clipify" agent skill from https://github.com/louisedesadeleer/clipify/tree/main into .opencode/skills/clipify/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "clipify", 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.
Facts
Skill name
clipify
GitHub stars
587
Token cost
~3.6k tokens
SKILL.md length
1,559 words
Files
10 (incl. scripts, assets)
Skills in repo
1
Repo updated
First seen
Licence
MIT
At a glance
Find compelling moments in a video — funny dialogue OR repeated impact actions like axe chops, hits, throws, drumbeats — cut them as standalone clips, optionally reformat 16:9 ↔ 9:16, time-warp pans…
Works in 6 steps: 5 — Verify each candidate is in frame → Trim each chosen clip → Decide the output format → …
The user mentions clipify
SKILL.md covers Modes, Inputs, Tooling (use only the fastest… and Workflow, plus 1 more section
Runs Python scripts from its folder; calls ffmpeg, python3 and whisper
What it does
Clipify is an agent skill from louisedesadeleer/clipify. Find compelling moments in a video — funny dialogue OR repeated impact actions like axe chops, hits, throws, drumbeats — cut them as standalone clips, optionally reformat 16:9 ↔ 9:16, time-warp pans for tighter reveals, and burn opus-style word-by-word captions. Use when the user mentions "clipify," "cut clips from this video," "make shorts from this," "find funny moments," "action montage," "cut on each chop/hit/punch," "reframe to 9:16," "vertical clips," or pastes a video file path and wants social-ready cuts.
Its SKILL.md is about 3.6k tokens, which your agent loads only when the skill is triggered. The skill folder holds 11 other files, including scripts and assets (for example `README.md`, `scripts/analyze.py` and `scripts/audio_align.py`).
It sits in Media & Creative, covering Accessibility and Transcription. The repository describes itself as: Claude Code skill: turn long videos into social-ready clips. Auto-find funny moments, cut, reframe to 9:16 with face-tracking, and burn opus-style captions. The licence is MIT.
When your agent uses it
The user mentions clipify
Cut clips from this video
Make shorts from this
Find funny moments
Example prompts
“clipify,”
“cut clips from this video,”
“make shorts from this,”
“/clipify”
Requirements
Python 3
Workflow steps
6 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 5f6b75e. It shows what the files ask for, not the result of running them.
Tool permissions
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.
Runs code
Ships 5 files in scripts/ (Python), which the agent can run.
Shell commands in SKILL.md call:
ffmpeg
python3
whisper
From the folder's file list and the shell code blocks in SKILL.md.
Network
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Credentials
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Context cost
Clipify loads about 3.6k tokens when it runs. Until then it costs about 132 tokens; SKILL.md has 1,559 words of instructions outside code blocks.
Always· name and description, kept in context so the agent knows when to use it
~132
When it runs· the whole SKILL.md, loaded when a task matches
~3.6k
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 passed
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); the scripts in this folder are not scanned.
Download SKILL.mdSave it as .claude/skills/clipify/SKILL.md (or your agent's skills folder). This skill also uses 9 other files; get the full folder from GitHub.
name
clipify
description
Find compelling moments in a video — funny dialogue OR repeated impact actions like axe chops, hits, throws, drumbeats — cut them as standalone clips, optionally reformat 16:9 ↔ 9:16, time-warp pans for tighter reveals, and burn opus-style word-by-word captions. Use when the user mentions "clipify," "cut clips from this video," "make shorts from this," "find funny moments," "action montage," "cut on each chop/hit/punch," "reframe to 9:16," "vertical clips," or pastes a video file path and wants social-ready cuts.
Clipify
Find compelling moments in a video, cut them as standalone clips, optionally reformat 16:9 → 9:16 (face-pan or split-screen), time-warp pans for tighter reveals, and burn opus-style word-by-word captions.
Modes
Pick one before Step 1. The choice changes how you find moments and whether captions apply.
Dialogue mode (default for podcasts, interviews, talking-heads): Whisper transcribes, you scan for punchlines / reactions / awkward pauses. → Step 1A. Captions in Step 5.
Action mode (woodchopping, sports, percussion, drumming, anything with repeated impact sounds): skip Whisper entirely, run detect_transients.py to find each strike, cut on each one. → Step 1B. Skip Step 5; the strike sounds are the rhythm.
Hybrid: dialogue mode for talking sections, action mode for the rest, intercut. Use both 1A and 1B.
If the user says "I'm not talking in this," you're in action mode. If they say "cut on each X" (chop, hit, punch, drumbeat, swing, footstep), you're in action mode. Default to dialogue mode otherwise.
Inputs
A video file path (the user will provide it; otherwise ask)
Optional: requested format (9:16, 16:9, 1:1) — if not given, ask after candidates are picked
Optional: subtitle style preference — if not given, ask before captioning
Tooling (use only the fastest path)
Whisper:whisper --model tiny.en --word_timestamps True --output_format json (≈10× faster than small.en; quality fine for English). For non-English: --model base (drop --language).
ffmpeg: add -hwaccel videotoolbox for decode and -preset ultrafast for renders. Use -c:v libx264 -crf 20 for the final master.
Numpy for audio alignment (FFT cross-correlation). No scipy/cv2 needed.
Scripts:<skill-dir>/scripts/ (where <skill-dir> is the directory containing this SKILL.md — typically ~/.claude/skills/clipify/)
analyze.py — speaker timeline from two ROI motion files
build_pan.py — ffmpeg crop x-expression with hard cuts
build_ass.py — opus-style ASS captions from whisper JSON
audio_align.py — find offset of a sub-clip in a longer source
detect_transients.py — find sharp impact sounds (action mode); see --help
Working dir: /tmp/clipify/ (mkdir at start, leave artifacts for debugging).
Awkward pauses: Whisper segment with long gap, or filler ("uh", "um")
Self-roast / quotable one-liners: short declarative sentences that stand alone
Audio peaks: detect via ffmpeg -af volumedetect or look for rapid back-and-forth (alternating short Whisper segments)
For each candidate, propose: [start, end, why-it's-funny, suggested title]. Aim for 10–25s clips. Show the list and let the user confirm/pick.
Step 1B — Find each strike (action mode)
Replace Whisper with audio-transient detection. The detector finds sharp impacts (axe-on-wood, fist-on-pad, drumhead, ball-on-bat, wood landing on a pile) by computing spectral flux on the 1–6 kHz band — the broadband impulse an impact creates that ambient/wind doesn't.
--min-flux 30 is the sane default. Real impacts register 50–300; ambient/wind sits at 5–15. Too many false positives → raise to 40–50. Too few hits → drop to 20.
--min-gap 0.6 (seconds) is the closest two strikes can be. Fast drumming may need 0.2; chopping is fine at 0.6–1.0.
--band 1000:6000 covers wood/metal/glass impacts. Heavy thuds (kick drum, body shots) live lower (--band 200:2000); whistles/clinks/snare cracks higher (--band 4000:10000).
For multi-clip sources (a folder of phone clips), run the detector on each clip and pick a varied set across angles. Aim for 50–65 strikes for a 45–60s montage at ~0.9s per shot.
Each "shot" should start ~0.4s before the strike (showing wind-up) and end ~0.5s after (strike + brief follow-through). That's ~0.9s per beat.
Step 1.5 — Verify each candidate is in frame
Always do this before rendering, in either mode. Audio detection finds the sound of an event; the camera might not have captured it. Skipping this is the #1 way to get user feedback like "you cut on chops where I'm not even visible."
bash
# Sample one frame at each candidate strike time T:
for T in $STRIKE_TIMES; do
ffmpeg -y -ss "$T" -i "$VIDEO" -frames:v 1 -vf scale=320:-1 \
/tmp/clipify/verify_${T}.jpg
done
Read each verify image and drop the candidate if:
The subject is bent down, off-frame, or behind an obstacle
A thumb is on the lens (yes, this happens — and you only catch it visually)
It's clearly a different sound source (door slam, dropped tool) that triggered the detector
For ~30 candidates this is one fast ffmpeg call each plus a single batch image read. Cheap insurance.
(Use -c copy for instant trim. Re-encode only if cuts must be frame-accurate.)
Step 3 — Decide the output format
Ask the user (skip if they already specified): "9:16 (TikTok / Reels), 16:9 (YouTube), or 1:1 (Insta feed)?"
Step 4 — If 16:9 → 9:16: pan-between-faces vs split-screen
Detect source aspect with ffprobe. If source is 16:9 and target is 9:16, ask:
"Two options: (a) hard-cut pan that follows whoever is speaking (single face on screen at a time), or (b) split-screen stack with both faces visible. Which do you want?"
Skip the question if there's only one face (single-talker clip). For single-talker, just center-crop.
Step 4a — Pan-between-faces (recommended for fast-cut talking-head dialogue)
Locate the two face ROIs. Sample one frame: ffmpeg -ss <middle> -i <clip> -frames:v 1 /tmp/clipify/probe.jpg. Read it. Eyeball each face's mouth+chin area as x,y,w,h in the source's pixel space. (No cv2 needed — camera is static within a clip; one frame is enough.) Verify by drawing boxes:
Build <RIGHT_SPEAKER_ENABLE> from segments.json as between(t,a,b)+between(t,a,b)+... over the right-speaker segments. Tile crops should target ~720×640 around each face (1.125:1 to match 1080×960).
Step 4c — Time-warping reveals (optional)
When the user wants a slow scenic / pan / reveal shot tightened ("cut this in half") without losing the arc, speed-ramp instead of trimming. Trimming forces you to drop part of the arc; speed-ramping preserves all the beats at higher tempo.
1.5x — human movement that should feel "slightly brisk" without looking sped up
2x — punchier reveal; still reads as natural
3x–4x — time-lapse vibe (chain atempo=2.0,atempo=2.0 for 4x; atempo accepts only 0.5–2.0 per filter instance)
Drop -af atempo and mute the segment if the audio is just ambient/wind and the chipmunking would be distracting
Useful when the rest of the cut is rhythmic (chop montage, chat back-and-forth) and the reveal would otherwise feel like a dead spot.
Step 5 — Add subtitles
Skip this step in action mode — the strike sounds are the rhythm and captions just clutter the visual.
Ask once (only if user hasn't already specified a style):
"Three subtitle styles: opus (big bold white, yellow active-word highlight), karaoke (4-word chunks, green highlight), minimal (clean Helvetica, no highlight). Or paste an example you like."
If they paste a reference image/example: match the font, size, weight, color, position, and animation as closely as possible — write a custom ASS by hand or extend build_ass.py.
Else use the preset:
bash
# Re-run whisper on the trimmed clip for accurate timestamps relative to clip start
whisper /tmp/clipify/clip_panned.mp4 --model tiny.en --word_timestamps True --output_format json --output_dir /tmp/clipify --language en
python3 <skill-dir>/scripts/build_ass.py /tmp/clipify/clip_panned.json /tmp/clipify/captions.ass opus
Save each output to <source_dir>/clipify_out/ (mkdir if missing)
Print one line per clip: name, duration, what was funny, output path
Open the first output with open <path> so the user can check it
Offer to iterate (different style, different ROI, swap to split-screen, retime captions)
Pitfalls (lessons from prior runs — don't repeat)
Audio detection ≠ visible event. Always run Step 1.5 (verify each candidate frame) before rendering. The detector finds the sound of a chop, not whether the chopper is in frame. Hits where the subject is bent over, off-camera, or where a thumb is on the lens still trigger the audio detector. Catch them before rendering.
Spectral-flux band matters. Default --band 1000:6000 covers wood/metal/glass impacts. Heavy low thuds (kick drum, body shots) need --band 200:2000. Whistles, clinks, snare cracks need --band 4000:10000. If --min-flux 30 returns nothing, try lowering to 15 first; if it returns thousands, try a different band before raising the threshold.
Speed-ramp audio in pairs.atempo accepts only 0.5–2.0 in a single filter; for 4x chain atempo=2.0,atempo=2.0. Without atempo, setpts alone gives chipmunk audio.
Don't over-tune ROIs. Two iterations max. Motion-diff is forgiving — wider ROIs covering mouth+chin work fine even if not perfectly mouth-centered.
Watch out for scene cuts inside a clip. Run ffmpeg -filter:v "select='gt(scene,0.3)',showinfo" -f null - to count cuts. If a 16:9→9:16 clip has many cuts, the fixed face ROIs only work for the dominant scene; warn the user, and offer to either pick a single-take clip or accept off-center framing during cuts.
Source resolution matters. If source is 4K, either downscale to 1920×1080 first (faster, fine for 9:16 output) or multiply all ROI/pan coordinates by 2.
Burned-in subtitles in source. Some "raw" clips still have subtitles. If so, find the no-subs master via audio cross-correlation (audio_align.py) and trim from there.
Don't run whisper on the full feature-length source if a short clip suffices. Whisper the trimmed clip after Step 2; only whisper the full source in Step 1 if you need a transcript to find funny moments.
State the plan in one line, then act. Don't narrate every iteration.
Clipify 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.
Provider-independent captions and media accessibility direction for AI agents producing or finishing generated videos, ads, social clips, explainers, avatar videos, documentaries, podcasts/video…
Forge a title + subtitle (or reframe) for a BOOK, article, talk, or any technical piece, then hand off to a cover so it has LIFE and honesty — not clinical/dated.
Fetches timestamped captions or plain-text transcripts for any YouTube video through the TranscriptAPI service, for reading, quoting, translating or accessibility.
Find compelling moments in a video — funny dialogue OR repeated impact actions like axe chops, hits, throws, drumbeats — cut them as standalone clips, optionally reformat 16:9 ↔ 9:16, time-warp pans…. Clipify is an agent skill from louisedesadeleer/clipify. Find compelling moments in a video — funny dialogue OR repeated impact actions like axe chops, hits, throws, drumbeats — cut them as standalone clips, optionally reformat 16:9 ↔ 9:16, time-warp pans for tighter reveals, and burn opus-style word-by-word captions.
When should I use Clipify?
Clipify fits situations like: the user mentions clipify; cut clips from this video; make shorts from this; find funny moments.
How do I install Clipify in Claude Code?
Run `npx skills add louisedesadeleer/clipify --skill clipify -a claude-code`. Or copy the skill folder (the louisedesadeleer/clipify repository) into .claude/skills/clipify in your project. Claude Code loads it when a task matches its description.
How do I install Clipify in Codex?
Run `npx skills add louisedesadeleer/clipify --skill clipify -a codex`. Or copy the skill folder (the louisedesadeleer/clipify repository) into .agents/skills/clipify in your project. Codex loads it when a task matches its description.
Can I use Clipify 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 louisedesadeleer/clipify --skill clipify -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/clipify, .gemini/skills/clipify, .github/skills/clipify and .opencode/skills/clipify in your project.
What does Clipify need to run?
Going by SKILL.md and its folder, Clipify needs Python for the scripts in its folder and the command-line tools its instructions call (ffmpeg, python3 and whisper). Our summary lists: Python 3.
Does Clipify access the network?
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.
Is Clipify safe to install?
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. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
What licence does Clipify use?
Clipify is published under the MIT licence (from the LICENSE file in the skill folder). It allows redistribution, so the full SKILL.md is shown on this page.
How many tokens does Clipify use?
About 3.6k tokens (SKILL.md is roughly 14k 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 Clipify?
Skills that share tags, products or a category with Clipify: Captions Media Accessibility (calesthio/generative-media-skills, 191 stars), Oracle Title Forge (Soul-Brews-Studio/arra-oracle-skills-cli, 122 stars), Multimedia Accessibility (Owl-Listener/inclusive-design-skills, 103 stars) and YouTube Captions Fetcher (ZeroPointRepo/youtube-skills, 1k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
Who maintains Clipify?
louisedesadeleer (a GitHub user) maintains it in louisedesadeleer/clipify, which has 587 GitHub stars. The repository was last updated on August 24, 2026.
Source: louisedesadeleer/clipify on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.