Hinglish talking-head / product-ad reel
Companion to video-editor-pro (read its references/studio-folder-structure.md and lessons-and-feedback.md first). Working dir: the studio ($VIDEO_STUDIO, default ~/video-editing). Keep your own best project as the reference implementation and note its path in the studio CLAUDE.md.
Folder structure (per project)
projects/YYYY-MM-DD_<slug>/
notes.md raw/ edit/ work/ exports/
edit/: clips.json phrases.json build_segments.py segments.json edit.json compose.py captions.ass gfx_plan.json
Create: ./new-project.sh <name> (moves inbox/* to raw/). Fill notes.md brief (platform, message, CTA, look, music).
Pipeline
- Probe + contact sheet of raw (
video-editor-pro/scripts/probe.py,contact_sheet.sh). Setexport PATH=/opt/homebrew/opt/ffmpeg-full/bin:$PATH. - Find speech: silencedetect → regions; run
whisper-cli -m ~/.cache/whisper-cpp/ggml-medium.bin -l hion EACH region. - Take table in notes.md (line → takes → kept). Keep the LAST clean take; drop false starts, stumbles, stray "accha". →
clips.json. - Phrases:
phrases.jsonwith source in/out + hand-romanised caption text (English words in English spelling). Fix captions here only. - build_segments.py: tighten pauses to ~0.1 s, cut on breath midpoints, drop fillers; alternate framing zooms from
brand.json([1.0,1.04]↔[1.13,1.16]); transitions ONLY at section changes (whip, zoom-punch, glitch, flash on CTA). Writessegments.json+edit.json. - Base render:
python3 ~/.claude/skills/video-editor-pro/scripts/edl_render.py edit/edit.jsonwith the look fromassets/luts/looks.json(warm_clean+vignette 0.25 for plain office;premium_cinematicgrade + finish for premium; neutralise colour casts first). - compose.py: graphics from
toolkit/gfx*.pyanchored to spoken words (viatoolkit/timeline.py), drawtext titles (brand.json), karaoke ASS captions (Montserrat Black 100, 3 words/line, y=0.7, uppercase, highlight yellow), SFX schedule (+6 dB, transitions +9 dB, layered), music bed ducked under voice. Flags:--previewfast,--gfxre-render graphics,--stillsgraphic stills. - Preview → approval → Master: first
compose.py --preview+ normalize →exports/vN_preview_<what>.mp4and WAIT for the user to approve; then full render,normalize_audio.sh work/mix.mov work/norm.mov --target -11 --tp -1.5→ffmpeg -c:v copy -c:a aac -b:a 320k -movflags +faststart exports/vN_<what>.mp4→qc.py --platform reelsmust PASS. - Filler/stutter check (re-transcribe silence-gated chunks), look at frames, then append to notes.md edit log.
Style defaults (user-approved)
Full treatment unasked: premium grade, B-roll-style data graphics synced to words, transitions at section changes, loud layered SFX, crisp full-res graphics (never blurred plate), real logo end card (sheen + CTA tap), karaoke Roman captions. Product ads: client brand colours on a light canvas (e.g. a violet→blue gradient #683CEC→#185CE8), brand kit in assets/brand/<client>/, CTA matching the ad button ("Tap Learn More"). Add new reusable graphics to toolkit/, not the project.
Thumbnails (always)
With every export (and alongside every preview) make exports/vN_cover_reels_1080x1920.jpg (all text inside the centre 1080x1440 = Instagram 3:4 grid crop) and exports/vN_thumb_youtube_1280x720.jpg from the sharpest full-res photo/frame, graded like the video, bold Montserrat Black title + brand-yellow highlight + real logo. Use the thumbnail-designer skill.