snipcat

module
v0.3.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 5, 2026 License: MIT

README

snipcat

A terminal YouTube downloader that removes sponsor segments.

Paste a link, see exactly which sponsor/intro/self-promo segments exist, toggle what you want gone, and download a clean cut, all from your terminal.

 _____       _        _____       _   
/  ___|     (_)      /  __ \     | |  
\ `--. _ __  _ _ __  | /  \/ __ _| |_ 
 `--. \ '_ \| | '_ \ | |    / _` | __|
/\__/ / | | | | |_) || \__/\ (_| | |_ 
\____/|_| |_|_| .__/  \____/\__,_|\__|
              | |                     
              |_|                     

Requirements


Install

Go

go install github.com/Degen7/snipcat/cmd/snipcat@latest

From source

git clone https://github.com/Degen7/snipcat
cd snipcat
go build -o snipcat ./cmd/snipcat

Install dependencies

macOS

brew install yt-dlp ffmpeg

Ubuntu / Debian

sudo apt install yt-dlp ffmpeg

Arch

sudo pacman -S yt-dlp ffmpeg

Windows

winget install yt-dlp.yt-dlp Gyan.FFmpeg

Usage

snipcat
  1. Paste a YouTube URL or bare video ID and press enter
  2. snipcat fetches video info and SponsorBlock segment data in parallel
  3. The preview screen shows every sponsor/intro/self-promo segment and how much total time they add up to. Toggle any segment on or off with space
  4. Adjust mode, quality, and destination at the bottom of the preview screen
  5. Press d to download
  6. The file lands in your destination folder
Background downloads

While a download is in progress, press n to send it to the background and return to the input prompt. Queue up more videos; snipcat runs them concurrently (default: 4 simultaneous downloads, configurable).

A live progress grid appears at the bottom of the screen showing every background download with its title, percentage, and status. Completed jobs show a green checkmark and auto-dismiss after a few seconds.

Playlists

Paste any YouTube link that contains a list= parameter — either a /playlist?list=… URL or a /watch?v=…&list=… URL — and snipcat detects it as a playlist.

The playlist settings screen shows the playlist title, total video count, and the seven SponsorBlock categories as checkboxes. These categories apply to every video in the playlist. Toggle them, set your mode/quality/destination, then press enter to queue the entire batch.

Every video becomes a background job. The first max_workers start immediately; the rest wait in the grid and auto-promote as slots free up. You are returned to the input prompt right away so you can queue another playlist or single video while the grid works in the background.


Keyboard shortcuts

Key Action
enter Start fetch / confirm
d Start download
n Send to background (during download) / download another (after done)
o Open destination folder (after done)
c Open config screen (from input)
space Toggle segment on/off
↑ / ↓ Move cursor
← / → Cycle option value
esc Go back / cancel
q / ctrl+c Quit (with confirmation if downloads are active)
y / n Confirm / cancel quit

Options

Each video lets you set three options from the preview screen:

Option Values Default
Mode video, audio video
Quality best, 1080p, 720p, 480p, smallest best
Quality (audio) best, 128k best
Destination any path ~/Downloads

SponsorBlock categories

snipcat shows segments from every SponsorBlock category. The defaults for which are toggled on per video:

Category Default
Sponsor ✓ on
Self-Promo ✓ on
Interaction reminder ✓ on
Intro off
Outro off
Preview off
Music (off-topic) off

Toggle any category per video on the preview screen. Change the defaults permanently in the config file.


Configuration

snipcat writes a config file on first run:

  • macOS: ~/Library/Application Support/snipcat/config.toml
  • Linux: ~/.config/snipcat/config.toml
  • Windows: %AppData%\snipcat\config.toml

Press c from the main screen to edit it in-app, or open the file directly:

[defaults]
mode = "video"            # "video" | "audio"
quality = "best"          # best | 1080p | 720p | 480p | smallest
destination = "~/Downloads"
audio_format = "mp3"      # output format for audio-only mode
max_workers = 4           # concurrent background downloads (1–CPU count)

[sponsorblock]
# which categories are toggled ON by default for each new video
sponsor = true
selfpromo = true
interaction = true
intro = false
outro = false
preview = false
music_offtopic = false

[ui]
theme = "cozy"
mascot = true             # set false to hide the cat

A note on cut accuracy

Sponsor removal delegates to yt-dlp + ffmpeg and cuts at keyframe boundaries, which is fast but can leave a small seam at cut points. This is normal and expected.


Privacy

SponsorBlock segments are fetched using the hash-prefix privacy endpoint. Only the first 4 hex characters of a SHA-256 hash of your video ID are sent to the server, so SponsorBlock never learns exactly which video you queried.

Directories

Path Synopsis
cmd
diag command
snipcat command
internal
ui

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL