Find the line. Keep the moment. Cut faster.
A local-first workspace for searchable YouTube transcripts, timestamped moments, and script-to-clip maps.
ClipSift puts the video, transcript, search results, saved moments, and clip queue in one screen. Paste a YouTube URL to work inside a single video, or add a finished script and build a source-by-source clip map around its beats.
| Workspace | Best for | What you get |
|---|---|---|
| Single video | Interviews, press conferences, podcasts, game film | Searchable transcript, precise jumps, saved in/out ranges, notes, and exports |
| Script / project | Essays, profiles, documentaries, social cuts | Ordered beats, source discovery, ranked candidates, review states, and a render queue |
- Search the spoken word with multi-term and quoted-phrase matching.
- Jump straight to context from any timestamped transcript result.
- Save moments with editable in/out points, labels, notes, and status.
- Import captions from SRT, VTT, or plain text when a video has no transcript.
- Turn scripts into clip maps with ordered beats and ranked source candidates.
- Render locally through
yt-dlp, with optional Drive delivery throughrclone. - Export the edit plan as CSV, JSON, Markdown, plain text, or Premiere marker CSV.
- Node.js 20.19 or newer
- MySQL 8 or MariaDB 10.6+
- Optional:
yt-dlpand FFmpeg for MP4 rendering - Optional:
rclonefor remote delivery
git clone https://github.com/ArtMoreno/clipsift-web.git
cd clipsift-web
npm ciCreate a database:
CREATE DATABASE clipsift CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;Copy the environment template, then replace the example database credentials:
cp .env.example .env
npm run db:push
npm run devClipSift opens at http://localhost:3000.
Important
ClipSift currently has no end-user authentication. Keep the working app on localhost or a trusted private network unless you add an authentication and authorization layer. The public GitHub Pages URL is a static project site, not a hosted copy of the personal workspace.
| Variable | Required | Purpose |
|---|---|---|
DATABASE_URL |
Yes | MySQL-compatible connection string |
APP_ID |
Yes | Application identifier |
APP_SECRET |
Production | Server secret |
YTDLP_PATH |
No | yt-dlp command or absolute executable path |
RCLONE_PATH |
No | rclone command or absolute executable path |
CLIPS_DIR |
No | Local render destination; defaults to ./clips |
DRIVE_REMOTE |
No | Configured rclone remote; defaults to gdrive: |
DRIVE_FOLDER |
No | Folder beneath the remote; defaults to ClipSift |
CLIPSIFT_CONTROL_TOKEN |
Recommended | Protects the local control API |
CLIPSIFT_YOUTUBE_API_KEY |
No | Uses YouTube Data API search instead of keyless search |
CLIPSIFT_NOTIFY_CMD |
No | Command that receives completed-batch summaries on stdin |
| Command | Description |
|---|---|
npm run dev |
Start Vite and the Hono API on port 3000 |
npm run build |
Build the browser app and bundled Node server |
npm run start |
Serve the production build |
npm run check |
Run the TypeScript project check |
npm run lint |
Run ESLint |
npm test |
Run the Vitest suite; integration tests need the configured database |
npm run db:push |
Apply the Drizzle schema to the database |
src/ React interface
components/ Player, transcript, moments, clip queue, UI primitives
pages/ Application screens
server/ Hono + tRPC application server
script/ Script analysis, discovery, ranking, and providers
transcript/ YouTube and imported transcript providers
clip/ Local render queue
api/ Vercel-compatible serverless entry
db/ Drizzle schema and relations
contracts/ Shared errors and types
docs/ Public GitHub Pages site
The browser talks to the Hono API through tRPC. Drizzle stores the library,
transcripts, scripts, decisions, and render jobs in MySQL/MariaDB. Generated
clips remain in CLIPS_DIR unless remote delivery is enabled.
The repository includes two distinct deployment targets:
- Project site: the static files in
docs/deploy to GitHub Pages. - Working app:
npm run build && npm run startserves the client and API together on a Node host with access to MySQL.
The working app depends on a database and local tooling, so it cannot run as a functional app on GitHub Pages. Add authentication before exposing it to the public internet.
Focused bug reports and pull requests are welcome. Read CONTRIBUTING.md before opening a change.
ClipSift is open source and maintained by Art Moreno. If it saves you time, you can buy Art a coffee.
MIT © 2026 Art Moreno
