Search YouTube, stream instantly, download MP3s, play playlists, and resolve Spotify links — all without ever leaving your terminal.
I got tired of switching apps just to listen to music. Every time I wanted a song — open a browser, sign in, deal with ads, watch autoplaying videos, get distracted by recommendations. The whole ritual was exhausting.
I live in the terminal. So I built Seeky — a music player that lives there too. Search YouTube by name. Pick a track. Stream it instantly with zero browser overhead. Download it as MP3. Blast a whole playlist. Even paste in a Spotify link and it figures out the rest.
The best part? Smart prefetching. The moment you pick a song from search results, Seeky starts resolving the stream URL in the background. By the time you hit play, it's already ready. Instant. No lag. No wait. Just music.
And there's a terminal visualizer built on a real Cooley-Tukey FFT — not a fake animation. Actual frequency analysis of the audio, rendered in Unicode block characters at 50fps. Because if you're going to nerd out, do it properly.
Search via YouTube Data API v3. Results show title, channel, duration, and view count in a clean table.
Stream URLs are extracted in the background the moment you browse results. Hit play and it's instant — no waiting.
Direct CDN URL handed to mpv. No browser, no window, no overhead. Pure audio, right in your terminal.
yt-dlp extracts best audio and converts to MP3. Saved neatly to ~/Music/MusiCLI automatically.
Paste a YouTube playlist URL and download every track as MP3 in one command. Progress shown per track.
Paste any Spotify song or playlist link. Seeky resolves it to YouTube automatically via play-dl, then streams or downloads.
Real-time FFT analysis using Cooley-Tukey. Logarithmic frequency bands, Hann windowing, 50fps. Unicode block chars for sub-character precision.
If cava is installed, Seeky uses it for perfectly synced visualization directly from PipeWire/PulseAudio audio output.
Get the source code on your machine.
mpv handles audio playback. It's the only system dependency.
Requires Node.js 18+. Installs yt-dlp-exec, play-dl, chalk, inquirer, ora and more.
Edit src/config.js and add your YouTube Data API v3 key for search to work.
Launch the interactive CLI and start listening.
CD quality is 44100 Hz — overkill for visualization. 8000 Hz gives enough frequency resolution for the FFT window while keeping CPU usage minimal. Your ears won't know the difference on a bar chart.
Without it, sharp edges at the start/end of each analysis window create phantom frequencies that don't exist in the audio. The Hann function tapers each frame smoothly to zero, eliminating spectral leakage and keeping the visualizer clean.
Human hearing is logarithmic — one octave sounds the same whether it's 100→200 Hz or 1000→2000 Hz. Linear spacing would crush all the interesting bass into a few bars. Log spacing mirrors how you actually perceive sound.
mpv handles actual playback with full quality and buffering. FFmpeg re-decodes the same URL independently at lower quality just for analysis. They run in parallel — the visualizer is a few hundred milliseconds behind at most, imperceptible to human perception.