Edits raw travel footage into polished Instagram Reels (9:16, 1080×1920) with cinematic color grading, beat-synced cuts, text overlays, transitions, and background music. Use when the user mentions editing a reel, travel reel, Instagram video, cutting footage, travel clips, reel from footage, or provides folders with destination subfolders and optional shared _music or _fonts.
68
82%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Passed
No findings from the security scan
Transforms raw travel footage folders into cinematic Instagram Reels (9:16 vertical, 1080×1920px). Each destination folder becomes a standalone reel with music, text overlays, and cinematic effects.
Requirements: ffmpeg, Python 3, and moviepy>=2.0. The agent should be able to run shell commands, write files, and present output files to the user.
The user provides a root folder following this structure:
travel-project/
├── bali/ ← destination folder (one reel per folder)
│ ├── clip1.mp4
│ ├── clip2.MOV
│ └── ...
├── tokyo/
│ └── ...
├── _music/ ← shared background music (randomly selected per reel)
│ ├── track1.mp3
│ └── track2.wav
└── _fonts/ ← shared fonts for text overlays
└── Montserrat-Bold.ttfRules:
__music/ = shared pool; one track randomly selected per destination_fonts/ = font(s) for text overlays; use first .ttf or .otf found.mp4, .mov, .MOV, .MP4, .avi, .mkv| Property | Value |
|---|---|
| Resolution | 1080 × 1920 px (9:16 vertical) |
| FPS | 30 fps |
| Duration | 15–60 seconds (target: 30s) |
| Audio | Stereo, 44.1kHz, normalized to -14 LUFS |
| Format | H.264 MP4, AAC audio |
| Text safe zone | 250px top and bottom margins |
Based on current trends from top travel creators (@muradosmann, @expertvagabond, @thewanderinglens):
Pacing:
Transitions (in order of current popularity):
xfade=fade – clean dissolve (universal)xfade=wipeleft / wiperight – directional wipexfade=slideleft / slideright – motion slidexfade=circlecrop – cinematic circle revealColor Grading Presets (choose by destination mood):
warm_golden – Bali, Morocco, Mexico (warm shadows, lifted highlights)cool_teal – Iceland, Norway, mountains (teal shadows, orange skin)moody_dark – night scenes, jungles (crushed blacks, high contrast)bright_airy – beaches, Europe cities (lifted whites, soft pastels)cinematic – default universal preset (slight S-curve, vignette, mild desaturation)Text Overlay Style:
Audio:
When the user provides a footage folder, follow this sequence:
python3 /path/to/scripts/scan_footage.py --root <project_root>Outputs a JSON inventory: clip paths, durations, resolutions, has_audio flags.
Infer the mood from the destination folder name:
bali, mexico, marrakech, portugal, italy → warm_goldeniceland, norway, patagonia, alaska, swiss → cool_tealtokyo, ny, berlin, singapore (night/urban) → moody_darksantorini, maldives, amalfi, greece → bright_airycinematic (safe default)Ask the user to confirm or override.
Randomly select one track from _music/. If _music/ is empty or missing, proceed without music and notify the user.
Run the main editor script:
python3 /path/to/scripts/build_reel.py \
--clips-dir <destination_folder> \
--music <selected_track> \
--font <font_path> \
--preset <mood_preset> \
--location-name "<Destination Name>" \
--output <output_path>Use present_files to deliver the final .mp4 to the user.
Report: duration, clips used, music track, preset applied, any clips skipped.
See scripts/scan_footage.py — scans project root, returns JSON inventory.
See scripts/build_reel.py — main editor: clips → reel pipeline.
Read both scripts fully before executing. They are self-contained and handle all ffmpeg subprocess calls.
| Issue | Action |
|---|---|
| Clip has no video stream | Skip it, log warning |
| Clip is portrait but low-res | Upscale with padding |
| Clip is landscape | Crop to 9:16 (center crop by default) |
_music/ missing | Build reel silently, note "no music" in report |
_fonts/ missing | Fall back to ffmpeg built-in font (DejaVu) |
| Clip shorter than 1s | Skip it |
| Total footage under 10s | Warn user, use all clips, extend with slow-mo |
<destination-name>_reel_<YYYYMMDD>.mp4
Example: bali_reel_20250414.mp4
If the root folder contains multiple destination subfolders, ask the user:
"I found [N] destinations: [list]. Should I edit all of them, or start with one?"
Process them sequentially, one reel per destination.
9be8efc
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.