video-edit
Skill16 starsChanged 9 months agoMITView on GitHub
Complete video editing toolkit - silence removal, auto-captions, vertical crop, YouTube clipping, 3D transitions, and social media compression. Use when user asks to edit video, remove silences, add captions/subtitles, crop to vertical/shorts, download YouTube clips, compress video, or create video teasers.
- Reads credentials
- Installs packages
27 other projects use a version of this, 3 of them edited.
Adopted by
Most recently taken up by
- MomoFadaly/video-edittheir own version, first seen Nov 8, 2026
- YildizDikme/claude-video-edittheir own version, first seen Nov 8, 2026
- omergocmen/ai-video-edit-workflowtheir own version, first seen Nov 8, 2026
- OpenMontageInc/OpenMontagetheir own version, first seen Nov 8, 2026
- calesthio/OpenMontagetheir own version, first seen Nov 8, 2026
- video-db/skillstheir own version, first seen Nov 1, 2026
Used with
Projects with it also use flux-2-klein, flux-kontext and 10 more.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
agentspace-soSkillflux-2-klein
Generate images with Flux 2 Klein (Black Forest Labs' distilled fast variant of Flux 2) on RunComfy — bundled with the model's documented prompting patterns so the skill gets sharper output than naive prompting against the same model. Documents Flux 2 Klein's strengths (sub-second latency, multi-reference brand styling, declarative subject-first prompts), the step-count strategy (4–8 for fast iteration, ~25 for polish), the 9B vs 4B variant trade-off, and when to route to Flux 2 Pro / Seedream 5 / GPT Image 2 instead. Calls `runcomfy run blackforestlabs/flux-2-klein/9b/text-to-image` (or `/4b/`) through the local RunComfy CLI. Triggers on "flux 2 klein", "flux-2-klein", "flux klein", "BFL flux 2", or any explicit ask to generate with this model.
Also in 4 projects that use this
agentspace-soSkillflux-kontext
Edit images with Flux 1 Kontext Pro (Black Forest Labs' precise local image-edit model) on RunComfy — bundled with the model's documented prompting patterns so the skill gets sharper output than naive prompting against the same model. Documents Flux Kontext's strengths (single-reference precise local edits, strong prompt control, consistent high-fidelity outputs), the schema (single image + prompt), and when to route to Nano Banana Edit / GPT Image 2 edit / Flux 2 Klein instead. Calls `runcomfy run blackforestlabs/flux-1-kontext/pro/edit` through the local RunComfy CLI. Triggers on "flux kontext", "flux-kontext", "flux 1 kontext", "kontext", "BFL kontext", or any explicit ask to edit with this model.
Also in 4 projects that use this
prime-skillsSkillace-step
Generate, inpaint, and outpaint music with ACE Step on RunComfy via the `runcomfy` CLI. ACE Step is StepFun-AI's open-weights music foundation model — tag-driven composition (genre, mood, instruments), multilingual lyrics with section markers, 5 s to 4 min stereo output, $0.0002–0.0003 per second (≈ 27× cheaper than ElevenLabs Music). Four endpoints: ACE Step text-to-audio (the default), ACE Step 1.5 text-to-audio (50+ language lyrics, refined structured-lyric handling), ACE Step audio-inpaint (regenerate a time range inside an existing track), ACE Step audio-outpaint (extend an existing track before or after). Triggers on "ace step", "ace-step", "acestep", "ACE music", "open music model", "cheap AI music", "inpaint audio", "audio inpaint", "extend music", "audio outpaint", "lengthen track", "music with tags", or any explicit ask to generate or edit music with ACE Step.
Also in 3 projects that use this
prime-skillsSkillcodex-pet
Codex Pet generator on RunComfy. Build a Codex-compatible Codex Pet spritesheet.webp + pet.json from a single reference image, drop it into `${CODEX_HOME:-$HOME/.codex}/pets/<name>/` and Codex picks it up as a custom Codex Pet next to the 8 built-ins. This skill produces the exact Codex Pet atlas Codex expects (1536x1872 PNG/WebP, 8 cols x 9 rows, 192x208 cells, 9 animation states — idle, running-right, running-left, waving, jumping, failed, waiting, running, review). Calls OpenAI GPT Image 2 edit ONCE via the local RunComfy CLI as `runcomfy run openai/gpt-image-2/edit` to produce a canonical Codex Pet pose, then assembles all 9 animation rows programmatically with ImageMagick micro-transforms — no Codex Pro, no `$imagegen`, no OPENAI_API_KEY required, only RUNCOMFY_TOKEN. Triggers on "codex pet", "create codex pet", "make codex pet", "hatch codex pet", "/hatch image", "desktop pet codex", "codex pets", "spritesheet.webp", or any explicit ask to build a custom pet for OpenAI Codex.
Also in 3 projects that use this
- +3 more from agentspace-so
- +5 more from prime-skills
Other versions27 projects use a version of this.
Word for word · 0
None found.
Edited · 3
- nickjwells/skills-workspace★ 2848% same
- MohamedEssam0-0/claude-skills★ 048% same
- phuongdo/claude-skills★ 048% same
Wrote their own version · 24
- calesthio/OpenMontage★ 78ksame name
- OpenMontageInc/OpenMontage★ 78ksame name
- hoodini/ai-agents-skills★ 295same name
- goodnight000/cstack★ 161same name
- video-db/skills★ 140same name
- tenfoldmarc/video-edit-skill★ 42same name
- prime-skills/runcomfy-agent-skills★ 41same name
- YildizDikme/claude-video-edit★ 41same name
- omergocmen/ai-video-edit-workflow★ 39same name
- genmedia-labs/skills★ 26same name
14 more not listed
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository39 other files it gives its agents.
- add-webhookSkill
- aws-production-deploySkill
- build-in-public-youtubeSkill
- casualize-namesSkill
- classify-leadsSkill
- create-proposalSkill
- cross-niche-outliersSkill
- design-websiteSkill
- euron-qaSkill
- excalidraw-diagramSkill
- excalidraw-visualsSkill
- generate-reportSkill
- ghost-browserSkill
- gmail-inboxSkill
- gmail-labelSkill
- gmaps-leadsSkill
- image-to-videoSkill
- instantly-autoreplySkill
- instantly-campaignsSkill
- linkedin-carousel-handwrittenSkill
- literature-researchSkill
- local-serverSkill
- mac-controlSkill
- modal-deploySkill
- Nano Banana 2 Image Generation MasterSkill
- onboarding-kickoffSkill
- pan-3d-transitionSkill
- recreate-thumbnailsSkill
- scrape-leadsSkill
- send-telegramSkill
- skill-builderSkill
- skool-monitorSkill
- skool-ragSkill
- thumbnail-generatorSkill
- title-variantsSkill
- upwork-applySkill
- welcome-emailSkill
- whisper-voiceSkill
- youtube-outliersSkill
The file
We split this skill into the rules it gives an agent
1 rule. 0 are common, 0 are distinctive, and 1 is very specific to this project.
0
Common
Most of the 22 edited versions we read keep these.
0
Distinctive
This author's own choices. Worth a look.
1
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 407
All scripts support --help for full argument list
“Common” is measured: kept by at least 6 in 10 of the 22 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Video Editing Toolkit
Goal
Complete video production pipeline: silence removal, auto-captions, vertical cropping, YouTube clipping, compression, and 3D transitions.
Scripts (7 total)
| Script | Purpose |
jump_cut_vad_singlepass.py | Remove silences with neural VAD (Silero) |
auto_captions.py | Generate + burn styled subtitles (Whisper + FFmpeg) |
vertical_crop.py | Auto-crop 16:9 → 9:16 with face tracking |
youtube_clip.py | Download YouTube + AI chapter clipping |
compress_video.py | Social media compression with platform presets |
simple_video_edit.py | Full pipeline: silence removal + transcription + metadata + upload |
insert_3d_transition.py | 3D swivel teaser insertion |
Quick Start Recipes
Recipe 1: Full Social Media Pipeline
# 1. Remove silences
python3 ./scripts/jump_cut_vad_singlepass.py input.mp4 .tmp/edited.mp4
# 2. Add captions
python3 ./scripts/auto_captions.py .tmp/edited.mp4 .tmp/captioned.mp4 --word-level --max-words 2
# 3. Crop to vertical for Shorts/Reels
python3 ./scripts/vertical_crop.py .tmp/captioned.mp4 .tmp/vertical.mp4
# 4. Compress for platform
python3 ./scripts/compress_video.py .tmp/vertical.mp4 output.mp4 --preset instagram-reelRecipe 2: YouTube → Shorts Pipeline
# 1. Download + auto-clip YouTube video
python3 ./scripts/youtube_clip.py "https://youtube.com/watch?v=..." --auto-clip --output-dir clips/
# 2. Add captions to best clip
python3 ./scripts/auto_captions.py clips/chapters/01_intro.mp4 .tmp/captioned.mp4 --word-level
# 3. Crop to vertical
python3 ./scripts/vertical_crop.py .tmp/captioned.mp4 .tmp/vertical.mp4
# 4. Compress for YouTube Shorts
python3 ./scripts/compress_video.py .tmp/vertical.mp4 short.mp4 --preset youtube-shortsRecipe 3: Quick Edit + Upload
# All-in-one: silence removal + transcription + metadata + Auphonic upload
python3 ./scripts/simple_video_edit.py --video input.mp4 --title "My Video"Script 1: VAD Silence Removal
File: ./scripts/jump_cut_vad_singlepass.py
How It Works
- Extracts audio as WAV (16kHz mono)
- Runs Silero VAD to detect speech segments
- Merges close segments, adds padding
- Uses FFmpeg trim+concat to join segments in single pass
- Hardware encodes with hevc_videotoolbox (H.265, 17Mbps, 30fps)
CLI Arguments
| Argument | Default | Description |
--min-silence | 0.5 | Min silence duration to cut (seconds) |
--min-speech | 0.25 | Min speech duration to keep (seconds) |
--padding | 100 | Padding around speech (ms) |
--merge-gap | 0.3 | Merge segments closer than this (seconds) |
--keep-start | true | Always start from 0:00 |
Usage
python3 ./scripts/jump_cut_vad_singlepass.py input.mp4 output.mp4
python3 ./scripts/jump_cut_vad_singlepass.py input.mp4 output.mp4 --min-silence 1.0 --padding 200Processing Time
~8 minutes for a 49-min 4K video
Script 2: Auto-Captions
File: ./scripts/auto_captions.py
How It Works
- Transcribes video using faster-whisper (word-level timestamps)
- Generates SRT subtitles (segment-level or word-level)
- Burns styled captions into video with FFmpeg
CLI Arguments
| Argument | Default | Description |
--model | base | Whisper model: tiny, base, small, medium, large-v3 |
--language | auto | Force language (en, es, hi, etc.) |
--word-level | false | Short punchy captions (1-3 words at a time) |
--max-words | 3 | Max words per caption in word-level mode |
--font-size | 22 | Caption font size (auto-scales for vertical) |
--font-color | white | Text color: white, yellow, cyan, green, red, orange, pink |
--outline-color | black | Outline color |
--position | bottom | Caption position: bottom, top, middle |
--srt-only | false | Only generate SRT, don't burn |
--srt-path | auto | Custom SRT output path |
--bold | true | Bold text |
Usage
# Basic captions
python3 ./scripts/auto_captions.py input.mp4 output.mp4
# Word-level (CapCut/Submagic style)
python3 ./scripts/auto_captions.py input.mp4 output.mp4 --word-level --max-words 2
# Yellow captions at top
python3 ./scripts/auto_captions.py input.mp4 output.mp4 --font-color yellow --position top
# SRT only (no burn)
python3 ./scripts/auto_captions.py input.mp4 --srt-only
# High accuracy
python3 ./scripts/auto_captions.py input.mp4 output.mp4 --model large-v3Dependencies
pip install faster-whisperScript 3: Vertical Crop
File: ./scripts/vertical_crop.py
How It Works
- Samples frames throughout the video
- Detects faces using OpenCV Haar cascade
- Smooths face positions to avoid jitter
- Crops 16:9 → 9:16 centered on the speaker
- For moving subjects: segments video into 2s chunks with per-segment tracking
CLI Arguments
| Argument | Default | Description |
--ratio | 9:16 | Target aspect ratio (e.g., 9:16, 4:5, 1:1) |
--position | auto | Crop position: auto (face tracking), left, center, right |
--smoothing | 30 | Smoothing window in frames |
--sample-interval | 5 | Sample every N frames for detection |
Usage
# Auto face-tracking crop
python3 ./scripts/vertical_crop.py input.mp4 output.mp4
# Square crop (Instagram post)
python3 ./scripts/vertical_crop.py input.mp4 output.mp4 --ratio 1:1
# 4:5 crop (Instagram feed)
python3 ./scripts/vertical_crop.py input.mp4 output.mp4 --ratio 4:5
# Center crop (no tracking)
python3 ./scripts/vertical_crop.py input.mp4 output.mp4 --position centerDependencies
pip install opencv-python numpyScript 4: YouTube Clip
File: ./scripts/youtube_clip.py
How It Works
- Downloads video via yt-dlp (up to 4K)
- Extracts YouTube chapters if available
- Falls back to AI chapter generation (Whisper + Claude)
- Clips video into individual chapter files
CLI Arguments
| Argument | Default | Description |
--download-only | false | Only download, don't clip |
--max-quality | 1080 | Max quality: 480, 720, 1080, 1440, 2160 |
--audio-only | false | Download audio only (MP3) |
--start | none | Manual clip start (seconds) |
--end | none | Manual clip end (seconds) |
--auto-clip | false | AI-powered chapter detection and clipping |
--use-yt-chapters | true | Use YouTube chapters if available |
--max-clips | none | Limit number of clips |
--whisper-model | base | Whisper model for transcription |
--reencode | false | Re-encode clips (precise cuts) |
--output-dir | .tmp/clips | Output directory |
Usage
# Download only
python3 ./scripts/youtube_clip.py "https://youtube.com/watch?v=..." --download-only
# Auto-clip into chapters
python3 ./scripts/youtube_clip.py "https://youtube.com/watch?v=..." --auto-clip
# Extract specific range
python3 ./scripts/youtube_clip.py "https://youtube.com/watch?v=..." --start 60 --end 180 -o clip.mp4
# Download audio only
python3 ./scripts/youtube_clip.py "https://youtube.com/watch?v=..." --audio-only
# Top 3 clips only
python3 ./scripts/youtube_clip.py "https://youtube.com/watch?v=..." --auto-clip --max-clips 3Dependencies
pip install yt-dlp faster-whisper anthropicScript 5: Video Compressor
File: ./scripts/compress_video.py
Platform Presets
| Preset | Resolution | CRF | Max Duration | Max Size | Notes |
youtube | 1080p | 18 | none | none | High quality |
youtube-shorts | 1080x1920 | 20 | 60s | none | Vertical |
instagram-reel | 1080x1920 | 23 | 90s | none | Vertical |
instagram-post | 1080x1080 | 23 | 60s | none | Square/vertical |
tiktok | 1080x1920 | 23 | 180s | none | Vertical |
twitter | 1080p | 23 | 140s | 512MB | Auto-bitrate |
linkedin | 1080p | 23 | 600s | 200MB | Auto-bitrate |
telegram | 720p | 28 | none | 50MB | For bots |
whatsapp | 720p | 28 | 120s | 16MB | Aggressive |
small | 480p | 30 | none | none | Quick sharing |
CLI Arguments
| Argument | Default | Description |
--preset | none | Platform preset (see table above) |
--resolution | 1080 | Max height in pixels |
--crf | 23 | Quality (0=lossless, 51=worst) |
--audio-bitrate | 128k | Audio bitrate |
--target-size | none | Target file size in MB |
--max-duration | none | Max duration in seconds |
--list-presets | false | Show all presets |
Usage
# Platform preset
python3 ./scripts/compress_video.py input.mp4 output.mp4 --preset instagram-reel
python3 ./scripts/compress_video.py input.mp4 output.mp4 --preset whatsapp
# Target file size
python3 ./scripts/compress_video.py input.mp4 output.mp4 --target-size 25
# Custom
python3 ./scripts/compress_video.py input.mp4 output.mp4 --resolution 720 --crf 28
# List all presets
python3 ./scripts/compress_video.py input.mp4 output.mp4 --list-presetsScript 6: Simple Video Edit (Full Pipeline)
File: ./scripts/simple_video_edit.py
How It Works
- FFmpeg silence detection + cutting
- Audio normalization (loudnorm)
- Whisper transcription
- Claude-generated YouTube metadata (summary + chapters)
- Auphonic upload → YouTube (private draft)
CLI Arguments
| Argument | Default | Description |
--video | required | Input video path |
--title | required | YouTube title |
--thumbnail | none | Thumbnail image path |
--no-upload | false | Skip Auphonic upload |
--no-normalize | false | Skip audio normalization |
--upload-only | false | Skip editing, just upload |
--silence-threshold | -35 | Silence threshold in dB |
--silence-duration | 3.0 | Min silence duration (seconds) |
Usage
# Full pipeline
python3 ./scripts/simple_video_edit.py --video input.mp4 --title "My Video"
# Local only
python3 ./scripts/simple_video_edit.py --video input.mp4 --title "Test" --no-uploadDependencies
pip install anthropic faster-whisper requests python-dotenv
# Requires: ANTHROPIC_API_KEY, AUPHONIC_API_KEY in .envScript 7: 3D Swivel Teaser
File: ./scripts/insert_3d_transition.py
How It Works
- Extracts frames from later in video (default: 60s onwards)
- Creates 3D rotating "swivel" animation via Remotion
- Splits video: intro → transition → main content
- Re-encodes and concatenates with audio preserved
CLI Arguments
| Argument | Default | Description |
--insert-at | 3 | Where to insert teaser (seconds) |
--duration | 5 | Teaser duration (seconds) |
--teaser-start | 60 | Where to sample content from (seconds) |
--bg-color | #2d3436 | Background color (hex) |
--bg-image | none | Background image path |
Final Timeline
[0-3s intro] [3-8s swivel teaser @ 100x] [8s onwards: edited content]
Audio: Original audio plays continuouslyDependencies
pip install torch # For Silero VAD (jump_cut script)
brew install ffmpeg node # macOS
cd video_effects && npm install # For Remotion 3D renderingAll Dependencies (Install Once)
# Core (required for all scripts)
brew install ffmpeg
# Silence removal
pip install torch
# Auto-captions + YouTube clip
pip install faster-whisper
# Vertical crop
pip install opencv-python numpy
# YouTube download
pip install yt-dlp
# AI features (chapters, metadata)
pip install anthropic
# Full pipeline (simple_video_edit)
pip install requests python-dotenv
# 3D transitions
brew install node
cd scripts/video_effects && npm installTroubleshooting
| Issue | Solution |
| Cuts feel abrupt | --padding 200 in jump_cut |
| Too much cut | --min-silence 1.0 in jump_cut |
| Captions too small | --font-size 32 in auto_captions |
| Vertical video detected | Font auto-scales 1.3x |
| Won't play in QuickTime | Ensure hvc1 codec tag |
| Face not detected | Try --position center in vertical_crop |
| YouTube download fails | Update yt-dlp: pip install -U yt-dlp |
| File too large | Use --preset whatsapp or --target-size 25 |
| Hardware encoder fails | Auto-falls back to software (libx264) |
Technical Details
- macOS: Hardware encoding (hevc_videotoolbox / h264_videotoolbox)
- Fallback: libx264/libx265 with CRF
- Audio: AAC 128-192kbps
- Uses
hvc1codec tag for QuickTime compatibility - All scripts support
--helpfor full argument list
Schema
Inputs
| Name | Type | Required | Description |
input_video | file_path | Yes | Input video file path |
recipe | string | No | Pipeline recipe: full-social, youtube-shorts, quick-edit |
preset | string | No | Compression preset: youtube, instagram-reel, tiktok, whatsapp, etc. |
Outputs
| Name | Type | Description |
output_video | file_path | Processed video file path |
Credentials
| Name | Source |
ANTHROPIC_API_KEY | .env (for AI chapters) |
AUPHONIC_API_KEY | .env (for upload) |
Composable With
Skills that chain well with this one: pan-3d-transition, recreate-thumbnails
Cost
Free locally (FFmpeg + Silero VAD)
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

