Skip to content

wesbos/syntax-supercut-studio

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Supercut Studio

Supercut Studio demo video

A local SvelteKit app for browsing transcript/video buckets and rendering supercuts. It can stitch phrase or regex matches, synthesize fake sentences, songify clips, transcribe missing media with xAI STT, and browse/delete finished renders.

Requirements

  • Node 22+
  • ffmpeg on PATH
  • aubiopitch on PATH for /songify (brew install aubio)
  • XAI_API_KEY for /transcribe and /supercut AI regex suggestions
  • One or more local media buckets under ./videos by default
  • Source videos downloaded into those buckets, for example with yt-dlp

Local .env files are loaded by Vite/SvelteKit. On boot, the app also tries to hydrate missing env vars from ../syntax-transcripts-2026/.env; override that lookup with SYNTAX_REPO_DIR=/abs/path if needed.

Media Layout

The app treats each direct child of the buckets root as one bucket. A valid bucket has a videos/ folder; transcripts/ and supercuts/ are created or read when needed.

videos/                         # bucket root
  syntax/                       # bucket name
    videos/                     # source .mp4/.mkv/.mov/.webm/.avi and .mp3
    transcripts/                # word-level .json transcripts
    supercuts/                  # generated .mp4 renders
  another-channel/
    videos/
    transcripts/
    supercuts/

Set SYNTAX_BUCKETS_DIR=/abs/path to use a different bucket root. The songify pitch cache lives beside the bucket root as .pitch-cache.json.

Download source media into a bucket's videos/ folder before transcribing or rendering. yt-dlp works well for pulling YouTube videos or playlists into the expected local layout.

Run

npm install
npm run dev
# Visit http://localhost:5180

For production-style serving:

npm run build
node build

Useful checks:

npm run check

What's Here

  • / - Library dashboard grouped by bucket. Shows video, mp3, transcript, size, word count, duration, per-row transcribe actions, and delete actions.
  • /clips - Grid of rendered .mp4 files from every bucket's supercuts/ folder, with filtering, playback, download, and delete.
  • /supercut - Phrase, regex, or AI-assisted regex supercut builder. Supports bucket selection, tile mode, clip limits, dry-run duration estimates, and debug text overlay.
  • /sentence - Picks one clip per word and stitches a sentence they never said. Supports bucket selection, fixed seeds, morphology fallbacks, and debug overlay.
  • /songify - Detects per-clip pitch with aubiopitch and arranges clips into a melody. Supports bucket selection, single-clip mode, and optional pitch shifting.
  • /transcribe - Transcribes one file or all missing files in selected buckets through xAI speech-to-text. Extracts .mp3 first when needed.
  • /stats - Top words and n-grams across all bucket transcripts.

Architecture Notes

Style Notes

  • Global design tokens and reusable classes live in src/app.css.
  • Palette: --bg white, --ink near-black, single --accent: #D0FE03.
  • Unbounded is the main typeface; JetBrains Mono is used for logs and code-like text.
  • Sections separate with whitespace or 1px rules. Status indicators use outlined or filled squares, not colored pills.
  • The log panel is the primary inverted surface: black background with accent text.

About

Local SvelteKit app for rendering transcript supercuts

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors