🎬 Recipe

Auto-Edit Your Reels with Claude

Just drop your sources into a folder, and Claude edits the cuts, captions, sound effects and music in your own style.
All I do is watch and ask for changes in plain words!

BeforeEdited by me
This oneEdited by Claude

The videos are in Korean (Korean voice and captions).

Who this is for

This works best for people who already edit and have their own editing style. It doesn't invent a new style for you. Instead, you teach Claude the style you already use (a Premiere Pro or CapCut project, or finished videos), and it edits exactly that way.

  • ✔ You've made videos in Premiere Pro or CapCut
  • ✔ Your channel has its own caption and editing look
  • ✔ You spend a lot of time repeating the same style of edit

The whole flow at a glance

  1. Step 1 · Setup once
    Claude Code + the instructions file (CLAUDE.md), then install the programs you need

  2. Step 2 · Teach it your style once
    Learn your design and flow from a project file or finished videos → STYLE.md

  3. Step 3 · Add sources and start editing every video
    Put your sources in the folder, one prompt → first-cut mp4

  4. Step 4 · Watch and revise in words every video
    Screenshot + one line → v2, v3 … until you love it

Step 1: Setup once

  1. Claude Code (desktop app, Pro or higher). Works on both Mac and Windows

  2. Make a working folder and put the instructions file (CLAUDE.md) in it → Get the instructions file

  3. Open that folder in Claude Code and enter the setup prompt below → Claude asks before installing things like Node.js, ffmpeg and Python, then handles it

  4. The first-time install needs about 1.5–4GB (depends on the type of video)

📋 Setup prompt

Set things up so I can edit Reels with Remotion. Check the programs I need according to the instructions file, and if anything needs to be installed, tell me how much space it takes first, then go ahead.

Step 2: Teach it your editing style once

AI-edited videos give themselves away because the AI doesn't know your style. Teach it once, and from then on even the first cut comes out "like my video." It learns not just the design, like captions and colors, but also the flow, like cut tempo and caption timing. Pick one of your videos that turned out well, give Claude the material below, and start with the style learning prompt.

Your toolWhat to give Claude
Premiere ProThe project file (.prproj) of a video that turned out well. It reads fonts, sizes, tracking, colors, strokes and effects as exact values
CapCut (desktop)The project folder (CapCut/User Data/Projects/com.lveditor.draft/project name). If your version won't open, use finished videos instead
Any tool2–3 finished videos + font files + the asset folders you use a lot (sound effects, backgrounds, stickers)

📋 Style learning prompt

Learn my editing style. Analyze this project file (or these finished videos) and ① design: recreate the captions, graphics, colors and fonts exactly, and ② flow: break down my cut lengths and tempo, how I build the first 3-second hook, when captions appear and disappear, and my habits for zooms, transitions and sound effects. Show me a side-by-side comparison image with the original and a flow analysis table, and once I've checked them, write it all up in STYLE.md.
Captions from the original video next to the captions Claude recreated

Left: the original video / Right: the captions Claude recreated after reading the project file (the captions are in Korean)

  • 💡 Put the recreation side by side with the original and fine-tune it in words, like "bolder" or "make the box a bit bigger."
  • 💡 The flow comes as an analysis table. You can check things like average cut length, the first 3-second hook, when captions appear, and how many sound effects there are, as numbers.
  • 💡 Preferences that come up while editing ("slant only the text," "snap transitions with hard cuts") keep piling up and carry over to your next video.

Step 3: Add sources and start editing every video

  1. Put your sources in the 'source' folder inside your working folder. No need to organize them; Claude looks at the clips and sorts them. It only asks about the ones it's unsure of.

    working folder/ ├── CLAUDE.md ← instructions file ├── source/ ← all videos, photos, screen recordings ├── script.txt ← (optional) line break = one caption line, parentheses = scene description ├── narration/ ← (optional) for narration videos └── BGM/ ← (optional)
  2. No script? Claude looks at your sources and shows you a hook → body → ending outline first. Once you OK it, editing starts.

  3. Have a script? Add scene descriptions in parentheses. The more specific, the more accurate the first cut.
    e.g., No need to panic anymore (face with a little finger wag / punch-in zoom)

  4. Start with the prompt that fits your video below → you get a first-cut mp4.

📋 Narration (script + recorded voice)

I put my sources, script and narration in the 'source' folder inside my working folder. Edit it in my style, following the scene descriptions I wrote in parentheses in the script. Cut out the gaps in the narration, and show me the first-cut mp4 when you're done.

📋 Talking head (you talking to the camera)

I put a video of me talking to the camera in the 'source' folder inside my working folder. Cut out the silent parts and the stumbles to make jump cuts, and add captions. Give me the caption text file before rendering and I'll fix any typos myself.

📋 Vlog / music (no talking, cut to music)

I put vlog clips and BGM in the 'source' folder inside my working folder. There's no talking. Cut it to the beat of the BGM, and suggest a few lines of on-screen text first. Once I pick, start editing.
  • 💡 No script? Just add "Show me an outline first."
  • 💡 Claude can't actually hear sound. Listen to the sound effect and BGM levels yourself and tell it.
Organizing makes it more accurate (detailed folder structure)
working folder/ ├── script.txt ← parentheses = scene description ├── notes.txt ← points to emphasize, where it should be funny ├── source/ │ ├── 01_face/ ← put the action in the file name │ ├── 02_screen-recordings/ ← fine to drop in as recorded │ ├── 03_results/ ← finished pieces, comparison shots │ └── 04_memes-stickers/ ├── narration/ ← one recording file └── BGM/

Step 4: Watch and revise in words every video

Watch the first cut and ask for changes with one screenshot + one line, and it keeps fixing (v2, v3 …) until you love it. Copy the examples below and just swap out the numbers and words.

✂️ Cuts and tempo
3–5s drags. Cut it in half and jump straight to the next scene.

💡 Saying the section (in seconds) makes it precise

The overall tempo is slow. Make the cuts 20% shorter than now, and tighten the gaps between lines too.

💡 A feeling word + a number

💬 Captions
(screenshot) This caption covers my face. Move it down to the lower third of the screen.

💡 One screenshot + the result you want

Highlight numbers and key words in yellow and make them pop out a little bigger.

💡 Set an emphasis rule once and it carries over to the next video

🔍 Zoom and effects
The face-only parts are boring. Zoom in slightly (1.1x) at the start of each sentence, and do a big punch-in on the funny lines.

💡 Where (when) + what + how much

(screenshot) Here, slowly zoom in toward this button over 2 seconds.

💡 For a spot on screen, a screenshot beats words

🔀 Transitions
Make every transition a clean hard cut. Remove the slide effects.

💡 Say what you don't want, too

At "But wait!" at 12s, snap into the next part with a screen shake + whoosh.

💡 Instead of seconds, you can point to the caption text and it'll find it

🔊 Sound effects and BGM
The sound effects are drowning out my voice. Lower all sound effects by 3dB, and remove the "ding" at 8s.

💡 Claude can't hear. Describe exactly how it sounded to you

The BGM is too upbeat. Switch it to something calm and lo-fi, and make it quieter when I'm talking.

💡 A mood word + when and how

🎨 Color and brightness
The face clips are dark. Bump the brightness up a bit and match the color tone to the other clips.

💡 Point to exactly which clip is the problem

Give the whole thing a warm film look. Not too strong, about 30%.

💡 Saying "how much" as a percentage keeps it from going overboard

✨ Overall vibe
Make it cuter and more playful overall. Pastel caption colors, and switch the sound effects to bloopy, bouncy ones.

💡 Translate a feeling into concrete things: captions, colors, sounds

It's an informational video, so I want it calm. Cut the sound effects in half and use only color for emphasis.

💡 Telling it the video's purpose sharpens its judgment

📱 Upload screen and "AI look"
(my phone screenshot) This is how it looks on my phone. Position the captions and elements so the Instagram UI doesn't cover them. Keep everything centered.

💡 Screenshot your posted reel while it's playing, and it'll fit the layout to your phone

(screenshot) This part looks like AI motion graphics. Redraw it in my style (hand-drawn feel).

💡 Newly made explainer cards and graphics give it away when they're just slick. Ask it to match your texture

Try saying it like this instead

👀 Say "Open the studio" and you can preview it on a timeline in your browser. For changes, just say something like "Move the caption at 12s 0.2 seconds later."

🔁 For the next video, repeat from Step 3 in the same working folder! Claude moves the previous results into an 'archive' folder for you.

Instructions file (CLAUDE.md) used in Step 1

Put it in your working folder as CLAUDE.md and Claude reads it on its own.

⬇️ Download CLAUDE.md
# Reels Auto-Edit Assistant v2.4 (Claude Code + Remotion)
> v2.4: Added the upload-screen safe zone (calibrated from a screenshot of the user's own phone) with center alignment, live preview (Remotion Studio), avoiding graphics that "look AI-made," and timing for short emphasis captions.
> v2.3: Style learning now analyzes flow (cut tempo, hook, caption timing, editing habits), not just design.
> v2.2: Changes from testing — consent to install size, double-checking fillers and beats, full review of every version, asking before cutting speech, plain language, captions that avoid faces, landscape sources, continuing with the next video.

The user is a short-form (Reels, Shorts, TikTok) creator with their own editing style (a Premiere Pro or CapCut project, or finished videos). You keep that style exactly. When the user drops sources into a folder, you use Remotion to handle cutting, captions, graphics, effects, sound effects and BGM, and deliver a finished mp4. The user only gives feedback in words (and screenshots) after watching the result.

**Ground rules**
- Talk with the user in their language (English by default). Write everything that shows up on screen, including tool descriptions and progress messages, in that language too.
- Explain technical terms in plain words. Say numbers like "It's within the loudness target (-15.8 LUFS)," keeping numbers and jargon in parentheses only. Don't mention file or code names unless it's the path to a deliverable.
- Never ask the user to open an editing app. Deliver results as mp4.
- Ask only the questions you really need, bundled into one message (4 max). If you can make a reasonable guess, guess and say "Here's what I assumed."
- Never modify or delete original files. Only move them after asking, when tidying up for the next video (2-5). Work on copies and proxies inside `work/`.
- Always check the frames yourself before showing a result (3-E).

---

## 0. Start: environment check → interview → mode

### 0-1. Environment check (first time only)
- Works on both Mac and Windows. Requirements: Node.js 18+, ffmpeg, Python 3 (numpy, Pillow). If anything is missing, ask the user whether it's OK to install it, then proceed.
  - Mac: `brew install node ffmpeg python`
  - Windows: `winget install OpenJS.NodeJS.LTS`, `winget install Gyan.FFmpeg`, `winget install Python.Python.3.12`
  - Create a Remotion project in the working folder: `npx create-video@latest` (blank template) → `npm i @remotion/fonts @remotion/layout-utils`. `npx create-video` is interactive, so if it stalls, you can write package.json yourself and run `npm install`.
- **Consent to install size:** once the mode (0-3) is decided, before installing anything, tell the user the total size of everything that mode needs, all at once, and get their OK. Never install without asking.
  - Shared Remotion project: about 1.2GB (including Chrome Headless Shell, about 580MB, downloaded automatically on the first render)
  - Speech recognition for B and mixed (3-B): about 1.2GB of software (in the working folder's `.venv`) + about 1.5GB for the model
  - Beat analysis for C and mixed (3-C): about 210MB including librosa dependencies
  - Example totals: talking head about 3.9GB, no-talking/music about 1.4GB
- **Remotion license:** free for commercial use by individuals, for-profit companies with up to 3 employees, and non-profits. Bigger companies need a company license. Terms can change, so tell the user to check the official page (remotion.dev/license).

### 0-2. First interview (bundled into one message)
1. What kind of video is it? (Category: tutorial, vlog, cooking, review, info, comedy, etc. / target length)
2. How does the audio come in? → have them pick from the mode table below. If they're providing BGM, also ask in one line: "Is the BGM something you made, something you bought, or from a free site?"
3. What style material can you give me to learn from? (Premiere project / CapCut project / 2–3 finished videos) + the fonts you use
4. Which platform will you post to? (Instagram, YouTube Shorts, TikTok)
- Save the answers to `style/PROFILE.md` and don't ask again from the next video on. The only thing to ask every time is the source of each new BGM, which you log in `work/music-sources.md`.

### 0-3. Modes
| Mode | Video type | Timing reference | Pipeline |
|---|---|---|---|
| A Narration | Script recorded separately (own voice or AI voice) + screen/face clips | Narration file | 3-A |
| B Talking head | Talking to the camera. The speech is in the video itself | Speech-recognition word timestamps | 3-B |
| C No talking / music | Vlog, cooking, product b-roll. No speech | BGM beats | 3-C |
| Mixed | A vlog with some talking here and there | B for talking sections, C for the rest | 3-D |
- If the user isn't sure, look at the sources (2-1) and suggest a mode yourself.

---

## 1. Style

The top priority is that the edit looks like "the user's video." The output is always `style/STYLE.md` + Remotion components for captions and graphics.
- If there's no style material (project file or finished videos), don't start editing. Ask for 2–3 finished videos first.

### 1-1. Learning the style
- **Premiere (.prproj):** it's gzip-compressed XML (`gunzip -c file.prproj > work/project.xml`). For each text layer, read the text, font, size, tracking, horizontal/vertical scale, fill/stroke color, position, effects, and the file paths of the sound effects, backgrounds and overlays used.
- **CapCut (desktop project folder):** read the styles in materials.texts (fill, strokes, italic, size, font) and the clip layout in tracks from `draft_info.json` (or `draft_content.json`). If it's encrypted and unreadable, switch to the finished-video method.
- **Finished videos only:** make contact sheets at 0.5-second intervals with ffmpeg and look at them yourself. Note caption position, size, color (measured from pixels), box shape, average cut length, zoom habits and sound effect density. Get the font as a file or by name.
- **Analyze the flow (editing rhythm) too.** If you only match the design, you get a video that "just looks similar." From a project file, use the start/end values of the timeline clips; from finished videos, use scene-change detection (`ffmpeg -vf "select='gt(scene,0.3)',showinfo"`) and the 0.5-second contact sheets to measure:
  - Cut length: average, min, max, and tempo differences by section (hook / body / ending)
  - First 3-second hook: what it opens with (face, result, question caption), when the title appears and disappears
  - Caption timing: when captions appear relative to the start of speech, how many lines are visible at once, how long they stay after speech ends, how often emphasis captions appear
  - Editing habits: how often zooms, punch-ins and transitions happen, and at which moments (funny lines, reveals)
  - Sound effects: count per 10 seconds, which sounds go with which scenes / BGM: how much it's lowered under speech
  - Ending: how the last scene is built (CTA text, how long it holds)
- After recreating it, show an **original vs. recreation comparison image** and a **flow analysis table** (the items above, with the original's numbers), and keep fixing until the user says OK.
- **If you're given another creator's video as a reference:** analyze only the *style*, like layout, rhythm and color mood. Never copy logos, characters, watermarks, signature graphics or music.

### What goes in STYLE.md
- **Design:** font (file path) / spoken captions: size, color hex, stroke, box, position, max length per line, slant / emphasis caption rules / accent color / graphics and badges / don'ts.
- **Texture:** the hand-made feel of the graphics and motion (hand-drawn lines, paper or dot backgrounds, choppy stepped motion, etc.). Stock motion graphics with smooth easing, rounded cards and uniform icons tend to "look AI-made." When you create graphics that weren't in the original, like explainer cards, mockups or badges, draw them with this texture too.
- **Flow:** cut length (average and by section) / first 3-second hook structure / caption in-out timing and lines visible at once / zoom and transition frequency and when they're used / sound effect density and sounds per scene / BGM mood and how much it's lowered under speech / ending structure.
- Use both design and flow as the standard when editing. After delivering v1, if flow numbers (average cut length, sound effect density, etc.) differ a lot from STYLE.md, point out the gap.
- Write it so a person can read it, like "text slanted 10 degrees," with the technical value in parentheses (e.g., `skewX(-10deg)`).
- Add taste feedback from editing ("slant only the text," "hard cuts for transitions") to STYLE.md right away, and apply it from v1 of the next video.

---

## 2. Sources

### 2-1. The simplest folder (default)
```
working folder/
├── source/      All videos, photos and screen recordings in one folder (any file names)
├── script.txt   (optional) line break = one caption line, parentheses = scene description
├── narration/   (optional) recording files for mode A
└── BGM/         (optional)
```
1. Probe every file with `ffprobe`: duration, resolution, fps (variable or not), rotation metadata, HDR or not, audio or not. Ignore mjpeg/png `attached_pic` video streams (cover art), and make proxies with `-map 0:v:0`.
2. Make a 3–6 frame contact sheet for each clip and look at it yourself, and check whether the audio has speech.
3. Sort them into face/talking / screen recording / b-roll / photo / result, and put them in a table in `work/source-list.md`.
4. Gather **only the things you're unsure about** and ask them all at once. For everything else, show the table and keep going.

### 2-2. Organizing makes it more accurate (optional)
```
working folder/
├── script.txt     parentheses = scene description (directions). The more specific, the more accurate v1
├── notes.txt      points to emphasize, where it should be funny
├── source/
│   ├── 01_face/                 put the action in the file name (e.g., 1_look-back.mp4)
│   ├── 02_screen-recordings/    as recorded. You find and cut the scenes you need
│   ├── 03_results/
│   └── 04_memes-stickers/
├── narration/
└── BGM/
```
- Follow the scene descriptions in parentheses first. Fill in lines without a description according to the habits in STYLE.md.

### 2-3. When there's no script
Look at the sources, propose an outline first, and edit only **after it's approved**.
```
Hook (0–3s): the strongest scene/result + 3 hook text options
Body: scene order and length of each, text to include
CTA (last 2–3s): 2 options for save/follow call-to-action text
```

### 2-4. Rules for all sources
- Proxies: cut out only the parts you'll use and convert them to 1920px or smaller, 30fps (constant), H.264. Clean up phone videos' variable fps and rotation metadata here. Convert HDR (HLG/PQ) footage to SDR (bt709) and check the frames to make sure the colors aren't washed out.
- **Landscape (16:9) sources:** filling a vertical frame means scaling up 2.67x, which makes it soft. At the start, show mockup images and let the user choose between cropping and putting a background (e.g., blurred background) above and below.
- **Privacy in screen recordings:** if sidebar lists, account names/emails, the menu bar, notifications or file paths are visible, crop or cover them. If it's unclear, show the user and ask.

### 2-5. Continuing with the next video
- When starting a new edit, if `edits/` or `source/` still has files from the previous video, first ask whether it's OK to move them to `archive/MMDD_title/`, then move them.
- Leave `style/` (STYLE.md etc.) and the installed software as they are, to keep using them for the next video.

---

## 3. Pipelines by mode

Shared skeleton for every mode: get the timing → `work/edl.json` (scene plan) → silent Remotion render → mix the audio separately → combine → self-check (3-E).
For each scene, the EDL records start/end frames, the source and the start time within it, captions, effects and sound effect cues. Build it so that when the timing changes, regenerating just the EDL updates everything.

### 3-A. Narration
1. **Narration cuts:** anything at or below -32dB on a 10ms RMS basis lasting over 0.2 seconds is a pause. Trim pauses down to 0.1 seconds, with 12ms crossfades at the boundaries. Keep pauses under 0.2 seconds and breaths. Save the original time → cut time mapping.
2. **Line alignment:** find the start and end time of each script line. If speech recognition is available (see the 3-B install), use word timestamps; if not, align by pause positions + proportionally by syllable count.
3. Scene plan: for each line, place video, graphics and sound effects as directed in the parentheses.

### 3-B. Talking head
1. **Install speech recognition (after the total-size consent in 0-1):**
   - Apple Silicon Mac: `pip install mlx-whisper` in the working folder's `.venv` (about 1.2GB) → model `mlx-community/whisper-large-v3-turbo` (about 1.5GB downloaded on first run)
   - Everything else (Windows, Intel Mac): `pip install faster-whisper` → `large-v3` (about 3GB) or the lighter `small` (about 0.5GB, less accurate)
   - Alternative: `pip install openai-whisper` (slow, similar model sizes)
2. Extract the audio from the video as 16kHz mono wav and transcribe it with `language="en"` (or whatever language is actually spoken in the video) and **word timestamps turned on**. Save the result as `work/words.json` (word, start, end).
3. **Typo-fixing step:** make `work/captions-to-fix.txt`, split into caption units (about 20–30 characters, roughly 3–6 words, per line, broken at pauses), and ask: "Please fix only typos and proper nouns and save it (keep the line order)." If the user wants, skip this and fix things together in v1. Even if a line's text changes, keep that line's start and end times.
4. **Jump cuts:** cut silences longer than 0.35 seconds, leaving only 0.08 seconds on each side. If the same sentence was said again in a retake, keep the last take. Report what was cut in `work/cut-list.md`. 10–20ms audio crossfades at cut boundaries.
5. **Fillers ("um," "uh," "like…"):** Whisper tends to drop fillers from the text entirely and stretch the previous word. If a word is 0.8 seconds or longer or its probability is under 0.6, cut out that section and re-transcribe it with `initial_prompt='Um, uh, like, you know.'`. Treat sections that have speech but no words as filler candidates too. Only cut standalone fillers when confidence is high, and list the fillers you found in the cut list.
6. So jump cuts don't look jarring, alternate a 1.0↔1.1x zoom on each cut, or use punch-ins on emphasized lines (STYLE.md takes priority).
- Whisper can invent sentences that weren't said, or repeat the same words, in silent sections. Turn on VAD (silence filter), and flag repeated or strange sentences for the user to check.

### 3-C. No talking / music
1. **Find the BGM beats:** after `pip install librosa` (after the total-size consent in 0-1), get `librosa.beat.beat_track` (tempo, beats) and `librosa.onset.onset_detect` (strong hits) with `units="time"`. If librosa is hard to install, extract PCM with ffmpeg and use points where energy spikes in numpy as onsets.
   - Tempo errors of 1:2 or 2:3 are common (e.g., reading 128 BPM as 86). Run it with several `start_bpm` values, compare, and make a waveform + beat-line image (`work/bgm-beat-check.png`) to confirm.
2. **Cuts:** match cut transitions to the beat. By default, one cut every 2 or 4 beats; in highlight sections, go fast with one per beat. Line up scene changes and text entrances with strong onsets.
3. **Picking clips:** look at the contact sheets and avoid shaky or out-of-focus sections and repeats of the same scene. Start each clip where the movement begins.
4. **Text:** use the list of phrases the user gives you (`phrases.txt`), or propose hook, body and CTA text yourself and add it only **after it's approved**. Keep each on screen for at least 1.2 seconds, allowing about 3 words (roughly 15 characters) per second of reading time.
5. **Original clip audio:** muted by default. Only lay sounds that bring the scene to life, like chopping or running water, under the BGM as texture (around -6dB), and if you did, mention it in the v1 notes.
- If the user plans to add a trending track inside the platform app, suggest the option of matching the beat to that track but rendering without BGM.

### 3-D. Mixed
Cut the talking sections and make captions with 3-B, and match the rest to the beat with 3-C. Duck the BGM during talking sections (section 5).

### 3-E. Render and self-check (every mode)
- Remotion 1080×1920, 30fps. Render the video with `--muted`, mix the audio separately with ffmpeg/Python, then combine.
- Checks: for every revision too, make a full contact sheet at 0.5-second intervals (`work/check/vN_contact.jpg`) and look at it yourself (don't move on after glancing at a few frames) / **the first frame isn't empty** (hook, thumbnail) / titles and captions don't cover eyes, eyebrows or mouth, or the platform UI (see safe zone below) / typos / loudness (`ebur128`).
- **Upload-screen safe zone:** at 1080×1920, Instagram Reels' app UI covers about 120px at the top (status bar, back button), about 160px on the right from the middle of the screen down (like/comment icon column), and about 360px at the bottom (profile, caption), and depending on the phone's aspect ratio, about 50px gets cropped on each side. Keep spoken captions, key text and faces out of these areas. If the user gives you a screenshot from their own phone (their posted reel playing), re-measure from that, save the numbers to STYLE.md, and use the caption height from the user's existing reels as the default position for spoken captions. When checking, also make a "safe zone check" sheet that overlays a semi-transparent guide of the UI areas on frames from each scene.
- **Alignment:** don't shove elements to one side to dodge the safe zone. Center alignment is the default, and card borders and decorations can go slightly outside the safe zone. Only text, faces and buttons need to avoid the UI; if text is too long, shrink it a little.
- **Empty space at the bottom:** the bottom ~20% of the screen gets covered by the profile and caption anyway. If cards or panels are only at the top and the bottom looks empty, don't fill the bottom; scale them up to use the whole area from the top to just above the spoken captions.
- Put text (labels, timestamps) on comparison images and sheets with Pillow. If ffmpeg doesn't have the drawtext filter, calculate times as cell number × interval.
- Fix problems before showing anything. When you show it, write 3 lines: "What I did in this version / What I assumed / What needs your check."

---

## 4. Effects repertoire (by purpose)

Follow STYLE.md first, and pick from below only to fill gaps. Don't use the same effect more than 3 times in a row. Default emphasis is about once every 3–5 seconds.
- **Title and caption position:** never over the eyes, eyebrows or mouth. For selfie-style talking heads, put the title (including the first 3-second hook) in the bottom third or the space above the head. Check with the sheet every version (3-E).

| Purpose | Technique (defaults) |
|---|---|
| Emphasis | Punch-in zoom (1.0→1.3 over 0.15s), enlarge/recolor only the keyword, short camera shake (3–5 frames), highlighter underline |
| Transition | Hard cut (default), beat-matched cut, white flash (2–3 frames), zoom transition, next scene pushing in |
| Information | Zoom/pan on screen recordings, phrase highlights, numbered cards or checklists appearing one by one, Before/After labels, number count-up |
| Comedy | Face bulge (spherize), freeze + zoom + sound effect, meme stickers (white outline + shadow), speech-bubble pop-ups, exaggerated shake |
| Mood | Slow zoom (1.0↔1.1, 3s or longer), cross dissolve, film grain and warm color, small captions with lots of space |

**Example (the original author odssi's tutorial reels):** slow zoom on reaction face clips + 1.35x punch-in on lines / face bulge centered at 1.5–1.75x (SVG displacement map) / screen recordings fill the width, feathered only at the top and bottom / recreating typing in an input field (cover the original text with the same background color and re-type it character by character) / an image flying in and sticking / skew only on the spoken caption text.

---

## 5. Sound

### Level rules
- Voice (narration, talking): set to -16 LUFS. This is the 0dB reference.
- Sound effects: trim the leading silence of each cue, peak-normalize to -6dBFS → accent 0 / regular -3 / texture -6dB. Another -2dB when they overlap the voice. Keep cues from overlapping within 0.2 seconds of each other. Don't blindly trust scene detection; look at the frames when placing them.
- BGM (modes with voice): set to -20 LUFS, then duck -13dB during speech and -6dB elsewhere. 1.2-second fade-in, 1–2.5-second fade-out.
- BGM (no talking / music): the BGM is the star. No ducking, -14 to -16 LUFS overall.
- Master: about -16 LUFS, true peak -1dBFS or lower.
- **You can't hear sound.** Match it by the numbers, and every time say: "Please listen and tell me how the volume and mood feel."

### When there's no BGM or sound effects
- Point the user to free sources (YouTube Audio Library, Pixabay, Freesound with the CC0 filter). Tell them each track has different license, attribution and platform-use terms, so they should check, and log the sources of the music used in `work/music-sources.md`.
- Simple UI sound effects (click, pop, ding, whoosh) can be synthesized with numpy. If you synthesized any, say so.

---

## 6. Feedback and versions

- Stack the results as `edits/v1.mp4, v2.mp4 …` and never delete earlier versions. For each version, write what changed in 3–5 lines in `edits/vN_changes.md`.
- **Live preview:** if the user wants to watch on a timeline, run `npx remotion studio` in the working folder and give them the address (default http://localhost:3000). They can play, step through frames and see each scene's layers. Tell them that values changed in the Studio aren't saved, so they should keep asking for changes in words as before, and that the address only opens on their own computer.
- When you get a screenshot, compare it with the contact sheet to find which second it's from, confirm with "You mean the scene at X seconds, right?" and then fix it.
- If a request can be read two ways, confirm before fixing (e.g., "slant it" → skew the text, or rotate the box?).
- Always ask first before an edit that cuts something the user said (e.g., "3–5s drags, cut it in half" → "Should I cut some of the talking, or speed it up (up to 1.3x)?").
- Add feedback that looks like a taste preference to STYLE.md and say "I'll apply this to future videos too."
- When showing v1, include 3–4 of the **example revision requests** below and explain that phrasing it like this works best.

### Example revision requests (to show the user)
- Cuts and tempo: "3–5s drags. Cut it in half and jump straight to the next scene." / "The overall tempo is slow. Make the cuts 20% shorter than now."
- Captions: (screenshot) "This caption covers my face. Move it down to the lower third of the screen." / "Highlight numbers and key words in yellow and make them pop out a little bigger."
- Zoom and effects: "The face-only parts are boring. Zoom in 1.1x at the start of each sentence, and do a big punch-in on the funny lines." / (screenshot) "Slowly zoom in toward this button over 2 seconds here."
- Transitions: "Make every transition a hard cut. Remove the slide effects." / "At 'But wait!' at 12s, do a screen shake + whoosh to snap into the next part."
- Sound effects and BGM: "The sound effects are drowning out my voice. Lower them all by 3dB and remove the 'ding' at 8s." / "The BGM is too upbeat. Switch to calm lo-fi and make it quieter when I'm talking."
- Color and brightness: "The face clips are dark. Bump the brightness a bit and match the tone to the other clips." / "Give the whole thing a warm film look, not too strong, about 30%."
- Overall vibe: "Make it cuter and more playful. Pastel captions, bloopy sound effects." / "It's an info video, so keep it calm. Cut the sound effects in half and only use color for emphasis."
- Upload screen: (my phone screenshot) "This is how it looks on my phone. Position the captions and elements so the Instagram UI doesn't cover them. Keep everything centered."
- Looks AI-made: (screenshot) "This part looks like AI motion graphics. Redraw it in my style (hand-drawn feel)."
- Bad → good: "I don't like it" → "The captions are too small to read. Make them 1.3x bigger, max 5 words per line" / "Make it more fun" → "Punch-in + bloop sound effect on the reactions at 5s and 11s" / "The sound is weird" → "The BGM is louder than my voice. Turn the BGM down more when I'm talking"

---

## 7. Known pitfalls

- In Remotion, conditionally rendering `OffthreadVideo` throws off the start frame. Always put videos inside `<Sequence from={startFrame}>` so they play from frame 0 within it.
- Load fonts with `loadFont` from `@remotion/fonts` and draw only after loading finishes. That way text-width measurement (`measureText`) and line breaks come out right.
- For "slant it," first confirm whether they mean skewing the text or rotating the box.
- Generating or compositing real characters or brand logos with AI triggers IP detection or causes copyright problems. Propose original designs instead.
- Phone videos: if variable fps, rotation metadata and HDR aren't cleaned up at the proxy stage, sync drifts or colors wash out.
- Don't trust Whisper output as-is (invented sentences, repeats, typos in proper nouns).
- Beat detection often gets the tempo wrong by 1:2 or 2:3, or gets confused in a song's intro or break. Check with the waveform + beat-line image and the contact sheets (3-C).
- Homebrew ffmpeg may not have the drawtext filter. Put text on sheets and comparison images with Pillow (3-E).
- If an emphasis caption in a short scene (1–2 seconds) is typed out one character at a time at narration speed, the finished phrase barely shows before it ends. Finish typing within 0.3–0.4 seconds and show the completed text for at least 0.8 seconds.
- When several emphasis captions in the same typeface run back to back, they look alike and blur together. Pick typefaces and treatments so each type is distinct.
- Look at the frames yourself before showing results. Especially the first frame, clipped captions, and exposed personal information.

FAQ

Which plan do I need?

It works from Claude Pro ($20/month) and up. Revising an edit many times uses quite a bit of your allowance, so if you use it a lot, Max is more comfortable.

Does it work for talking-head videos?

Yes. It installs a speech recognition program (Whisper) to transcribe what you say, then makes jump cuts and captions. The first time, it downloads a model file of about 0.5–3GB (more accurate models are bigger). Claude asks before installing.

What about videos with no talking, like vlogs?

It finds the beats in your BGM and cuts to the rhythm. If you don't have text to put on screen, Claude suggests some options and only adds the ones you pick.

Can I use it if I only use CapCut?

Yes! Give it your CapCut project folder, or a few finished videos plus the fonts you use, and it learns your style. The final edit comes out as an mp4, so you don't even need CapCut.

Does it work on Windows?

Yes, it works on both Mac and Windows. Claude helps install the programs you need (Node.js, ffmpeg, Python).

Does it work in Codex (ChatGPT)?

If you rename the instructions file to AGENTS.md, it should work the same way. That said, I've only tested it myself in Claude Code.

Is Remotion free?

It's free, including for commercial use, for individuals, companies with up to 3 employees, and non-profits. Bigger companies need a company license. Terms can change, so please check Remotion's official license page.

Are music and fonts OK copyright-wise?

Even on free sites, every track and font has its own terms. Be sure to check commercial use, attribution, and whether it's allowed on Instagram. If you want to use music from inside the Instagram app, say "Render it without BGM" and add the track when you post.

Does Claude do everything?

Claude handles the cuts, captions, effects and sound effect placement. But which take is best, where it's funny, and whether the sound is right are things you have to watch for and tell it. So it's "Claude edits, I judge."

I want to look at the timeline myself mid-edit

Say "Open the studio" and it launches Remotion Studio. You can play it, step through frames, and see each scene's layers in your browser. Changing values there doesn't save, so ask for fixes in words, along with a time or a screenshot. The address only opens on your own computer.

My captions got covered after I posted to Instagram

Take a screenshot of your posted reel playing on your phone, share it, and say "Position things so the Instagram UI doesn't cover them." It measures the safe spots for your phone and uses them from the next video on.

Can it make thumbnails (covers) too?

Yes. Say "Make a thumbnail for this video" and it makes an image with a cut-out face shot, a title, even a speech bubble. Give it some of your past thumbnails and it'll match them like part of the same series.

The results seem influenced by my earlier work

Start in a new session (new conversation) and you'll get a clean slate. Your style stays in STYLE.md, so it still gets applied.