summit-video-pipeline
End-to-end video editing pipeline driven by Claude Code + CLI tools only. No GUI editor in the loop.
When to use
- User has raw footage (one or more clips) and wants a finished short-form video.
- User wants filler removed (umms, ahs, dead air, retakes).
- User wants motion graphics, lower-thirds, captions, b-roll cuts, or animated overlays.
- User wants the entire edit driven by a single prompt or short brief.
If the task is purely a render of an existing edit, skip stages 1–4 and jump to stage 7.
Upstream stack (install once)
| Component |
Repo |
Role |
| HyperFrames |
https://github.com/heygen-com/hyperframes |
HTML→video render engine. Headless Chromium + paused GSAP timeline. Apache-2.0. NOT Remotion. |
| video-use skill |
https://github.com/browser-use/video-use |
Claude Code skill (SKILL.md + skills/manim-video/) that teaches Claude to drive HyperFrames + Manim. |
| Student kit |
https://github.com/nateherkai/hyperframes-student-kit |
Reference workbench: brand system, audio sync, render pipeline, sample compositions. |
Prereqs: Node 20+, FFmpeg with libass (brew default lacks it — use brew tap homebrew-ffmpeg/ffmpeg && brew install homebrew-ffmpeg/ffmpeg/ffmpeg), whisper-cpp, headless Chrome/Chromium, ~5 GB free disk, 16 GB RAM recommended. Run npx hyperframes doctor after install. Verify libass: ffmpeg -filters | grep subtitles.
CLI tools used
ffmpeg — cut, concat, mux, encode, scale, audio extract.
whisper-cli (whisper-cpp) — transcript + word-level timestamps for cut points and subtitles.
npx hyperframes — HTML→video renderer.
manim (optional, via video-use skill) — programmatic 2D math/diagram animations.
yt-dlp — pull reference footage if needed.
imagemagick — thumbnail/poster generation.
Pipeline stages
Each stage lives in references/. Load only the stages needed for the current task.
| # |
Stage |
File |
Output |
| 1 |
Ingest |
references/stage-1-ingest.md |
Normalized clips, manifest |
| 2 |
Transcribe |
references/stage-2-transcribe.md |
Word-timestamped transcript |
| 3 |
Cut script |
references/stage-3-cut-script.md |
EDL (cut list) JSON |
| 4 |
Assemble |
references/stage-4-assemble.md |
Rough cut MP4 |
| 5 |
Motion graphics |
references/stage-5-motion-graphics.md |
HyperFrames HTML compositions → MP4 overlays |
| 6 |
Subtitles |
references/stage-6-subtitles.md |
Burned-in or sidecar SRT |
| 7 |
Composite + render |
references/stage-7-composite-render.md |
Final MP4 |
System flow (full pipeline)
raw/ # user drops footage here
clip-01.mov
clip-02.mov
music.mp3 (optional)
brief.md # one paragraph: hook, audience, key points, length, vibe
- Ingest — normalize fps/resolution/codec, write
manifest.json.
- Transcribe — whisper-cli over each clip →
transcript.json w/ word timestamps.
- Cut script — Claude reads transcript + brief, produces
edl.json (in/out points per clip, ordering, intentional pauses).
- Assemble — ffmpeg concat from EDL →
rough-cut.mp4.
- Motion graphics — Claude writes HTML/CSS/GSAP compositions in
compositions/, renders each via npx hyperframes render → transparent-background MP4s.
- Subtitles — whisper word timestamps → SRT, optional burn-in via ffmpeg
subtitles= filter.
- Composite + render — ffmpeg overlay compositions on rough cut, mux audio (music ducked under VO), encode H.264 9:16 1080×1920 →
final.mp4.
Operator prompt template
Role: Edit this video as a Claude-Code-driven editor using summit-video-pipeline.
Context: [project, audience, platform — e.g. Summit IG Reels]
Objective: [one sentence, e.g. "60s reel teaching Freedom at 45 mini-app"]
Inputs: raw/ + brief.md
Constraints: [length, aspect, vibe, brand colors, no music / music track]
Output: final.mp4 + subtitle.srt + thumbnail.jpg
Single-stage shortcuts
- "transcribe this" → stage 2 only.
- "cut the umms out" → stages 2 + 3 + 4.
- "add a lower-third saying X at 0:12" → stage 5 only.
- "burn captions in" → stage 6 only.
- "render the final" → stage 7 only.
Quality gates
Before marking done:
Provenance
Reverse-engineered 2026-04-27 from @cooper.simson IG reel DXiyhqIjn_n. Cooper's caption: "What took 2 hours in Premiere and a team of experts now takes 10 mins." Cooper explicitly contrasts this with Remotion ("too limited"). HyperFrames is HeyGen's open-source successor approach — HTML/CSS/GSAP + headless Chromium.
1---2name: summit-video-pipeline3description: summit-video-pipeline4---56# summit-video-pipeline78End-to-end video editing pipeline driven by Claude Code + CLI tools only. No GUI editor in the loop.910## When to use1112- User has raw footage (one or more clips) and wants a finished short-form video.13- User wants filler removed (umms, ahs, dead air, retakes).14- User wants motion graphics, lower-thirds, captions, b-roll cuts, or animated overlays.15- User wants the entire edit driven by a single prompt or short brief.1617If the task is purely a render of an existing edit, skip stages 1–4 and jump to stage 7.1819## Upstream stack (install once)2021| Component | Repo | Role |22|---|---|---|23| HyperFrames | `https://github.com/heygen-com/hyperframes` | HTML→video render engine. Headless Chromium + paused GSAP timeline. Apache-2.0. NOT Remotion. |24| video-use skill | `https://github.com/browser-use/video-use` | Claude Code skill (`SKILL.md` + `skills/manim-video/`) that teaches Claude to drive HyperFrames + Manim. |25| Student kit | `https://github.com/nateherkai/hyperframes-student-kit` | Reference workbench: brand system, audio sync, render pipeline, sample compositions. |2627Prereqs: Node 20+, FFmpeg **with libass** (brew default lacks it — use `brew tap homebrew-ffmpeg/ffmpeg && brew install homebrew-ffmpeg/ffmpeg/ffmpeg`), whisper-cpp, headless Chrome/Chromium, ~5 GB free disk, 16 GB RAM recommended. Run `npx hyperframes doctor` after install. Verify libass: `ffmpeg -filters | grep subtitles`.2829## CLI tools used3031- `ffmpeg` — cut, concat, mux, encode, scale, audio extract.32- `whisper-cli` (whisper-cpp) — transcript + word-level timestamps for cut points and subtitles.33- `npx hyperframes` — HTML→video renderer.34- `manim` (optional, via video-use skill) — programmatic 2D math/diagram animations.35- `yt-dlp` — pull reference footage if needed.36- `imagemagick` — thumbnail/poster generation.3738## Pipeline stages3940Each stage lives in `references/`. Load only the stages needed for the current task.4142| # | Stage | File | Output |43|---|---|---|---|44| 1 | Ingest | `references/stage-1-ingest.md` | Normalized clips, manifest |45| 2 | Transcribe | `references/stage-2-transcribe.md` | Word-timestamped transcript |46| 3 | Cut script | `references/stage-3-cut-script.md` | EDL (cut list) JSON |47| 4 | Assemble | `references/stage-4-assemble.md` | Rough cut MP4 |48| 5 | Motion graphics | `references/stage-5-motion-graphics.md` | HyperFrames HTML compositions → MP4 overlays |49| 6 | Subtitles | `references/stage-6-subtitles.md` | Burned-in or sidecar SRT |50| 7 | Composite + render | `references/stage-7-composite-render.md` | Final MP4 |5152## System flow (full pipeline)5354```55raw/ # user drops footage here56 clip-01.mov57 clip-02.mov58 music.mp3 (optional)59brief.md # one paragraph: hook, audience, key points, length, vibe60```61621. **Ingest** — normalize fps/resolution/codec, write `manifest.json`.632. **Transcribe** — whisper-cli over each clip → `transcript.json` w/ word timestamps.643. **Cut script** — Claude reads transcript + brief, produces `edl.json` (in/out points per clip, ordering, intentional pauses).654. **Assemble** — ffmpeg concat from EDL → `rough-cut.mp4`.665. **Motion graphics** — Claude writes HTML/CSS/GSAP compositions in `compositions/`, renders each via `npx hyperframes render` → transparent-background MP4s.676. **Subtitles** — whisper word timestamps → SRT, optional burn-in via ffmpeg `subtitles=` filter.687. **Composite + render** — ffmpeg overlay compositions on rough cut, mux audio (music ducked under VO), encode H.264 9:16 1080×1920 → `final.mp4`.6970## Operator prompt template7172```73Role: Edit this video as a Claude-Code-driven editor using summit-video-pipeline.74Context: [project, audience, platform — e.g. Summit IG Reels]75Objective: [one sentence, e.g. "60s reel teaching Freedom at 45 mini-app"]76Inputs: raw/ + brief.md77Constraints: [length, aspect, vibe, brand colors, no music / music track]78Output: final.mp4 + subtitle.srt + thumbnail.jpg79```8081## Single-stage shortcuts8283- "transcribe this" → stage 2 only.84- "cut the umms out" → stages 2 + 3 + 4.85- "add a lower-third saying X at 0:12" → stage 5 only.86- "burn captions in" → stage 6 only.87- "render the final" → stage 7 only.8889## Quality gates9091Before marking done:92- [ ] `final.mp4` plays end-to-end with no black frames or audio dropouts.93- [ ] Subtitle drift ≤ 200ms vs spoken word at any point.94- [ ] Output matches target aspect (9:16 default) — verify `ffprobe`.95- [ ] No watermarks from upstream tools.96- [ ] File size reasonable for platform (< 100 MB for IG Reel).9798## Provenance99100Reverse-engineered 2026-04-27 from @cooper.simson IG reel `DXiyhqIjn_n`. Cooper's caption: "What took 2 hours in Premiere and a team of experts now takes 10 mins." Cooper explicitly contrasts this with Remotion ("too limited"). HyperFrames is HeyGen's open-source successor approach — HTML/CSS/GSAP + headless Chromium.