
Claude Video Export
- 6 installs
- 23 repo stars
- Updated April 6, 2026
- agricidaniel/claude-video
claude-video-export is a Claude Code skill that exports platform-optimized video files for YouTube, TikTok, Instagram, and more using FFmpeg.
About
claude-video-export is a Claude Code skill that exports video into ready-to-upload files per platform using FFmpeg. It produces presets for YouTube, TikTok, Instagram Reels and Feed, LinkedIn, web WebM, audio-only podcast, and GIF, handling resolution, codec, bitrate, and aspect ratio. A developer uses it to render a final video correctly for a target platform.
- One-command platform-optimized video export via FFmpeg
- Presets for YouTube, TikTok, Reels, Instagram, LinkedIn, WebM, GIF
- Handles resolution, codec, bitrate, and aspect ratio per platform
Claude Video Export by the numbers
- 6 all-time installs (skills.sh)
- Ranked #1,096 of 1,335 Generative Media skills by installs in the Skillselion catalog
- Data as of Aug 5, 2026 (Skillselion catalog sync)
claude-video-export capabilities & compatibility
Free; runs on local FFmpeg with no API keys.
- Capabilities
- video export · platform optimization · aspect ratio conversion · video encoding
- Pricing
- Free
What claude-video-export says it does
One-command platform-optimized video export using FFmpeg. Produces ready-to-upload
Note: TikTok max 10 min, Reels max 3 min, Shorts max 3 min. The `-t 180` caps at 3 min.
npx skills add https://github.com/agricidaniel/claude-video --skill claude-video-exportAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 6 |
|---|---|
| repo stars | ★ 23 |
| Last updated | April 6, 2026 |
| Repository | agricidaniel/claude-video ↗ |
What it does
Export a finished video into platform-optimized files for YouTube, TikTok, Instagram, LinkedIn, web, or GIF with FFmpeg.
Who is it for?
Rendering ready-to-upload files with the right resolution, codec, and aspect ratio per platform
Skip if: Editing content or downloading source video, which other sub-skills handle
When should I use this skill?
You need a final video exported for YouTube, TikTok, Reels, Instagram, LinkedIn, web, or as a GIF
What you get
Produces a correctly encoded video file ready to upload to the chosen platform.
- YouTube-ready MP4
- Vertical TikTok/Reels MP4
- Instagram square/portrait MP4
By the numbers
- Presets for 8 export targets (YouTube, TikTok, Reels, Instagram, LinkedIn, Web, Podcast, GIF)
Files
claude-video-export — Platform-Optimized Export
Pre-Flight
1. Run bash scripts/preflight.sh "$INPUT" "$OUTPUT" 2. Run bash scripts/detect_gpu.sh for encoder selection 3. Analyze input: ffprobe -v error -select_streams v:0 -show_entries stream=width,height,r_frame_rate -of json "$INPUT"
Platform Presets
YouTube (1080p)
ffmpeg -n -i "$INPUT" -c:v libx264 -preset slow -crf 18 -profile:v high -level 4.1 \
-pix_fmt yuv420p -bf 2 -g 30 -movflags +faststart \
-c:a aac -b:a 384k -ar 48000 "${INPUT%.*}_youtube.mp4"YouTube 4K:
ffmpeg -n -i "$INPUT" -c:v libx264 -preset slow -crf 18 -profile:v high -level 5.1 \
-pix_fmt yuv420p -movflags +faststart \
-c:a aac -b:a 512k -ar 48000 "${INPUT%.*}_youtube_4k.mp4"YouTube NVENC (5-10x faster):
ffmpeg -n -hwaccel cuda -hwaccel_output_format cuda -i "$INPUT" \
-c:v h264_nvenc -preset p5 -tune hq -rc constqp -cq 19 \
-profile:v high -movflags +faststart \
-c:a aac -b:a 384k -ar 48000 "${INPUT%.*}_youtube.mp4"TikTok / Reels / Shorts (9:16 Vertical)
Center crop (from 16:9 source):
ffmpeg -n -i "$INPUT" \
-vf "crop=ih*9/16:ih,scale=1080:1920:flags=lanczos" \
-c:v libx264 -crf 20 -preset medium -profile:v high -pix_fmt yuv420p \
-c:a aac -b:a 128k -ar 44100 -movflags +faststart \
-t 180 "${INPUT%.*}_tiktok.mp4"Note: TikTok max 10 min, Reels max 3 min, Shorts max 3 min. The -t 180 caps at 3 min.
With padding (black bars, no crop):
ffmpeg -n -i "$INPUT" \
-vf "scale=1080:-2:flags=lanczos,pad=1080:1920:(ow-iw)/2:(oh-ih)/2:black" \
-c:v libx264 -crf 20 -preset medium -profile:v high -pix_fmt yuv420p \
-c:a aac -b:a 128k -movflags +faststart "${INPUT%.*}_vertical.mp4"With blur background (cinematic, no black bars):
ffmpeg -n -i "$INPUT" -i "$INPUT" -filter_complex \
"[0:v]scale=1080:1920:force_original_aspect_ratio=increase,crop=1080:1920,gblur=sigma=20[bg];\
[1:v]scale=1080:1920:force_original_aspect_ratio=decrease[fg];\
[bg][fg]overlay=(W-w)/2:(H-h)/2" \
-c:v libx264 -crf 20 -preset medium -c:a aac -b:a 128k \
-movflags +faststart "${INPUT%.*}_tiktok_blur.mp4"Instagram Feed (Square 1:1)
ffmpeg -n -i "$INPUT" \
-vf "crop=min(iw\,ih):min(iw\,ih),scale=1080:1080:flags=lanczos" \
-c:v libx264 -crf 20 -preset medium -profile:v high -pix_fmt yuv420p \
-c:a aac -b:a 128k -movflags +faststart \
-t 60 "${INPUT%.*}_ig_square.mp4"Instagram Feed (Portrait 4:5)
ffmpeg -n -i "$INPUT" \
-vf "crop=ih*4/5:ih,scale=1080:1350:flags=lanczos" \
-c:v libx264 -crf 20 -preset medium -profile:v high -pix_fmt yuv420p \
-c:a aac -b:a 128k -movflags +faststart \
-t 60 "${INPUT%.*}_ig_portrait.mp4"ffmpeg -n -i "$INPUT" \
-vf "scale=1920:1080:force_original_aspect_ratio=decrease,pad=1920:1080:(ow-iw)/2:(oh-ih)/2:black" \
-c:v libx264 -crf 20 -preset medium -profile:v high -pix_fmt yuv420p \
-c:a aac -b:a 192k -movflags +faststart \
-fs 200M "${INPUT%.*}_linkedin.mp4"Note: LinkedIn max 200MB / 10 min. The -fs 200M caps file size.
Web (VP9 + Opus for modern browsers)
ffmpeg -n -i "$INPUT" \
-c:v libvpx-vp9 -crf 30 -b:v 0 -row-mt 1 \
-c:a libopus -b:a 128k "${INPUT%.*}_web.webm"Podcast (Audio-Only)
# AAC (most compatible)
ffmpeg -n -i "$INPUT" -vn \
-af "loudnorm=I=-16:TP=-1.5:LRA=11" \
-c:a aac -b:a 128k -ar 44100 "${INPUT%.*}_podcast.m4a"
# MP3 (universal)
ffmpeg -n -i "$INPUT" -vn \
-af "loudnorm=I=-16:TP=-1.5:LRA=11" \
-c:a libmp3lame -b:a 192k -ar 44100 "${INPUT%.*}_podcast.mp3"High-Quality GIF
# Short clip (3 seconds starting at 5s)
ffmpeg -n -ss 5 -t 3 -i "$INPUT" \
-vf "fps=15,scale=480:-1:flags=lanczos,split[s0][s1];[s0]palettegen[p];[s1][p]paletteuse" \
"${INPUT%.*}.gif"For longer GIFs, consider reducing fps to 10 and scale to 320px width.
Twitter/X
ffmpeg -n -i "$INPUT" \
-vf "scale=1280:720:force_original_aspect_ratio=decrease,pad=1280:720:(ow-iw)/2:(oh-ih)/2:black" \
-c:v libx264 -crf 22 -preset medium -profile:v high -pix_fmt yuv420p \
-c:a aac -b:a 128k -movflags +faststart \
-fs 512M -t 140 "${INPUT%.*}_twitter.mp4"Note: Twitter max 512MB / 2:20.
Platform Specs Quick Reference
| Platform | Max Resolution | Max Duration | Max Size | Aspect Ratio | Codec |
|---|---|---|---|---|---|
| YouTube | 8K | 12 hours | 256 GB | Any (16:9 preferred) | H.264/H.265/AV1 |
| TikTok | 1080x1920 | 10 min | 287 MB | 9:16 | H.264 |
| Instagram Reels | 1080x1920 | 3 min | 250 MB | 9:16 | H.264 |
| Instagram Feed | 1080x1080 | 60s | 250 MB | 1:1 or 4:5 | H.264 |
| 1920x1080 | 10 min | 200 MB | 16:9 or 1:1 | H.264 | |
| Twitter/X | 1920x1200 | 2:20 | 512 MB | Any | H.264 |
| Web (WebM) | Any | Any | Any | Any | VP9/AV1 + Opus |
Multi-Platform Export
To export for multiple platforms at once, Claude should chain exports sequentially. Each export is independent — they share the same input but produce separate outputs.
Output Naming
Auto-generated output names use the pattern: {input_basename}_{platform}.{ext}
video.mp4→video_youtube.mp4,video_tiktok.mp4,video_ig_square.mp4
Reference
Load references/export-presets.md for detailed per-platform codec settings, bitrate targets, and container requirements.
Related skills
FAQ
Which platforms does it target?
It has presets for YouTube, TikTok, Reels, Shorts, Instagram Feed, LinkedIn, web WebM, podcast audio, and GIF.
How does it make vertical video from a 16:9 source?
It offers center crop, black-bar padding, or a blurred-background fill to reach the 9:16 aspect ratio.