agentleFS
eigent-aieigent-ai/agent-skills/skills/image-and-video-generation/instagram-reel-editor/SKILL.md

instagram-reel-editor

Skill27 starsChanged 8 months agoApache-2.0View on GitHub

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.

1 other project uses a version of this.

Adopted by

Most recently taken up by

The file

We split this skill into the rules it gives an agent

6 rules. About 0 are common, 5 are distinctive, and 1 is very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈5

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 1

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

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

    line 95
  2. Distinctive:

    Ask the user to confirm or override.

    line 114
  3. Distinctive:

    Run the main editor script:

    line 122
  4. Very specific:

    Use present_files to deliver the final .mp4 to the user.

    line 136
  5. Distinctive:

    Read both scripts fully before executing.

    line 146
  6. Distinctive:

    If the root folder contains multiple destination subfolders, ask the user:

    line 173

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

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.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.