[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-80267":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":9,"language":10,"languages":9,"totalLinesOfCode":9,"stars":11,"forks":12,"watchers":13,"openIssues":14,"contributorsCount":15,"subscribersCount":15,"size":15,"stars1d":14,"stars7d":16,"stars30d":17,"stars90d":15,"forks30d":15,"starsTrendScore":16,"compositeScore":18,"rankGlobal":9,"rankLanguage":9,"license":9,"archived":19,"fork":19,"defaultBranch":20,"hasWiki":21,"hasPages":19,"topics":22,"createdAt":9,"pushedAt":9,"updatedAt":23,"readmeContent":24,"aiSummary":25,"trendingCount":15,"starSnapshotCount":15,"syncStatus":26,"lastSyncTime":27,"discoverSource":28},80267,"syntax-supercut-studio","wesbos\u002Fsyntax-supercut-studio","wesbos","Local SvelteKit app for rendering transcript supercuts",null,"TypeScript",104,20,89,1,0,4,12,3.97,false,"main",true,[],"2026-06-12 02:04:00","# Supercut Studio\n\n[![Supercut Studio demo video](https:\u002F\u002Fimg.youtube.com\u002Fvi\u002F3iT7fVVm4Uc\u002Fmaxresdefault.jpg)](https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=3iT7fVVm4Uc)\n\nA local SvelteKit app for browsing transcript\u002Fvideo buckets and rendering\nsupercuts. It can stitch phrase or regex matches, synthesize fake sentences,\nsongify clips, transcribe missing media with xAI STT, and browse\u002Fdelete finished\nrenders.\n\n## Requirements\n\n- Node 22+\n- `ffmpeg` on `PATH`\n- `aubiopitch` on `PATH` for `\u002Fsongify` (`brew install aubio`)\n- `XAI_API_KEY` for `\u002Ftranscribe` and `\u002Fsupercut` AI regex suggestions\n- One or more local media buckets under `.\u002Fvideos` by default\n- Source videos downloaded into those buckets, for example with `yt-dlp`\n\nLocal `.env` files are loaded by Vite\u002FSvelteKit. On boot, the app also tries to\nhydrate missing env vars from `..\u002Fsyntax-transcripts-2026\u002F.env`; override that\nlookup with `SYNTAX_REPO_DIR=\u002Fabs\u002Fpath` if needed.\n\n## Media Layout\n\nThe app treats each direct child of the buckets root as one bucket. A valid\nbucket has a `videos\u002F` folder; `transcripts\u002F` and `supercuts\u002F` are created or\nread when needed.\n\n```txt\nvideos\u002F                         # bucket root\n  syntax\u002F                       # bucket name\n    videos\u002F                     # source .mp4\u002F.mkv\u002F.mov\u002F.webm\u002F.avi and .mp3\n    transcripts\u002F                # word-level .json transcripts\n    supercuts\u002F                  # generated .mp4 renders\n  another-channel\u002F\n    videos\u002F\n    transcripts\u002F\n    supercuts\u002F\n```\n\nSet `SYNTAX_BUCKETS_DIR=\u002Fabs\u002Fpath` to use a different bucket root. The songify\npitch cache lives beside the bucket root as `.pitch-cache.json`.\n\nDownload source media into a bucket's `videos\u002F` folder before transcribing or\nrendering. `yt-dlp` works well for pulling YouTube videos or playlists into the\nexpected local layout.\n\n## Run\n\n```sh\nnpm install\nnpm run dev\n# Visit http:\u002F\u002Flocalhost:5180\n```\n\nFor production-style serving:\n\n```sh\nnpm run build\nnode build\n```\n\nUseful checks:\n\n```sh\nnpm run check\n```\n\n## What's Here\n\n- `\u002F` - Library dashboard grouped by bucket. Shows video, mp3, transcript,\n  size, word count, duration, per-row transcribe actions, and delete actions.\n- `\u002Fclips` - Grid of rendered `.mp4` files from every bucket's `supercuts\u002F`\n  folder, with filtering, playback, download, and delete.\n- `\u002Fsupercut` - Phrase, regex, or AI-assisted regex supercut builder. Supports\n  bucket selection, tile mode, clip limits, dry-run duration estimates, and\n  debug text overlay.\n- `\u002Fsentence` - Picks one clip per word and stitches a sentence they never said.\n  Supports bucket selection, fixed seeds, morphology fallbacks, and debug\n  overlay.\n- `\u002Fsongify` - Detects per-clip pitch with `aubiopitch` and arranges clips into\n  a melody. Supports bucket selection, single-clip mode, and optional pitch\n  shifting.\n- `\u002Ftranscribe` - Transcribes one file or all missing files in selected buckets\n  through xAI speech-to-text. Extracts `.mp3` first when needed.\n- `\u002Fstats` - Top words and n-grams across all bucket transcripts.\n\n## Architecture Notes\n\n- Routes live under [src\u002Froutes](src\u002Froutes); shared UI lives in [src\u002Flib](src\u002Flib).\n- Bucket discovery and path safety live in\n  [src\u002Flib\u002Fserver\u002Fpaths.ts](src\u002Flib\u002Fserver\u002Fpaths.ts).\n- Pipelines live under\n  [src\u002Flib\u002Fserver\u002Fpipelines](src\u002Flib\u002Fserver\u002Fpipelines) and accept an `onLog`\n  callback for streaming progress.\n- Jobs are tracked in an in-memory `Map` via\n  [src\u002Flib\u002Fserver\u002Fjobs.ts](src\u002Flib\u002Fserver\u002Fjobs.ts). Restarting the server clears\n  job history; finished outputs stay on disk.\n- The UI polls `\u002Fapi\u002Fjobs\u002F[id]` while a job is running and can cancel jobs with\n  `DELETE \u002Fapi\u002Fjobs\u002F[id]`.\n- Media is served through\n  [`\u002Fapi\u002Fmedia\u002F[bucket]\u002F[kind]\u002F[name]`](src\u002Froutes\u002Fapi\u002Fmedia\u002F%5Bbucket%5D\u002F%5Bkind%5D\u002F%5Bname%5D\u002F+server.ts)\n  with `Range` header support so `\u003Cvideo>` can seek without re-downloading.\n- Library file deletion uses\n  [`\u002Fapi\u002Flibrary\u002F[bucket]\u002F[slug]`](src\u002Froutes\u002Fapi\u002Flibrary\u002F%5Bbucket%5D\u002F%5Bslug%5D\u002F+server.ts);\n  rendered clip deletion uses\n  [`\u002Fapi\u002Fclips\u002F[bucket]\u002F[name]`](src\u002Froutes\u002Fapi\u002Fclips\u002F%5Bbucket%5D\u002F%5Bname%5D\u002F+server.ts).\n- Supercut, sentence, and songify renders write into the first selected bucket's\n  `supercuts\u002F` folder. Multi-bucket outputs include `mixed` in the filename.\n\n## Style Notes\n\n- Global design tokens and reusable classes live in [src\u002Fapp.css](src\u002Fapp.css).\n- Palette: `--bg` white, `--ink` near-black, single `--accent: #D0FE03`.\n- [Unbounded](https:\u002F\u002Ffonts.google.com\u002Fspecimen\u002FUnbounded) is the main typeface;\n  [JetBrains Mono](https:\u002F\u002Ffonts.google.com\u002Fspecimen\u002FJetBrains+Mono) is used for\n  logs and code-like text.\n- Sections separate with whitespace or 1px rules. Status indicators use outlined\n  or filled squares, not colored pills.\n- The log panel is the primary inverted surface: black background with accent\n  text.\n","Supercut Studio 是一个本地 SvelteKit 应用程序，用于浏览转录\u002F视频存储桶并生成超级剪辑。该应用支持通过短语或正则表达式匹配来拼接剪辑，合成虚拟句子，将片段歌曲化，并使用 xAI 语音识别技术转录音频。它还提供了对已渲染内容的管理和删除功能。项目采用 TypeScript 编写，需要 Node 22+ 和 ffmpeg 等工具的支持。适用于需要从大量视频中快速提取和编辑特定片段的场景，如教育、娱乐内容创作等。",2,"2026-06-11 04:00:06","CREATED_QUERY"]