# Create Branded Instagram Reel

> Create a polished vertical Instagram Reel from a folder of local video files, with Coldwell Banker Schmidt, Realtors and 906 Real Estate Group branding, optional supplied headline/call-to-action/music, an exact branded end card, cover image, and verification manifest. Use when Codex needs to turn one or more .mp4, .mov, .m4v, .webm, .mkv, .avi, .mts, .m2ts, or .3gp clips into a social-media Reel.

- Skill: `marvj69/create-branded-instagram-reel` (Agent Skill, multi-file: 5 files)
- Install (CLI): `npx skillmds@latest add marvj69/create-branded-instagram-reel`
- Raw SKILL.md: https://api.skillmd.com/api/skills/marvj69/create-branded-instagram-reel/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: marvj69 (https://skillmd.com/u/marvj69)
- Updated: 2026-09-22
- Page: https://skillmd.com/skills/marvj69/create-branded-instagram-reel

---


# Create Branded Instagram Reel

Use this skill to turn a folder of local video clips into a finished 9:16 H.264 Reel. The workflow is deterministic and uses only supplied/local media; it does not generate or alter the underlying footage.

## Inputs and defaults

- Accept a folder path. Scan it recursively for supported video files, sorted by path.
- Use one short, centered segment from each source video. Include every discovered clip by default; use `--max-clips` only when the folder is too large for the intended Reel.
- Render at 1080 × 1920, 30 fps, H.264, yuv420p, with a default segment length of 2.75 seconds.
- Start with a 1.5-second branded slate and finish with a 3-second branded end card.
- Use the bundled `assets/brand-panel-base.png` as the default end-card artwork. It is an exact supplied Coldwell Banker Schmidt / 906 Real Estate Group panel and includes the associated agent contact block. Pass `--brand-panel` for a replacement or `--no-brand-panel` for a text-only end card; never invent a different agent name, phone number, logo, or contact detail.
- Use supplied `--headline`, `--subheadline`, and `--cta` text exactly. Do not infer an address, price, listing status, claim, or other property fact from filenames or video frames.
- Do not carry source audio automatically because a folder may mix incompatible tracks. Without `--music`, render the Reel silently; with `--music`, use only the supplied file.

## Workflow

1. Resolve the actual input folder and inspect its contents. Do not include prior Reel outputs, covers, manifests, hidden files, or unsupported media.
2. Read `references/render-spec.md` when changing defaults, branding, crop behavior, or output requirements.
3. Run `scripts/render_reel.py` with absolute paths. Keep source media unchanged. Use `--force` only when the requested output may be replaced.
4. Inspect the generated cover image with `view_image`. If the cover is a poor representation, rerun with a different `--cover-time` or adjust the supplied source folder/order; do not edit the underlying footage.
5. Verify the output with the script's manifest and an independent `ffprobe`/frame check. Confirm the video is vertical, has the expected dimensions and frame rate, contains the branded slate/bug/end card, and has no accidental text overflow.
6. Deliver the `.mp4`, cover `.jpg`, and manifest `.json`. Mention whether music was supplied and whether the default branded panel or a replacement was used.

## Renderer

```bash
python3 "${CODEX_HOME:-$HOME/.codex}/skills/create-branded-instagram-reel/scripts/render_reel.py" \
  "/absolute/path/to/video-folder" \
  --headline "YOUR EXACT HEADLINE" \
  --subheadline "Optional exact subheadline" \
  --cta "YOUR EXACT CALL TO ACTION" \
  --output "/absolute/path/to/output/reel.mp4" \
  --music "/absolute/path/to/music.mp3"
```

The command also writes `reel-cover.jpg` and `reel-manifest.json` beside the requested output unless alternate paths are supplied. If the user requests a simple branded montage, omit the optional text and music flags. If the user supplies a different logo/end-card image, pass it with `--brand-panel` rather than recreating or approximating it.

## Quality and safety rules

- Preserve the original source files and never overwrite them.
- Do not use generative image/video tools, virtual staging, synthetic property imagery, or invented listing facts.
- Center-crop landscape or square footage to fill 1080 × 1920 without stretching or letterboxing. Verify that important subjects remain visible in the selected central region; if not, choose a better source or ask for a crop/focal-point decision.
- Keep branding inside the upper and lower safe areas. The persistent bug must remain legible over footage, and the end card must hold long enough to read.
- Use only supplied music. Normalize it to a conservative social-video level and loop/truncate it to the rendered duration. Do not download music or claim a license.
- If FFmpeg, FFprobe, or Pillow is unavailable, report the missing dependency and stop before creating a partial deliverable.

## Output verification

Run the following after rendering:

```bash
ffprobe -v error -show_entries stream=codec_type,width,height,r_frame_rate,codec_name:format=duration \
  -of json "/absolute/path/to/output/reel.mp4"
```

Require a video stream with width `1080`, height `1920`, H.264 codec, and a playable duration. Inspect at least the cover, an interior frame, and the final frame. Treat any missing brand element, cropped subject, unreadable text, unsupported audio, or stale output as a failed render and fix or rerun it before delivery.

