CtrlK
BlogDocsLog inGet started
Tessl Logo

instagram-reel-editor

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

Quality

82%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide

SecuritybySnyk

Passed

No findings from the security scan

SKILL.md
Quality
Evals
Security

Instagram Reel Editor

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.


Folder Contract

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.ttf

Rules:

  • Destination folders = any folder NOT starting with _
  • _music/ = shared pool; one track randomly selected per destination
  • _fonts/ = font(s) for text overlays; use first .ttf or .otf found
  • Supported clip formats: .mp4, .mov, .MOV, .MP4, .avi, .mkv

Reel Spec (Instagram Standard)

PropertyValue
Resolution1080 × 1920 px (9:16 vertical)
FPS30 fps
Duration15–60 seconds (target: 30s)
AudioStereo, 44.1kHz, normalized to -14 LUFS
FormatH.264 MP4, AAC audio
Text safe zone250px top and bottom margins

Cinematic Style Reference (Instagram Travel Reels 2024–2025)

Based on current trends from top travel creators (@muradosmann, @expertvagabond, @thewanderinglens):

Pacing:

  • Hook clip: 1.5–2.5s (most dramatic or beautiful moment)
  • Middle clips: 2–4s each
  • Outro clip: 3–5s with fade to black
  • Total clips: 8–15 clips for a 30s reel

Transitions (in order of current popularity):

  1. xfade=fade – clean dissolve (universal)
  2. xfade=wipeleft / wiperight – directional wipe
  3. xfade=slideleft / slideright – motion slide
  4. xfade=circlecrop – cinematic circle reveal
  5. Cut on beat (no transition filter) – high energy sections

Color 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:

  • Location title: uppercase, bold, white, centered, 80–100px
  • Subtitle (optional): regular weight, 40px, 60% opacity
  • Appear: fade in at 0.5s, hold, fade out at clip end
  • Position: lower third (1400–1600px from top on 1920 tall canvas)
  • Drop shadow: 3px offset, 70% black

Audio:

  • Fade music in over 1s at start
  • Duck music to 20% if original clip has loud audio
  • Fade out music over 2s before end

Execution Workflow

When the user provides a footage folder, follow this sequence:

Step 1: Scan and Inventory

python3 /path/to/scripts/scan_footage.py --root <project_root>

Outputs a JSON inventory: clip paths, durations, resolutions, has_audio flags.

Step 2: Determine Mood & Preset

Infer the mood from the destination folder name:

  • bali, mexico, marrakech, portugal, italy → warm_golden
  • iceland, norway, patagonia, alaska, swiss → cool_teal
  • tokyo, ny, berlin, singapore (night/urban) → moody_dark
  • santorini, maldives, amalfi, greece → bright_airy
  • anything else → cinematic (safe default)

Ask the user to confirm or override.

Step 3: Select Music

Randomly select one track from _music/. If _music/ is empty or missing, proceed without music and notify the user.

Step 4: Generate the Reel

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>

Step 5: Present Output

Use present_files to deliver the final .mp4 to the user. Report: duration, clips used, music track, preset applied, any clips skipped.


Scripts

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.


Error Handling

IssueAction
Clip has no video streamSkip it, log warning
Clip is portrait but low-resUpscale with padding
Clip is landscapeCrop to 9:16 (center crop by default)
_music/ missingBuild reel silently, note "no music" in report
_fonts/ missingFall back to ffmpeg built-in font (DejaVu)
Clip shorter than 1sSkip it
Total footage under 10sWarn user, use all clips, extend with slow-mo

Output Naming

<destination-name>_reel_<YYYYMMDD>.mp4 Example: bali_reel_20250414.mp4


Multi-Destination Mode

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.

Repository
eigent-ai/agent-skills
Last updated
First committed

Is this your skill?

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.