mcpField
I
instagram-reel-editor

instagram-reel-editor

github.com/eigent-aiCreative & media2544 installsUpdated 2w ago
Repository

About instagram-reel-editor

Instagram Reel Editor is a skill that turns folders of travel footage into vertical Instagram Reels, for creators organizing clips by destination. It produces a separate video for each destination and can add music, text overlays, and cinematic effects.

Key features

  1. 01Create reels by destination folder
  2. 02Scan and inventory video clips
  3. 03Export vertical 1080 × 1920 video
  4. 04Add music and location text
  5. 05Apply color presets and transitions

Use cases

  1. 01Turn travel clips into destination reels
  2. 02Add location titles and music to reels
  3. 03Process footage for multiple destinations

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/eigent-ai/agent-skills --skill instagram-reel-editor

After installing, type/instagram-reel-editorin Claude Code to confirm it loaded.

Bundled files

References and scripts installed along with SKILL.md.

references/
travel-reel-trends.md
scripts/
build_reel.py
scan_footage.py

Details

From the project README

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.

Comments

Markdown supported