By harrisonsec.com on April 22, 2026

Video Editing Rules (HARD, NON-NEGOTIABLE)

These rules exist because of repeated failures in April 2026. Every rule corresponds to a real incident that wasted time.


Rule 0: BACKUP BEFORE ANYTHING

# FIRST command before ANY edit:
cp file.tsx file.tsx.bak
cp video_complete.mp4 video_complete_backup.mp4

No exceptions. No “git has it.” Local backup FIRST.


Rule 1: Only Change What’s Asked

  • “调整位置” = change CSS bottom: / top: values. NOTHING ELSE.
  • Don’t touch audio. Don’t touch fonts. Don’t “improve” anything.
  • Don’t reorganize code structure while you’re there.

Rule 2: Audio Pipeline

When only visuals changed (positions, colors, timing):

# Step 1: Extract audio from original complete (已混好的音频)
ffmpeg -y -i short1_complete.mp4 -vn -c:a aac /tmp/audio.aac

# Step 2: Merge with new video (zero re-encoding of audio)
ffmpeg -y -i short1_new.mp4 -i /tmp/audio.aac -map 0:v -map 1:a -c:v copy -c:a copy short1_positioned.mp4

NEVER:

  • Guess which VO file to use
  • Guess volume levels
  • Re-mix audio from individual tracks (unless explicitly asked)
  • Use amix, adelay, volume filters when just copying audio

The audio files in audio/shorts/:

  • short1_suffocating.mp3 — Short1 VO (NOT harrison_fast!)
  • short2_harrison_fast.mp3 — Short2 VO
  • short3_harrison_fast.mp3 — Short3 VO
  • short*_sfx.mp3 — background music + sound effects
  • bgm_*.mp3 — background music variants

When in doubt: extract from the original complete.mp4 — it already has the correct mix.


Rule 3: Output Naming

TypeNamingExample
Original completeshort1_complete.mp4SACRED. READ-ONLY.
New visual rendershort1_v4.mp4Video only, no audio
New completeshort1_positioned.mp4New video + original audio
Backupshort1_complete_backup.mp4Before any operation

NEVER overwrite *_complete.mp4.


Rule 4: Re-Read Before Editing

Long conversations cause context loss. Before editing ANY file:

# Always re-read the file you're about to edit
cat Short1Suffocating.tsx | grep "bottom:"

Don’t rely on memory. Don’t say “I remember the values.” RE-READ.


Rule 5: Verify After Each Step

# After render: check it has frames
ffprobe -v quiet -show_entries format=duration output.mp4

# After audio merge: check it has audio
ffprobe -v quiet -show_streams -select_streams a output.mp4

# After position change: render a still and visually verify
npx remotion still CompositionName --frame=400 --output=/tmp/check.png

Current Source Files

ComponentFileVO offsetDuration
Short1Suffocatingsrc/Short1Suffocating.tsx4s15s
Short2CodeRatiosrc/Short2CodeRatio.tsx4s15s
Short3Dollarsrc/Short3Dollar.tsx5.5s15s

Render Commands

# Render video only (no audio)
npx remotion render Short1Suffocating out/shorts/short1_v5.mp4 --codec=h264

# Render a still for position check
npx remotion still Short1Suffocating --frame=400 --output=/tmp/check.png

# Merge video + extracted audio
ffmpeg -y -i new_video.mp4 -i extracted_audio.aac -map 0:v -map 1:a -c:v copy -c:a copy output.mp4