Was ich bastle — Stand Juli 2026
Meine Musik-Daten-Pipeline
12 Jahre Apple Music Playlists, verdichtet zu einem Geschmacksprofil für Claude
Ausgangspunkt
Seit September 2013 lege ich jeden Monat eine Playlist in Apple Music an, inzwischen sind es 154. Jede davon ist ein Monat meines Lebens in Musik. Die Daten dazu lagen lange verstreut: Play Counts aus meiner Spotify-Zeit, Hörhistorie aus der Tidal-Zeit, und Apple Music selbst kennt nur grobe Genres wie „Rock" oder „Pop". Auswerten ließ sich so nichts.
Erste Ausbaustufe: Anreicherung
Eine Python-Pipeline hat die Quellen zusammengeführt:
Apple Music (Export) → Spotify (Play Counts) → Last.fm (Genre-Tags) → Master-CSV
- Ein AppleScript exportiert die Playlists (YYMM-Format) als CSV
- Die Spotify Extended History (GDPR-Export) lieferte echte Play Counts
- Die Last.fm-API ersetzt die generischen Genres: pick_best_genre() macht aus „indie rock, british" ein „Indie Rock"
Diese historische Anreicherung ist abgeschlossen. Spotify und Tidal sind eingearbeitet, seither ist Apple Music die einzige laufende Quelle. Die Master-CSV führt 23 Spalten pro Eintrag, von Play- und Skip-Counts über BPM bis zu den Last.fm-Tags.
Umbau im Juli 2026
Beim Update auf den Stand 30.06.2026 (Playlists 2601–2606) habe ich das Projekt gemeinsam mit Claude aufgeräumt. Dabei kamen ein paar Altlasten ans Licht:
- Ein Bug überschrieb den Apple-Music-Play-Count neuer Tracks mit den alten Spotify-Zahlen
- Ein CSV-Escaping-Fehler ließ pandas 18 statt 17 Spalten erkennen
- Die CSV hat eine Zeile pro Playlist-Mitgliedschaft — „R U Mine?" stand 14-mal drin und verzerrte jede Statistik, bis auf eindeutige Tracks reduziert wurde
Der Merge nimmt seitdem nur neue Tracks auf, ein redundantes Tag-Fetcher-Skript ist raus.
Vom CSV zum Empfehlungs-Bot
Der Zweck der Daten war immer, einen Bot zu füttern, der mir Musik empfiehlt. Die naive Variante, eine CSV mit über 13.000 Zeilen in den Chat zu kippen, taugt dafür nicht. Stattdessen destilliert ein Skript die Datenbank in ein kompaktes taste_profile.md von 10,6 KB: Top-Genres und -Artists nach Plays gewichtet, aktuelle Neuzugänge als Signal für die Richtung, dazu vergessene Favoriten und Skip-Daten für die Kuratierung.
Dieses Profil liegt als Wissensdatei in meinem Claude-Projekt „Viva MTV", zusammen mit passenden Projekt-Anweisungen. Dort frage ich nach neuen Entdeckungen oder lasse mir Kandidaten für die nächste Monats-Playlist vorschlagen. Nach jedem Monatsupdate wird das Profil neu gebaut und ausgetauscht.
Tech Stack
- Python 3 — pandas, requests, rapidfuzz
- AppleScript — Apple Music Playlist Export
- Last.fm API — track.getTopTags, artist.getTopTags
- Claude-Projekt — taste_profile.md + Projekt-Anweisungen
- Spotify GDPR Export — historische Play Counts (abgeschlossen)
Zahlen
Top Genres
| Genre | Tracks |
|---|---|
| Indie Rock | 1.926 |
| Alternative Rock | 833 |
| Punk Rock | 605 |
| Indie Pop | 568 |
| Post-Punk | 561 |
Top Artists (Spotify Plays)
| Artist | Plays |
|---|---|
| The Cure | 5.985 |
| Alligatoah | 4.215 |
| Arctic Monkeys | 2.993 |
| Lorde | 2.890 |
| Die Ärzte | 2.713 |