Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ClipSift app icon

ClipSift

Find the line. Keep the moment. Cut faster.

A local-first workspace for searchable YouTube transcripts, timestamped moments, and script-to-clip maps.

Live site MIT License Buy me a coffee

React 19 TypeScript 5.9 Node 20.19+

ClipSift player, searchable transcript, and moments workspace

What ClipSift does

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

Highlights

  • 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 through rclone.
  • Export the edit plan as CSV, JSON, Markdown, plain text, or Premiere marker CSV.

Quick start

Prerequisites

  • Node.js 20.19 or newer
  • MySQL 8 or MariaDB 10.6+
  • Optional: yt-dlp and FFmpeg for MP4 rendering
  • Optional: rclone for remote delivery

Install

git clone https://github.com/ArtMoreno/clipsift-web.git
cd clipsift-web
npm ci

Create 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 dev

ClipSift 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.

Configuration

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

Useful commands

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

Architecture

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.

Deployment

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 start serves 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.

Contributing

Focused bug reports and pull requests are welcome. Read CONTRIBUTING.md before opening a change.

Support

ClipSift is open source and maintained by Art Moreno. If it saves you time, you can buy Art a coffee.

License

MIT © 2026 Art Moreno

About

Search YouTube transcripts, save timestamped moments, and turn scripts into clip maps.

Topics

Resources

Contributing

Security policy

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages