# Reels Pipeline

> Transforms a raw landscape clip into a post-ready 9:16 Reel — crop/pad, BGM mixing, caption overlay, hook frame, end card. Wraps FFmpeg in a one-shot pipeline. Trigger when user has a horizontal clip and wants a 9:16 Reel/Short, or mentions Reels pipeline, vertical video, IG Reels, YT Shorts.

- Skill: `rahulcommercial/reels-pipeline` (Agent Skill)
- Install (CLI): `npx skillmds@latest add rahulcommercial/reels-pipeline`
- Raw SKILL.md: https://api.skillmd.com/api/skills/rahulcommercial/reels-pipeline/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: DevOps & Infra
- Author: rahulcommercial (https://skillmd.com/u/rahulcommercial)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/rahulcommercial/reels-pipeline

---


# Reels Pipeline

Raw 16:9 → polished 9:16 in one pass.

## When to use

- User has a single source clip (gameplay, screen recording, talking head).
- Target is IG Reels / YT Shorts / TikTok (1080×1920, ≤ 90s).
- User wants captions burned in (better retention than IG's auto-captions).

## Pipeline stages

```
input.mp4 (16:9)
   ↓ 1. trim to hook + body + payoff (≤ 60s)
   ↓ 2. crop or pad to 9:16
   ↓ 3. mix BGM at -18 LUFS under voice
   ↓ 4. burn captions (SRT → ass with style)
   ↓ 5. prepend 1.5s hook frame (text + freeze)
   ↓ 6. append 2s end card (handle + CTA)
   ↓ 7. encode H.264 + AAC, ≤ 100 MB
output.mp4
```

## Reference FFmpeg command (single pass)

```bash
ffmpeg -i input.mp4 -i bgm.mp3 -i hook.png -i end.png \
  -filter_complex "\
    [0:v]crop=ih*9/16:ih,scale=1080:1920,setsar=1[main]; \
    [2:v]scale=1080:1920[hook]; [3:v]scale=1080:1920[end]; \
    [hook][main][end]concat=n=3:v=1:a=0[v]; \
    [0:a]volume=1.0[a0]; [1:a]volume=0.25[a1]; \
    [a0][a1]amix=inputs=2:duration=first[a]; \
    [v]subtitles=captions.ass[vout]" \
  -map "[vout]" -map "[a]" \
  -c:v libx264 -preset medium -crf 21 \
  -c:a aac -b:a 128k -ar 44100 \
  -movflags +faststart \
  -t 60 output.mp4
```

## Captions style (.ass)

- Font: Inter Bold, size 64
- Outline: 4px black, no shadow
- Position: lower-third (PlayResY=1920, MarginV=240)
- Max 2 lines, 18 chars/line, 1.2s min display

## Hook frame design

The first 1.5 seconds decide retention. Keep these rules:
- One big text claim, max 6 words ("I lost ₹50k. Here's why.")
- Recognisable still from the body, not a generic title card
- High contrast: dark frame + bright text, or vice versa

## What NOT to do

- Don't centre-crop a horizontal gameplay clip blindly — kill-feed and minimap get lost. Crop with intent.
- Don't mix BGM louder than -15 LUFS — voice gets buried.
- Don't burn captions on the bottom 10% — IG UI covers it.

## Niche tuning (thenoobstack)

- **Gameplay:** hook = score/kill count visible
- **Tech:** hook = before/after split-screen
- **AI:** hook = one-line claim + tool name
- **Earning:** hook = specific number (₹/$), not "make money fast"

