Shorts Video Maker
uxjoseph/content-marketing-team
YouTube 영상에서 쇼츠 클립 3개를 자동 제작합니다. An agent skill from uxjoseph/content-marketing-team.
FFmpeg automation for cutting, trimming, concatenating videos.
$ npx skills add curiositech/some_claude_skills --skill video-processing-editing -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install curiositech/some_claude_skills video-processing-editing --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/curiositech/some_claude_skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/video-processing-editing .claude/skills/video-processing-editing && 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 "video-processing-editing" agent skill from https://github.com/curiositech/some_claude_skills/tree/main/.claude/skills/video-processing-editing into .claude/skills/video-processing-editing/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "video-processing-editing", 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/curiositech/some_claude_skills/tree/main/.claude/skills/video-processing-editingType 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 curiositech/some_claude_skills --skill video-processing-editing -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install curiositech/some_claude_skills video-processing-editing --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/curiositech/some_claude_skills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.claude/skills/video-processing-editing .agents/skills/video-processing-editing && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "video-processing-editing" agent skill from https://github.com/curiositech/some_claude_skills/tree/main/.claude/skills/video-processing-editing into .agents/skills/video-processing-editing/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "video-processing-editing", 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 curiositech/some_claude_skills --skill video-processing-editing -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install curiositech/some_claude_skills video-processing-editing --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/curiositech/some_claude_skills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.claude/skills/video-processing-editing .cursor/skills/video-processing-editing && 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 "video-processing-editing" agent skill from https://github.com/curiositech/some_claude_skills/tree/main/.claude/skills/video-processing-editing into .cursor/skills/video-processing-editing/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "video-processing-editing", 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/curiositech/some_claude_skills.git --path .claude/skills/video-processing-editing--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 curiositech/some_claude_skills --skill video-processing-editing -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install curiositech/some_claude_skills video-processing-editing --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/curiositech/some_claude_skills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.claude/skills/video-processing-editing .gemini/skills/video-processing-editing && 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 "video-processing-editing" agent skill from https://github.com/curiositech/some_claude_skills/tree/main/.claude/skills/video-processing-editing into .gemini/skills/video-processing-editing/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "video-processing-editing", 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 curiositech/some_claude_skills video-processing-editingInstalls 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 curiositech/some_claude_skills --skill video-processing-editing -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/curiositech/some_claude_skills.git skills-src && mkdir -p .github/skills && cp -r skills-src/.claude/skills/video-processing-editing .github/skills/video-processing-editing && 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 "video-processing-editing" agent skill from https://github.com/curiositech/some_claude_skills/tree/main/.claude/skills/video-processing-editing into .github/skills/video-processing-editing/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "video-processing-editing", 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 curiositech/some_claude_skills --skill video-processing-editing -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install curiositech/some_claude_skills video-processing-editing --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/curiositech/some_claude_skills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.claude/skills/video-processing-editing .opencode/skills/video-processing-editing && 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 "video-processing-editing" agent skill from https://github.com/curiositech/some_claude_skills/tree/main/.claude/skills/video-processing-editing into .opencode/skills/video-processing-editing/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "video-processing-editing", 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.
video-processing-editingFFmpeg automation for cutting, trimming, concatenating videos.
Video Processing Editing is an agent skill from curiositech/some_claude_skills. FFmpeg automation for cutting, trimming, concatenating videos. Audio mixing, timeline editing, transitions, effects. Export optimization for YouTube, social media. Subtitle handling, color grading, batch processing. Use for videogen projects, content creation, automated video production. Activate on "video editing", "FFmpeg", "trim video", "concatenate", "transitions", "export optimization". NOT for real-time video editing UI, 3D compositing, or motion graphics.
Its SKILL.md is about 4.2k tokens, which your agent loads only when the skill is triggered. The skill folder holds 16 other files, including scripts and reference files (for example `.claude-plugin/plugin.json`, `references/export-optimization.md` and `references/ffmpeg-guide.md`).
It sits in Media & Creative, covering Video production. It works with FFmpeg and YouTube. The repository describes itself as: Claude skills that make my life easier. The licence is MIT.
Read from SKILL.md and the folder at commit 6713fc7. It shows what the files ask for, not the result of running them.
Pre-approves these tools, so the agent can use them without asking each time:
ReadWriteEditBash(ffmpeg*ffprobe*python*)From allowed-tools in the SKILL.md frontmatter.
Ships 7 files in scripts/ (Python), which the agent can run.
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.
Video Processing Editing loads about 4.2k tokens when it runs, and up to ~13k if it reads all its reference files. Until then it costs about 123 tokens; SKILL.md has 743 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); the scripts in this folder are not scanned.
The full file from curiositech/some_claude_skills at commit 6713fc7, republished under its MIT licence (© curiositech). 743 words, ~4,248 tokens.
.claude/skills/video-processing-editing/SKILL.md (or your agent's skills folder). This skill also uses 12 other files; get the full folder from GitHub.Expert in FFmpeg-based video editing, processing automation, and export optimization for modern content creation workflows.
✅ Use for:
❌ NOT for:
| Tool | Speed | Features | Use Case |
|---|---|---|---|
| FFmpeg | Very Fast | CLI automation | Production pipelines |
| MoviePy | Medium | Python API | Programmatic editing |
| PyAV | Fast | Low-level control | Custom processing |
| DaVinci Resolve | Slow | Full NLE | Manual editing |
Decision tree:
Need automation? → FFmpeg
Need Python API? → MoviePy
Need frame-level control? → PyAV
Need manual editing? → DaVinci ResolveNovice thinking: "Just cut the video at any timestamp"
Problem: Causes artifacts, black frames, and playback issues.
Wrong approach:
# ❌ Cut at arbitrary timestamp (not keyframe-aligned)
ffmpeg -i input.mp4 -ss 00:01:23.456 -to 00:02:45.678 -c copy output.mp4
# Result: Black frames, artifacts, sync issuesWhy wrong:
-c copy (stream copy) without keyframe alignment breaks playbackCorrect approach 1: Re-encode for precise cuts
# ✅ Re-encode for frame-accurate cutting
ffmpeg -i input.mp4 -ss 00:01:23.456 -to 00:02:45.678 \
-c:v libx264 -crf 18 -preset medium \
-c:a aac -b:a 192k \
output.mp4
# Frame-accurate, but slower (re-encoding)Correct approach 2: Keyframe-aligned stream copy
# ✅ Fast cutting with keyframe alignment
# Step 1: Find keyframes near cut points
ffprobe -select_streams v -show_frames -show_entries frame=pkt_pts_time,key_frame \
-of csv input.mp4 | grep ",1$" | awk -F',' '{print $2}'
# Step 2: Cut at nearest keyframes (fast, no re-encoding)
ffmpeg -i input.mp4 -ss 00:01:22.000 -to 00:02:46.000 -c copy output.mp4
# Blazing fast, no quality loss, but not frame-accurateCorrect approach 3: Two-pass for best of both worlds
# ✅ Fast seek + precise cut
ffmpeg -ss 00:01:20.000 -i input.mp4 \
-ss 00:00:03.456 -to 00:01:25.678 \
-c:v libx264 -crf 18 -preset medium \
-c:a aac -b:a 192k \
output.mp4
# -ss BEFORE -i: Fast seek to keyframe (no decode)
# -ss AFTER -i: Precise trim (only decode needed portion)Performance comparison:
| Method | Time (1-hour video) | Accuracy | Quality |
|---|---|---|---|
| Stream copy (arbitrary) | 2s | ❌ Broken | ❌ Artifacts |
| Stream copy (keyframe) | 2s | ±2s | ✅ Perfect |
| Re-encode (simple) | 15min | ✅ Frame | ⚠️ Quality loss |
| Two-pass (optimal) | 3min | ✅ Frame | ✅ Perfect |
Timeline context:
-c copy added for stream copyingNovice thinking: "Apply all edits in one FFmpeg command"
Problem: Multiple re-encodings cause cumulative quality loss.
Wrong approach:
# ❌ Re-encode for each operation (quality degradation)
# Operation 1: Trim
ffmpeg -i input.mp4 -ss 00:01:00 -to 00:05:00 \
-c:v libx264 -crf 23 temp1.mp4
# Operation 2: Add audio
ffmpeg -i temp1.mp4 -i audio.mp3 -c:v libx264 -crf 23 \
-map 0:v -map 1:a temp2.mp4
# Operation 3: Add subtitles
ffmpeg -i temp2.mp4 -vf subtitles=subs.srt \
-c:v libx264 -crf 23 output.mp4
# Result: 3x re-encoding = significant quality lossWhy wrong:
Correct approach 1: Chain operations in single command
# ✅ Single-pass encoding with all operations
ffmpeg -ss 00:01:00 -i input.mp4 -i audio.mp3 \
-to 00:04:00 \
-vf "subtitles=subs.srt" \
-map 0:v -map 1:a \
-c:v libx264 -crf 18 -preset medium \
-c:a aac -b:a 192k \
output.mp4
# Single re-encode, all operations applied at onceCorrect approach 2: Use stream copy when possible
# ✅ Lossless operations with stream copy
# Trim (stream copy)
ffmpeg -i input.mp4 -ss 00:01:00 -to 00:05:00 -c copy temp.mp4
# Add audio (stream copy video, encode audio)
ffmpeg -i temp.mp4 -i audio.mp3 \
-map 0:v -map 1:a \
-c:v copy -c:a aac -b:a 192k \
temp2.mp4
# Burn subtitles (must re-encode video)
ffmpeg -i temp2.mp4 -vf subtitles=subs.srt \
-c:v libx264 -crf 18 -preset medium \
-c:a copy \
output.mp4
# Only 1 video re-encode (for subtitles)Quality comparison:
| Method | Encoding Passes | Quality (VMAF) | Time |
|---|---|---|---|
| 3x re-encode (CRF 23) | 3 | 82/100 | 45min |
| Single pass (CRF 23) | 1 | 91/100 | 15min |
| Stream copy + 1 encode | 1 | 95/100 | 18min |
| All stream copy | 0 | 100/100 | 30s |
Novice thinking: "Just concatenate videos together"
Problem: Color shifts, mismatched brightness, broken playback.
Wrong approach:
# ❌ Concatenate videos with different color spaces
# clip1.mp4: BT.709 (HD), yuv420p
# clip2.mp4: BT.601 (SD), yuvj420p (full range)
# clip3.mp4: BT.2020 (HDR), yuv420p10le
# Create concat list
echo "file 'clip1.mp4'" > list.txt
echo "file 'clip2.mp4'" >> list.txt
echo "file 'clip3.mp4'" >> list.txt
# Concatenate without color normalization
ffmpeg -f concat -safe 0 -i list.txt -c copy output.mp4
# Result: Color shifts between clips, broken HDR metadataWhy wrong:
Correct approach:
# ✅ Normalize color space before concatenation
# Step 1: Analyze color space of each clip
ffprobe -v error -select_streams v:0 \
-show_entries stream=color_space,color_transfer,color_primaries,pix_fmt \
-of default=noprint_wrappers=1 clip1.mp4
# Step 2: Normalize all clips to common color space
# Target: BT.709 (HD), yuv420p, limited range
# Normalize clip1 (already BT.709)
ffmpeg -i clip1.mp4 -c copy clip1_normalized.mp4
# Normalize clip2 (BT.601 SD → BT.709 HD)
ffmpeg -i clip2.mp4 \
-vf "scale=in_range=full:out_range=limited,colorspace=bt709:iall=bt601:fast=1" \
-color_primaries bt709 \
-color_trc bt709 \
-colorspace bt709 \
-c:v libx264 -crf 18 -preset medium \
-c:a copy \
clip2_normalized.mp4
# Normalize clip3 (BT.2020 HDR → BT.709 SDR)
ffmpeg -i clip3.mp4 \
-vf "zscale=t=linear:npl=100,format=gbrpf32le,zscale=p=bt709,tonemap=hable:desat=0,zscale=t=bt709:m=bt709:r=limited,format=yuv420p" \
-color_primaries bt709 \
-color_trc bt709 \
-colorspace bt709 \
-c:v libx264 -crf 18 -preset medium \
-c:a copy \
clip3_normalized.mp4
# Step 3: Concatenate normalized clips
echo "file 'clip1_normalized.mp4'" > list.txt
echo "file 'clip2_normalized.mp4'" >> list.txt
echo "file 'clip3_normalized.mp4'" >> list.txt
ffmpeg -f concat -safe 0 -i list.txt -c copy output.mp4Color space guide:
| Standard | Color Space | Transfer | Primaries | Use Case |
|---|---|---|---|---|
| BT.601 | SD | bt470bg | bt470bg | Old SD content |
| BT.709 | HD | bt709 | bt709 | Modern HD/FHD |
| BT.2020 | UHD/HDR | smpte2084 | bt2020 | 4K HDR |
| sRGB | Web | iec61966-2-1 | bt709 | Web delivery |
Novice thinking: "Video and audio are separate, just overlay them"
Problem: Lip sync issues, audio drift, broken playback.
Wrong approach:
# ❌ Replace audio without sync consideration
ffmpeg -i video.mp4 -i audio.mp3 \
-map 0:v -map 1:a \
-c:v copy -c:a copy \
output.mp4
# Problems:
# - Audio duration ≠ video duration
# - No audio stretching/compression
# - Drift over timeWhy wrong:
Correct approach 1: Stretch/compress audio to match video
# ✅ Adjust audio speed to match video duration
# Get durations
VIDEO_DUR=$(ffprobe -v error -show_entries format=duration \
-of default=noprint_wrappers=1:nokey=1 video.mp4)
AUDIO_DUR=$(ffprobe -v error -show_entries format=duration \
-of default=noprint_wrappers=1:nokey=1 audio.mp3)
# Calculate speed ratio
RATIO=$(echo "$VIDEO_DUR / $AUDIO_DUR" | bc -l)
# Stretch audio to match video (with pitch correction)
ffmpeg -i video.mp4 -i audio.mp3 \
-filter_complex "[1:a]atempo=${RATIO}[a]" \
-map 0:v -map "[a]" \
-c:v copy -c:a aac -b:a 192k \
output.mp4Correct approach 2: Precise offset and trim
# ✅ Sync audio with offset and trim
# Audio starts 0.5s late, trim to match video
ffmpeg -i video.mp4 -itsoffset 0.5 -i audio.mp3 \
-map 0:v -map 1:a \
-shortest \
-c:v copy -c:a aac -b:a 192k \
output.mp4
# -itsoffset: Delay audio by 0.5s
# -shortest: Trim to shortest streamCorrect approach 3: Mix multiple audio tracks with sync
# ✅ Mix dialogue, music, effects with precise timing
ffmpeg -i video.mp4 -i dialogue.wav -i music.mp3 -i sfx.wav \
-filter_complex "
[1:a]adelay=0|0[dlg];
[2:a]volume=0.3,adelay=500|500[mus];
[3:a]adelay=1200|1200[sfx];
[dlg][mus][sfx]amix=inputs=3:duration=first[a]
" \
-map 0:v -map "[a]" \
-c:v copy -c:a aac -b:a 256k \
output.mp4
# adelay: Precise millisecond timing
# amix: Mix multiple audio streams
# volume: Normalize levelsAudio sync checklist:
□ Verify video and audio durations match
□ Use -shortest to prevent excess audio
□ Apply adelay for precise timing offsets
□ Use atempo for speed adjustment (maintains pitch)
□ Set audio bitrate appropriately (128k-256k)
□ Test lip sync at beginning, middle, endNovice thinking: "One export settings for everything"
Problem: Wasted bandwidth, poor quality, rejected uploads, compatibility issues.
Wrong approach:
# ❌ Export everything at 4K 50 Mbps
ffmpeg -i input.mp4 \
-c:v libx264 -b:v 50M -s 3840x2160 \
-c:a aac -b:a 320k \
output.mp4
# For Instagram story: 2 GB file, rejected (max 100 MB)
# For YouTube: Could use 10 Mbps and look identical
# For Twitter: Exceeds bitrate limitsWhy wrong:
Correct approach: Platform-optimized exports
YouTube (recommended settings):
# ✅ YouTube 1080p upload
ffmpeg -i input.mp4 \
-c:v libx264 -preset slow -crf 18 \
-s 1920x1080 -r 30 \
-pix_fmt yuv420p \
-color_primaries bt709 -color_trc bt709 -colorspace bt709 \
-movflags +faststart \
-c:a aac -b:a 192k -ar 48000 \
youtube_1080p.mp4
# YouTube 4K upload
ffmpeg -i input.mp4 \
-c:v libx264 -preset slow -crf 18 \
-s 3840x2160 -r 60 \
-pix_fmt yuv420p \
-movflags +faststart \
-c:a aac -b:a 256k -ar 48000 \
youtube_4k.mp4Instagram (Stories, Reels, Feed):
# ✅ Instagram Story (9:16, max 100 MB, 15s)
ffmpeg -i input.mp4 \
-c:v libx264 -preset medium -crf 23 \
-s 1080x1920 -r 30 -t 15 \
-pix_fmt yuv420p \
-movflags +faststart \
-c:a aac -b:a 128k \
instagram_story.mp4
# ✅ Instagram Reel (9:16, max 90s)
ffmpeg -i input.mp4 \
-c:v libx264 -preset medium -crf 23 \
-s 1080x1920 -r 30 -t 90 \
-pix_fmt yuv420p \
-movflags +faststart \
-c:a aac -b:a 128k \
instagram_reel.mp4
# ✅ Instagram Feed (1:1 or 4:5)
ffmpeg -i input.mp4 \
-c:v libx264 -preset medium -crf 23 \
-s 1080x1080 -r 30 \
-pix_fmt yuv420p \
-movflags +faststart \
-c:a aac -b:a 128k \
instagram_feed.mp4Twitter/X:
# ✅ Twitter video (max 512 MB, 2:20)
ffmpeg -i input.mp4 \
-c:v libx264 -preset medium -crf 23 \
-s 1280x720 -r 30 -t 140 \
-maxrate 5000k -bufsize 10000k \
-pix_fmt yuv420p \
-movflags +faststart \
-c:a aac -b:a 128k \
twitter.mp4TikTok:
# ✅ TikTok (9:16, max 287 MB, 10 min)
ffmpeg -i input.mp4 \
-c:v libx264 -preset medium -crf 23 \
-s 1080x1920 -r 30 -t 600 \
-pix_fmt yuv420p \
-movflags +faststart \
-c:a aac -b:a 128k \
tiktok.mp4Web (HTML5 video):
# ✅ Web optimized (fast load, broad compatibility)
ffmpeg -i input.mp4 \
-c:v libx264 -preset medium -crf 23 \
-s 1920x1080 -r 30 \
-pix_fmt yuv420p \
-profile:v baseline -level 3.0 \
-movflags +faststart \
-c:a aac -b:a 128k -ar 48000 \
web.mp4Platform specs table:
| Platform | Max Size | Max Duration | Resolution | FPS | Bitrate | Codec |
|---|---|---|---|---|---|---|
| YouTube | Unlimited | Unlimited | 8K | 60 | Auto | H.264/VP9 |
| Instagram Story | 100 MB | 15s | 1080x1920 | 30 | ~5 Mbps | H.264 |
| Instagram Reel | 1 GB | 90s | 1080x1920 | 30 | ~8 Mbps | H.264 |
| 512 MB | 2:20 | 1920x1080 | 60 | 5 Mbps | H.264 | |
| TikTok | 287 MB | 10min | 1080x1920 | 30 | ~4 Mbps | H.264 |
| 5 GB | 10min | 1920x1080 | 30 | 5 Mbps | H.264 | |
| Web | Varies | Varies | 1920x1080 | 30 | 2-5 Mbps | H.264 |
Export optimization checklist:
□ Use -movflags +faststart for web (progressive download)
□ Use -pix_fmt yuv420p for broad compatibility
□ Set -r 30 for most platforms (avoid variable framerate)
□ Use -preset slow for final exports (better quality)
□ Use -preset ultrafast for drafts
□ Apply -maxrate and -bufsize for streaming
□ Test playback on target platform before bulk export□ Align cuts to keyframes (or two-pass seek)
□ Chain operations in single FFmpeg command
□ Normalize color spaces before concatenating
□ Verify audio/video sync (test at multiple points)
□ Use platform-specific export presets
□ Apply -movflags +faststart for web delivery
□ Set proper color metadata (bt709 for HD)
□ Test output file on target platform
□ Keep lossless intermediate files (ProRes, FFV1)
□ Use hardware acceleration for batch jobs (NVENC, VideoToolbox)| Scenario | Appropriate? |
|---|---|
| Automated video pipeline (script → video) | ✅ Yes - FFmpeg automation |
| Batch process 100 videos | ✅ Yes - parallel FFmpeg jobs |
| Trim/cut clips programmatically | ✅ Yes - precise cutting |
| Add subtitles to videos | ✅ Yes - burn or soft subs |
| Color grade footage | ⚠️ Limited - basic only |
| Multi-cam editing | ❌ No - use DaVinci Resolve |
| Motion graphics | ❌ No - use After Effects |
| Real-time preview editing | ❌ No - use Premiere/Resolve |
/references/ffmpeg-guide.md - Complete FFmpeg command reference/references/timeline-editing.md - Timeline concepts, multi-track editing/references/export-optimization.md - Platform-specific export settingsscripts/video_editor.py - Cut, trim, concatenate, transitions, effectsscripts/batch_processor.py - Parallel batch video processingThis skill guides: Video editing | FFmpeg | Timeline editing | Transitions | Export optimization | Audio mixing | Color grading | Automated video production
© curiositech, 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 12 other files (scripts, references) in .claude/skills/video-processing-editing of curiositech/some_claude_skills.
Open the folder on GitHubat commit 6713fc7
Video Processing Editing 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 |
|---|---|---|---|---|---|---|
| Video Processing Editing this skillcuriositech/some_claude_skills | 243 | — | ~4.2k | Automated safety check: Pass | MIT | |
| Shorts Video Makeruxjoseph/content-marketing-team | 107 | — | ~665 | Automated safety check: Pass | None | |
| Showcase Videorehan-remade/universal-modder | 5.3k | — | ~1.3k | Automated safety check: Pass | MIT | |
| Video Downloadcalesthio/OpenMontage | 65k | — | ~885 | Automated safety check: Pass | AGPL-3.0 | |
| Video Transcript Downloadersundial-org/awesome-openclaw-skills | 663 | 2 repos | ~574 | Automated safety check: Pass | None | |
| Youtube Downloaderdaymade/claude-code-skills | 1.4k | — | ~4.7k | Automated safety check: Pass | MIT |
uxjoseph/content-marketing-team
YouTube 영상에서 쇼츠 클립 3개를 자동 제작합니다. An agent skill from uxjoseph/content-marketing-team.
rehan-remade/universal-modder
Record and cut a short showcase video of a game mod, or a compilation of clips, ready to post on X/YouTube.
calesthio/OpenMontage
Download video and audio from YouTube and 1000+ sites using yt-dlp.
sundial-org/awesome-openclaw-skills
Download videos, audio, subtitles, and clean paragraph-style transcripts from YouTube and any other yt-dlp supported site.
daymade/claude-code-skills
Download YouTube videos and HLS streams (m3u8) from platforms like Mux, Vimeo, etc.
gooseworks-ai/goose-skills
Generates Instagram Reels where product image cuts are synced to audio beats.
curiositech/some_claude_skills
Detect crisis signals in user content using NLP, mental health sentiment analysis, and safe intervention protocols.
curiositech/some_claude_skills
End-to-end form handling with react-hook-form, Zod schemas, validation patterns, error messaging, field arrays, and multi-step wizards.
curiositech/some_claude_skills
Strategic analyst that maps competitive landscapes, identifies white space opportunities, and provides positioning recommendations.
curiositech/some_claude_skills
Build production CI/CD pipelines with GitHub Actions. An agent skill from curiositech/some_claude_skills.
curiositech/some_claude_skills
Build production computer vision pipelines for object detection, tracking, and video analysis.
curiositech/some_claude_skills
Long-running design anthropologist that builds comprehensive visual databases from 500-1000 real-world examples, extracting color palettes, typography patterns, layout systems, and interaction…
Categories
FFmpeg automation for cutting, trimming, concatenating videos. Video Processing Editing is an agent skill from curiositech/some_claude_skills. FFmpeg automation for cutting, trimming, concatenating videos.
Video Processing Editing fits situations like: videogen projects; content creation; automated video production.
Run `npx skills add curiositech/some_claude_skills --skill video-processing-editing -a claude-code`. Or copy the skill folder (.claude/skills/video-processing-editing in curiositech/some_claude_skills) into .claude/skills/video-processing-editing in your project. Claude Code loads it when a task matches its description.
Run `npx skills add curiositech/some_claude_skills --skill video-processing-editing -a codex`. Or copy the skill folder (.claude/skills/video-processing-editing in curiositech/some_claude_skills) into .agents/skills/video-processing-editing 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 curiositech/some_claude_skills --skill video-processing-editing -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-processing-editing, .gemini/skills/video-processing-editing, .github/skills/video-processing-editing and .opencode/skills/video-processing-editing in your project.
Going by SKILL.md and its folder, Video Processing Editing needs Python for the scripts in its folder and the command-line tools its instructions call (ffmpeg and ffprobe). Our summary lists: Python 3. Its frontmatter pre-approves these tools: Read, Write, Edit, Bash(ffmpeg*,ffprobe*,python*).
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. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
Video Processing Editing is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 4.2k tokens (SKILL.md is roughly 17k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 8.4k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Video Processing Editing: Shorts Video Maker (uxjoseph/content-marketing-team, 107 stars), Showcase Video (rehan-remade/universal-modder, 5.3k stars), Video Download (calesthio/OpenMontage, 65k stars) and Video Transcript Downloader (sundial-org/awesome-openclaw-skills, 663 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
curiositech (a GitHub organization) maintains it in curiositech/some_claude_skills, which has 243 GitHub stars. The repository holds 109 skills in this directory. The repository was last updated on September 6, 2026.
Source: curiositech/some_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.