# Spectra โ€” A YouTube Suggest Engine > Better YouTube recommendations: zero repeats, steerable topics & creators, recency-biased suggestions, and a preserved watch list. ![Spectra UI](public/icon.svg) ## ๐Ÿ’ก Elevator Pitch YouTube does a terrible job of suggesting videos based on what it knows about you. Spectra creates a balanced series of suggested videos with **no repeats** over topics and creators you actually care about. Timing-wise, suggestions tend toward newer releases. You can click to add items to a **preserved Watch List** that persists across suggestion regenerations, and steer the algorithm with **Thumbs Up**, **Thumbs Down**, or **Big Nope** exclusions. --- ## โšก Core Features - **Strict Zero-Repeat Guarantee**: Spectra tracks every suggested video ID in persistent SQLite storage (`seen_videos`). Once a video has been suggested in any batch, it will never repeat unless you explicitly choose to reset seen history. - **Steerable Algorithm**: - **๐Ÿ‘ Thumbs Up**: Increases affinity weight for the creator (+affinity) and topic. - **๐Ÿ‘Ž Thumbs Down**: Reduces affinity weight for the creator and topic. - **๐Ÿšซ Big Nope**: Instantly removes video, blocks the creator/channel permanently, and excludes them from all future queries. (Includes 5-second undo toast). - **Timing Tendency (Recency Bias)**: - Exponential decay multiplier prioritizing newer videos: - โšก **Ultra Fresh**: Past 48 hours - ๐Ÿ“… **Recent**: Past 30 days (default) - ๐ŸŒ **Broad**: All-time high-affinity catalog - **Preserved Watch List**: - One-click "Watch Later" saves videos into a persistent list that remains completely preserved even when suggestion batches are regenerated. - Track watched vs unwatched status, launch embedded player or open directly in YouTube. - **Series of Topics & People**: - Curated starter streams matching maker passions: Vintage Screenprint & Apparel, Specialty Espresso, ESP32 & E-Ink telemetry, Self-Hosted Homelabs, Alpine Skiing, Lateral Thinking, Vinyl Audio, and Maker Fast Builds. - Add custom topics or YouTube creator handles on the fly. - **Embedded Theater Player**: - Clean preview player using privacy-enhanced `youtube-nocookie.com`. - Full feedback steering controls inside the player modal. --- ## ๐Ÿ—๏ธ Architecture & Tech Stack - **Runtime**: Node.js 22 LTS (Alpine) - **Database**: Native `node:sqlite` (zero npm C++ compilation overhead, blazing fast synchronous queries) - **YouTube Retrieval**: Live YouTube search scraper (`ytInitialData`), YouTube Channel RSS feeds (`/feeds/videos.xml?channel_id=...`), and offline seed catalog fallback - **Frontend**: Pure modern ES modules, CSS Grid, Glassmorphism, and responsive design (no heavy client bundlers needed) - **Deployment**: Docker Compose on `vloser` homelab, Traefik reverse proxy, Homepage dashboard integration --- ## ๐Ÿงช Automated Verification Suite Run the unit and integration test suite: ```bash npm test ``` Verifies: 1. Healthcheck endpoint and database readiness 2. Starter topics and creators initialization 3. Zero repeats across successive suggestion generation batches 4. Watch list persistence across batch regenerations 5. Algorithm steering: Thumbs Up / Thumbs Down topic weight updates 6. Big Nope permanent channel and video blacklisting 7. Seen history reset and telemetry reporting --- ## ๐Ÿš€ Homelab Deployment (vloser.us) ### 1. Repository Hosted on Gitea: `https://gitea.vloser.us/chrisf/spectra` ### 2. Traefik Dynamic Routing Configured in `/home/chrisf/docker/appdata/traefik3/rules/app-spectra-a-youtube-suggest-engine.yml`: - Public URL: `https://spectra-a-youtube-suggest-engine.vloser.us` - API Passthrough: `chain-no-auth` - Web UI: `chain-oauth` (Authentik SSO) ### 3. Homepage Entry Configured in `/home/chrisf/docker/appdata/homepage/services.yaml` under Media & Discovery with custom SVG icon `/icons/spectra.svg`.