Repolode
GhostPeony

GhostPeony/clip-finder

Self-hosted semantic search over YouTube transcripts, letting you find and jump to exact timestamps across channels, playlists, or videos.

Stars
55
Forks
6
Open issues
0
Last commit
4 months ago

What is it?

SearchTube indexes YouTube transcripts from a channel, playlist, or single video, then lets you search by meaning rather than exact keywords. Each result links to the matching timestamp in the video, so you can jump straight to the relevant clip.

It runs in two modes. Local mode needs no login and stores vectors in a local ChromaDB directory, with your own Gemini key supplied in the browser. Supabase mode adds user authentication, Postgres with pgvector, usage quotas, and server-hosted Gemini keys, with optional encrypted storage of per-user keys.

The stack is a React frontend with a FastAPI backend, using Gemini embeddings for retrieval. The project also includes an evaluation script for comparing embedding models and dimensions before changing defaults.

Key features

  • 01Semantic search over YouTube transcripts with timestamped links
  • 02Indexing for channels, playlists, and single videos
  • 03Skips videos that are already indexed
  • 04Local mode with no auth, or Supabase mode with multi-user login
  • 05Bring-your-own-key support in the browser or encrypted server-side storage
  • 06Transcript downloads in SRT format and recent search history

Use cases

  • Finding a specific explanation inside a long lecture series or tutorial channel
  • Searching across a playlist for a topic without watching every video
  • Running a private, self-hosted transcript search for a team or personal archive

Quick start

  1. 1

    Clone the repository

    git clone https://github.com/GhostPeony/SearchTube.git
  2. 2

    Create a Python virtual environment and install backend dependencies

    python -m venv venv venv\Scripts\activate pip install -r requirements.txt
  3. 3

    Install frontend dependencies, then create .env.local with your Gemini API key

    npm install
  4. 4

    Start the backend in one terminal and the frontend in another, then open http://localhost:3001

    python backend/server.py npm run dev

Things to know

  • Local mode needs a Gemini API key for embeddings and search.
  • Setup instructions use Windows-specific venv activation; other platforms need a different activation command.
  • Transcripts are unavailable for videos without captions or with region or age restrictions.

Topics

FAQ

What is clip-finder?
Self-hosted semantic search over YouTube transcripts, letting you find and jump to exact timestamps across channels, playlists, or videos. SearchTube indexes YouTube transcripts from a channel, playlist, or single video, then lets you search by meaning rather than exact keywords. Each result links to the matching timestamp in the video, so you can jump straight to the relevant clip.
Is clip-finder free to use? What license does it have?
clip-finder is open source under the MIT license. Check the license terms before using it in commercial products.
Is clip-finder still maintained?
Updated within 6 months. The last commit to clip-finder was on Jul 2, 2026.
What can I use clip-finder for?
Finding a specific explanation inside a long lecture series or tutorial channel Searching across a playlist for a topic without watching every video Running a private, self-hosted transcript search for a team or personal archive
How do I install clip-finder?
Clone the repository: git clone https://github.com/GhostPeony/SearchTube.git Create a Python virtual environment and install backend dependencies: python -m venv venv venv\Scripts\activate pip install -r requirements.txt Install frontend dependencies, then create .env.local with your Gemini API key: npm install Start the backend in one terminal and the frontend in another, then open http://localhost:3001: python backend/server.py npm run dev
Where can I get clip-finder?
The source code and installation instructions are on GitHub: https://github.com/GhostPeony/clip-finder

Summary generated by AI from the project's README. GitHub stats refresh daily.

Related projects