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
cronodersystemdauf 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
- Repo klonen
git clone https://github.com/patdeg/dailydrive.git
cd dailydrive
- Installer ausführen
chmod +x install.sh
./install.sh
Der Installer:
-
installiert Node.js (falls nötig)
-
zieht die Dependencies
-
legt eine
config.yamlan (bzw. Vorlage) [1] -
- *
Spotify‑App anlegen
Damit das Tool deine Playlists anfassen darf, braucht es eine eigene Spotify‑App. [1]
-
Geh ins Spotify Developer Dashboard.
-
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, nichtlocalhost) [1] -
Häkchen bei Web API und Web Playback SDK
-
-
Unter Settings → User Management:
- deine Spotify‑Mail hinzufügen (sonst 403‑Fehler beim Schreiben der Playlist) [1]
-
Client ID und Client Secret merken.
Playlist vorbereiten
-
In Spotify eine neue leere Playlist anlegen, z.B. „My Daily Drive“.
-
Rechtsklick → Teilen → Link zur Playlist kopieren.
-
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
Wichtige Punkte:
-
Spotify‑App‑Daten eintragen:
-
Client ID
-
Client Secret
-
-
Playlist ID eintragen
-
Podcasts definieren (IDs, Anzahl Episoden, optional
position: firstfü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
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
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.jsongespeichert [1]
Kein Monitor / Headless‑Server?
SSH‑Trick:
ssh -L 8888:127.0.0.1:8888 user@dein-server
npm run setup
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
Variante B: systemd Timer (robuster, schöner) [1]
sudo cp systemd/dailydrive.service /etc/systemd/system/dailydrive@.service
sudo cp systemd/dailydrive.timer /etc/systemd/system/dailydrive@.timer
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
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
.enveintragen:
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/searchfü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 setupnoch mal ausführen. [1] -
config.yaml not found
→cp config.example.yaml config.yamlund bearbeiten. [1] -
Token abgelaufen
→ ebenfallsnpm run setup. [1] -
403 Forbidden beim Playlist‑Update
→ deine eigene Mail im Spotify‑Dev‑Dashboard unter „User Management“ eintragen. [1] -
Playlist bleibt leer
→npm testchecken: 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:
-
dailydriveist 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.