Night Market Skill — ported from claude-night-market/scry. For the full experience with agents, hooks, and commands, install the Claude Code plugin.
Post-process video files (webm/mp4) and generate optimized GIF output with configurable quality settings.
This skill handles the conversion of video recordings (typically from browser automation) to GIF format. It provides multiple quality presets and optimization options to balance file size with visual quality.
text
- Validate input video file exists
- Check ffmpeg installation
- Execute GIF conversion
- Verify output and report results
Verification: Run the command with --help flag to verify availability.
Confirm the source video file exists and is a supported format:
bash
# Check file exists and get info
if [[ -f "$INPUT_FILE" ]]; then
file "$INPUT_FILE"
ffprobe -v quiet -show_format -show_streams "$INPUT_FILE" 2>/dev/null | head -20
else
echo "Error: Input file not found: $INPUT_FILE"
exit 1
fi
Verification: Run the command with --help flag to verify availability.
Supported input formats: .webm, .mp4, .mov, .avi
Verify ffmpeg is available:
bash
if ! command -v ffmpeg &> /dev/null; then
echo "Error: ffmpeg is not installed"
echo "Install with: sudo apt install ffmpeg (Linux) or brew install ffmpeg (macOS)"
exit 1
fi
ffmpeg -version | head -1
Verification: Run the command with --help flag to verify availability.
Choose the appropriate conversion command based on quality requirements:
bash
ffmpeg -i input.webm -vf "fps=10,scale=800:-1" output.gif
Verification: Run the command with --help flag to verify availability.
bash
ffmpeg -i input.webm -vf "fps=10,scale=800:-1:flags=lanczos,split[s0][s1];[s0]palettegen[p];[s1][p]paletteuse" output.gif
Verification: Run the command with --help flag to verify availability.
bash
ffmpeg -i input.webm -vf "fps=15,scale=1024:-1:flags=lanczos,split[s0][s1];[s0]palettegen=max_colors=256:stats_mode=single[p];[s1][p]paletteuse=dither=bayer:bayer_scale=5" output.gif
Verification: Run the command with --help flag to verify availability.
OptionDescriptionRecommended ValuefpsFrames per second10-15 for smooth, 5-8 for smaller filesscaleWidth in pixels (-1 maintains aspect ratio)800 for web, 480 for thumbnailsflags=lanczosHigh-quality scaling algorithmAlways use for best qualitypalettegenGenerate optimized color paletteUse for quality-critical outputditherDithering algorithmbayer for patterns, floyd_steinberg for smooth
bash
# Thumbnail (small, fast loading)
ffmpeg -i input.webm -vf "fps=8,scale=480:-1:flags=lanczos,split[s0][s1];[s0]palettegen[p];[s1][p]paletteuse" thumbnail.gif
# Documentation (balanced)
ffmpeg -i input.webm -vf "fps=10,scale=800:-1:flags=lanczos,split[s0][s1];[s0]palettegen[p];[s1][p]paletteuse" docs.gif
# High-fidelity demo
ffmpeg -i input.webm -vf "fps=15,scale=1024:-1:flags=lanczos,split[s0][s1];[s0]palettegen=max_colors=256[p];[s1][p]paletteuse" demo.gif
Verification: Run the command with --help flag to verify availability.
Confirm successful conversion and report metrics:
bash
if [[ -f "$OUTPUT_FILE" ]]; then
echo "GIF generated successfully: $OUTPUT_FILE"
# Report file size
SIZE=$(du -h "$OUTPUT_FILE" | cut -f1)
echo "File size: $SIZE"
# Get dimensions and frame count
ffprobe -v quiet -select_streams v:0 -show_entries stream=width,height,nb_frames -of csv=p=0 "$OUTPUT_FILE"
else
echo "Error: GIF generation failed"
exit 1
fi
Verification: Run the command with --help flag to verify availability.
Reduce quality settings:
bash
# Lower fps and resolution
ffmpeg -i input.webm -vf "fps=8,scale=640:-1:flags=lanczos,split[s0][s1];[s0]palettegen[p];[s1][p]paletteuse" smaller.gif
Verification: Run the command with --help flag to verify availability.
Use dithering:
bash
ffmpeg -i input.webm -vf "fps=10,scale=800:-1:flags=lanczos,split[s0][s1];[s0]palettegen[p];[s1][p]paletteuse=dither=floyd_steinberg" smooth.gif
Verification: Run the command with --help flag to verify availability.
Use basic conversion without palette generation for speed:
bash
ffmpeg -i input.webm -vf "fps=10,scale=800:-1" quick.gif
Verification: Run the command with --help flag to verify availability.