Pragmatische Technik aus der Praxis

Wie ich mir Spotify Daily Drive zurückgeholt habe – mit einem kleinen Open‑Source‑Hack

Spotify hat Daily Drive am 17. März 2026 beerdigt.
Keine automatisch aktualisierte Mischung aus Nachrichten, Podcasts und Musik mehr.
Einfach weg. [1]

Also: Alternative suchen.
Gefunden: dailydrive von patdeg – ein kleines Node.js‑Tool, das genau das macht, was Spotify uns weggenommen hat:
Deine eigene Daily‑Drive‑Playlist bauen. Voll automatisiert. [1]


Was dailydrive macht

Das Projekt rekreiert im Prinzip das alte „Your Daily Drive“:

  • zieht die neuesten Episoden deiner Lieblings‑Podcasts
  • mischt Musik dazu (Top‑Tracks, Genres, Playlists – frei konfigurierbar)
  • ordnet alles nach einem Muster (z.B. 1 Podcast, 4 Songs, wiederholen)
  • überschreibt eine definierte Spotify‑Playlist mit diesem Mix
  • läuft automatisiert per cron oder systemd auf einem Linux‑Kistchen (Raspberry Pi, Server, altes Notebook – egal) [1]

Oder kurz:
Du stellst einmal alles ein, ab dann baut eine kleine JavaScript‑App jeden Tag deine persönliche „Drive“-Playlist. [1]


Voraussetzungen

Bevor du loslegst, brauchst du:

  • Spotify Premium (Pflicht für Dev‑Apps seit Feb 2026, plus Limit von 5 Usern pro App) [1]
  • einen Spotify Developer Account
  • irgendeine Linux‑Kiste (Raspberry Pi reicht völlig)
  • minimalen Komfort mit Terminal / SSH

Installation – in kurz

  1. Repo klonen
git clone https://github.com/patdeg/dailydrive.git
cd dailydrive
Code-Sprache: PHP (php)
  1. Installer ausführen
chmod +x install.sh
./install.sh

Der Installer:

  • installiert Node.js (falls nötig)
  • zieht die Dependencies
  • legt eine config.yaml an (bzw. Vorlage) [1]

Spotify‑App anlegen

Damit das Tool deine Playlists anfassen darf, braucht es eine eigene Spotify‑App. [1]

  1. Geh ins Spotify Developer Dashboard.
  2. Erstelle eine neue App:
    • Name: z.B. Daily Drive
    • Beschreibung: „Personal Daily Drive playlist tool“
    • Redirect URI: http://127.0.0.1:8888/callback (wichtig: 127.0.0.1, nicht localhost) [1]
    • Häkchen bei Web API und Web Playback SDK
  3. Unter Settings → User Management:
    • deine Spotify‑Mail hinzufügen (sonst 403‑Fehler beim Schreiben der Playlist) [1]
  4. Client ID und Client Secret merken.

Playlist vorbereiten

  1. In Spotify eine neue leere Playlist anlegen, z.B. „My Daily Drive“.
  2. Rechtsklick → Teilen → Link zur Playlist kopieren.
  3. Aus dem Link den Playlist‑ID‑Teil rausziehen – das, was nach /playlist/ kommt. [1]

config.yaml bearbeiten

Das ist das Herzstück. Hier legst du fest:

  • welche Playlist gefüllt wird
  • welche Podcasts du hören willst
  • woher die Musik kommt
  • in welchem Muster alles gemischt wird [1]

Du startest mit der Vorlage:

cp config.example.yaml config.yaml
nano config.yaml
Code-Sprache: CSS (css)

Wichtige Punkte:

  • Spotify‑App‑Daten eintragen:
    • Client ID
    • Client Secret
  • Playlist ID eintragen
  • Podcasts definieren (IDs, Anzahl Episoden, optional position: first für News am Anfang) [1]
  • Music‑Sources konfigurieren:
    • Top‑Tracks
    • Genres
    • Playlists

Beispiel für Top‑Tracks:

music:
  top_tracks:
    enabled: true
    time_range: "short_term"  # ~4 Wochen
    count: 30
Code-Sprache: PHP (php)

Beispiel für Genre‑Discovery:

music:
  genres:
    - dance pop
    - pop rock
    - electropop

Wenn du Top‑Tracks und Genres gleichzeitig verwendest, splittet das Script automatisch 50/50:
Halb Komfortzone, halb Entdeckung. [1]


Podcast‑IDs und Playlist‑IDs finden

  • Podcast:
    • Show in Spotify öffnen
    • … → Teilen → Link zur Show kopieren
    • Der Teil nach /show/ ist die ID [1]
  • Playlist:
    • … → Teilen → Link zur Playlist kopieren
    • Der Teil nach /playlist/ ist die ID [1]

Mix‑Pattern: Wie der Flow klingt

Das Muster stellt P für „Podcast Episode“ und M für „Song“ dar. [1]

Beispiele:

  • PMMM → 1 Podcast, 3 Songs, wiederholen
  • PMMMM → 1 Podcast, 4 Songs, wiederholen
  • PMMPMMM → 1 Podcast, 2 Songs, dann 1 Podcast, 3 Songs, wiederholen
  • PM → abwechselnd Podcast / Song
  • MMMPMMMM → 3 Songs, 1 Podcast, 4 Songs, wiederholen

Zusätzlich kannst du Podcasts mit position: first vorne anpinnen, z.B. News‑Shorts:

podcasts:
  - name: "NPR News Now"
    id: "6BRSvIBNQnB68GuoXJRCnQ"
    episodes: 1
    position: first
Code-Sprache: JavaScript (javascript)

Die laufen dann immer zuerst, danach greift das Pattern. [1]


Einmalige Authentifizierung

npm run setup
  • Script startet einen kleinen Webserver auf 127.0.0.1:8888
  • Browser geht auf, du loggst dich bei Spotify ein
  • Token wird lokal in .spotify-token.json gespeichert [1]

Kein Monitor / Headless‑Server?
SSH‑Trick:

ssh -L 8888:127.0.0.1:8888 user@dein-server
npm run setup
Code-Sprache: CSS (css)

Dann die URL im lokalen Browser öffnen, der Port wird getunnelt. [1]


Erster Lauf: Playlist bauen

npm start

Danach in Spotify deine Ziel‑Playlist öffnen:
Da sollte jetzt dein neuer Daily‑Mix drin liegen – Podcasts und Songs im definierten Pattern. [1]

Wenn du nur testen willst:

npm test

Das zeigt dir, welche Inhalte ins Playlist‑Update gehen würden, ohne tatsächlich die Playlist zu überschreiben. [1]


Automatisieren: damit du nie wieder dran denken musst

Variante A: Cronjob

crontab -e

Eintrag für 4:00 und 16:00 Uhr:

0 4,16 * * * cd /home/$USER/dailydrive && /usr/bin/node index.js >> /tmp/dailydrive.log 2>&1
Code-Sprache: JavaScript (javascript)

Variante B: systemd Timer (robuster, schöner) [1]

sudo cp systemd/dailydrive.service /etc/systemd/system/[email protected]
sudo cp systemd/dailydrive.timer   /etc/systemd/system/[email protected]
sudo systemctl daemon-reload

sudo systemctl enable dailydrive@YOUR_USERNAME.timer
sudo systemctl start  dailydrive@YOUR_USERNAME.timer

Zeitplan anpassen:

sudo systemctl edit dailydrive@YOUR_USERNAME.timer
Code-Sprache: CSS (css)

Standard: 4:00 und 16:00 Uhr. [1]


Nice Extra: Taste‑Profile per KI

dailydrive kann deine Genres automatisch aus deinen Top‑Tracks ableiten.
Dafür nutzt es ein LLM über Demeterics. [1]

  • Demeterics‑Key holen
  • in .env eintragen:
DEMETERICS_API_KEY=dmt_dein_key_oder_dmt_key;sk-dein-openai-key

Dann:

npm run taste

Das Skript analysiert deine Top‑Tracks und baut passende Genre‑Tags für deine config.yaml. [1]


Stabilität & Technik‑Nerdkram

Unter der Haube passiert:

  • Zugriff auf die Spotify Web API über spotify-web-api-node
  • OAuth 2.0 Authorization Code Flow
  • Tokens werden automatisch aktualisiert und lokal gespeichert
  • Podcast‑Episoden: GET /v1/shows/{id}/episodes
  • Musik:
    • GET /v1/me/top/tracks
    • GET /v1/search für Genres
    • GET /v1/playlists/{id}/tracks
  • Playlist‑Update über PUT /v1/playlists/{id}/items (neuer Endpunkt seit den API‑Änderungen 2026) [1]

Damit das Ding dir nicht während des Hörens ständig die Playlist umsortiert, gibt es ein State‑Caching in state.json.
Wenn sich keine neuen Podcast‑Episoden ergeben, wird das Update einfach übersprungen. [1]


Typische Fehler & schnelle Fixes

  • „Not authenticated!“
    npm run setup noch mal ausführen. [1]
  • config.yaml not found
    cp config.example.yaml config.yaml und bearbeiten. [1]
  • Token abgelaufen
    → ebenfalls npm run setup. [1]
  • 403 Forbidden beim Playlist‑Update
    → deine eigene Mail im Spotify‑Dev‑Dashboard unter „User Management“ eintragen. [1]
  • Playlist bleibt leer
    npm test checken: liefern die Podcasts / Playlists überhaupt Inhalte? IDs prüfen. [1]

Was besser ist als das alte Spotify Daily Drive

Spotify hat dir früher „irgendwas“ gemischt.
Jetzt bestimmst du:

  • welche Podcasts drin sind (und wie viele Episoden)
  • wo sie im Mix landen (News zuerst, Long‑Form später)
  • welche Musikquellen genutzt werden
  • wie das Pattern aussieht
  • wann die Playlist aktualisiert wird [1]

Du bist nicht mehr von einem Launenschalter im Spotify‑Backend abhängig.
Wenn Spotify wieder eine Funktion killt – egal. Du baust dir die halt selber.


Fazit

Wenn du Daily Drive vermisst und keine Lust hast, jeden Tag manuell News‑Podcasts und Musik zusammenzuklicken:

  • dailydrive ist leichtgewichtig
  • schnell eingerichtet
  • komplett unter deiner Kontrolle
  • und läuft auf praktisch jeder Linux‑Kiste im Hintergrund [1]

Du hast dir das Ding installiert, es „läuft genial“ – exakt dafür ist das Projekt gebaut.
Einmal sauber konfigurieren, dann einfach ins Auto steigen, Play drücken und die Maschine machen lassen.

So muss das.

Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre, wie deine Kommentardaten verarbeitet werden.