Dina ”gillade låtar” är i praktiken ditt riktiga Spotify-bibliotek. Men så fort du vill dela det blir det ett projekt. Antingen delar du din profil (rörigt), eller så underhåller du en spellista manuellt som blir inaktuell så fort du ogillar en låt.
Det här problemet med Spotify playlist sync slår först mot musikcuratorer och communitybyggare. Men alla som driver ett litet teamutrymme, en caféspellista eller ens en ”vänner kan följa den här”-lista känner igen det. Du vill ha en länk som alltid stämmer.
Det här n8n-arbetsflödet speglar dina gillade låtar till en anpassad, delbar spellista, inklusive borttagningar. Du får se vad det gör, vad du behöver och hur du kör det utan att behöva passa det.
Så fungerar den här automatiseringen
Hela n8n-arbetsflödet, från trigger till slutresultat:
n8n Workflow Template: Spotify + Gotify: delbar spellista i synk
flowchart LR
subgraph sg0["Start Flow"]
direction LR
n0@{ icon: "mdi:play-circle", form: "rounded", label: "Start", pos: "b", h: 48 }
n1@{ icon: "mdi:play-circle", form: "rounded", label: "Schedule Trigger", pos: "b", h: 48 }
n2@{ icon: "mdi:cog", form: "rounded", label: "Sort first added to first item", pos: "b", h: 48 }
n3["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/gotify.png' width='40' height='40' /></div><br/>Gotify Send deleted n from x"]
n4@{ icon: "mdi:swap-vertical", form: "rounded", label: "Loop delete old", pos: "b", h: 48 }
n5["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/spotify.svg' width='40' height='40' /></div><br/>Spotify delete old"]
n6@{ icon: "mdi:swap-vertical", form: "rounded", label: "Edit set Vars", pos: "b", h: 48 }
n7@{ icon: "mdi:swap-vertical", form: "rounded", label: "Edit success to del", pos: "b", h: 48 }
n8@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Filter Playlist x", pos: "b", h: 48 }
n9["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/compare.svg' width='40' height='40' /></div><br/>Compare Datasets"]
n10@{ icon: "mdi:cog", form: "rounded", label: "count added", pos: "b", h: 48 }
n11@{ icon: "mdi:swap-vertical", form: "rounded", label: "Loop add missing", pos: "b", h: 48 }
n12["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/spotify.svg' width='40' height='40' /></div><br/>Spotify add Missing to x"]
n13@{ icon: "mdi:swap-vertical", form: "rounded", label: "Edit snapshot to added", pos: "b", h: 48 }
n14@{ icon: "mdi:cog", form: "rounded", label: "Cound deleted", pos: "b", h: 48 }
n15@{ icon: "mdi:cog", form: "rounded", label: "Sort", pos: "b", h: 48 }
n16@{ icon: "mdi:swap-vertical", form: "rounded", label: "Set pluri", pos: "b", h: 48 }
n17["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/merge.svg' width='40' height='40' /></div><br/>Merge"]
n18["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/gotify.png' width='40' height='40' /></div><br/>Gotify"]
n19@{ icon: "mdi:swap-vertical", form: "rounded", label: "Edit set intern vars", pos: "b", h: 48 }
n20@{ icon: "mdi:cog", form: "rounded", label: "END", pos: "b", h: 48 }
n21["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/spotify.svg' width='40' height='40' /></div><br/>Spotify get Liked Songs"]
n22["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/spotify.svg' width='40' height='40' /></div><br/>Spotify get all playlists"]
n23["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/spotify.svg' width='40' height='40' /></div><br/>Spotify get Tracks of X"]
n15 --> n9
n17 --> n9
n0 --> n6
n16 --> n23
n16 --> n17
n10 --> n18
n14 --> n3
n6 --> n19
n4 --> n7
n4 --> n5
n9 --> n11
n9 --> n20
n9 --> n4
n11 --> n13
n11 --> n12
n1 --> n6
n8 --> n16
n5 --> n4
n7 --> n14
n19 --> n21
n19 --> n22
n13 --> n10
n21 --> n2
n23 --> n15
n12 --> n11
n22 --> n8
n2 --> n17
end
%% Styling
classDef trigger fill:#e8f5e9,stroke:#388e3c,stroke-width:2px
classDef ai fill:#e3f2fd,stroke:#1976d2,stroke-width:2px
classDef aiModel fill:#e8eaf6,stroke:#3f51b5,stroke-width:2px
classDef decision fill:#fff8e1,stroke:#f9a825,stroke-width:2px
classDef database fill:#fce4ec,stroke:#c2185b,stroke-width:2px
classDef api fill:#fff3e0,stroke:#e65100,stroke-width:2px
classDef code fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px
classDef disabled stroke-dasharray: 5 5,opacity: 0.5
class n0,n1 trigger
class n3,n5,n8,n12,n18,n21,n22,n23 decision
classDef customIcon fill:none,stroke:none
class n3,n5,n9,n12,n17,n18,n21,n22,n23 customIcon
Problemet: delbara spellistor blir snabbt inaktuella
Spotify gör det enkelt att gilla låtar, men inte att dela den listan som en felfri spellistelänk som uppdateras i takt med att du ändrar dig. Så du hamnar i ”spellisteunderhåll” för hand: lägga till nya gillningar, leta upp låtar du ogillat och sedan undra om du missat något. Och det gör du oftast. Den verkliga kostnaden är inte bara några minuters klickande. Det är det ständiga tvivlet, det tappade förtroendet när vänner hör spår du inte längre står för, och tiden du bränner på admin i stället för att njuta av musik.
Det byggs upp snabbt. Här är var det fallerar i verkligheten.
- Du kan bara dela gillade låtar indirekt, så folk kan inte följa en stabil spellistelänk.
- Manuella uppdateringar blir en veckoritual, och du missar ändå borttagningar eftersom Spotify inte visar dem tydligt.
- Om du har en offentlig spellista för kunder eller en community skadar inaktuella låtar stämningen i det tysta.
- Du får ingen enkel sammanfattning av ”vad ändrades?”, vilket gör att du slösar tid på att verifiera resultatet.
Lösningen: spegla gillade låtar automatiskt till en delbar spellista
Det här arbetsflödet körs enligt schema (eller manuellt när du vill) och håller en målspellista i Spotify synkad med dina gillade låtar. Det hämtar dina senaste gillade spår, hämtar det aktuella innehållet i spellistan du vill dela och jämför listorna. Allt du har gillat men som inte finns i spellistan läggs till. Allt du har ogillat tas bort från den delbara spellistan också, så den fortsätter spegla din nuvarande smak. Om du använder Gotify kan den dessutom skicka en snabb notis med hur många låtar som lades till och hur många som togs bort, vilket är precis det som gör att det känns ”klart” i stället för ”funkade det ens?”
Arbetsflödet startar när schematriggaren kör (eller när du startar manuellt). Spotify-data hämtas och sorteras, spårlistorna jämförs och sedan batchar n8n tillägg och borttagningar så att stora bibliotek inte sätter igen processen. Till sist får du valfritt Gotify-notiser som bekräftar ändringarna.
Det du får: automatisering vs. resultat
| Vad det här arbetsflödet automatiserar | Resultat du får |
|---|---|
|
|
Exempel: så ser det ut i praktiken
Säg att du gillar runt 10 nya låtar i veckan och ogillar ytterligare 10 när smaken skiftar. Manuellt skulle du söka, lägga till och ta bort spår ett i taget, plus dubbelkolla spellistan. Det är lätt cirka 30 minuter i veckan, ibland mer om du gör det på mobilen. Med det här arbetsflödet lägger du kanske 5 minuter en gång på att sätta spellistnamnet, och sedan sköter schemakörningen resten i bakgrunden. Gotify kan pinga dig ”Lade till 10, tog bort 10”, och sen går du vidare.
Det här behöver du
- n8n-instans (testa n8n Cloud gratis)
- Alternativ för self-hosting om du föredrar det (Hostinger fungerar bra)
- Spotify för att läsa gillningar och redigera spellistor
- Gotify för att skicka ändringsnotiser (valfritt)
- Inloggningsuppgifter för Spotify Developer App (skapa i Spotify Developer Dashboard)
Kunskapsnivå: Nybörjare. Du kopplar Spotify-uppgifter och klistrar in namnet på din målspellista i en set-variable-nod.
Vill du inte sätta upp detta själv? Prata med en automationsexpert (gratis 15-minuters konsultation).
Så fungerar det
Ett schema (eller manuell körning) drar igång allt. Du kan köra det på en klocktrigger för automatisk synk utan handpåläggning, och ändå behålla en manuell start för test eller snabba engångsuppdateringar.
Spotify-data hämtas från båda håll. Arbetsflödet hämtar dina gillade låtar, slår sedan upp dina spellistor, hittar den du valt och hämtar den spellistans aktuella innehåll.
Listorna jämförs och ändringar batchas. n8n jämför vad som finns i din delbara spellista med vad som är gillat just nu. Saknade spår läggs till, och spår du ogillat tas bort från spellistan i hanterbara chunkar så att Spotify API-anrop inte börjar strula.
Du får ett snyggt avslut (och valfri bekräftelse). Antal tillagda och borttagna sammanfattas, och Gotify kan meddela dig vad som ändrades. Om du inte använder Gotify kan de noderna tas bort och synken fungerar ändå.
Du kan enkelt justera logiken för målspellistan för att synka flera spellistor, eller för att bara lägga till spår (aldrig ta bort) beroende på dina behov. Se hela implementationsguiden nedan för anpassningsalternativ.
Steg-för-steg-guide för implementering
Steg 1: Konfigurera de manuella och schemalagda triggrarna
Konfigurera arbetsflödet så att det kan köras både vid behov och enligt schema, så att ni kan synka spellistor manuellt eller automatiskt.
- Öppna Manual Launch och behåll den som er on-demand-trigger för testning och ad hoc-körningar.
- Öppna Scheduled Clock Trigger och definiera intervallet under Rule för att köra synken enligt schema.
- Bekräfta att båda triggrarna är kopplade till Set Target Playlist som första bearbetningssteg.
Steg 2: Anslut Spotifys datakällor
Hämta gillade låtar och spellistor, och slå sedan upp målspellistan och dess innehåll för jämförelse.
- I Set Target Playlist ställer ni in varplaylistto till exakt namn på målspellistan och ersätter
CHANGE MEEEEEEEEE. - I Initialize Time Marker låter ni timestart vara satt till
{{ $now.toUnixInteger()}}för att mäta körtiden. - Konfigurera Retrieve Liked Tracks med Resource satt till
libraryoch med Return All aktiverat. - Konfigurera Retrieve User Playlists med Resource satt till
playlist, Operation satt tillgetUserPlaylistsoch med Return All aktiverat. - I Filter Target List säkerställer ni att villkoret jämför leftValue
{{ $json.name }}med rightValue{{ $('Set Target Playlist').item.json.varplaylistto }}. - I Store Playlist URI låter ni setpluri vara satt till
{{ $json.uri }}för senare anrop mot spellistan. - Ställ in Fetch Playlist Items att använda id
{{ $json.setpluri }}, Resourceplaylist, OperationgetTracksoch med Return All aktiverat.
Inloggning krävs: Anslut era Spotify-inloggningsuppgifter för Retrieve Liked Tracks, Retrieve User Playlists, Fetch Playlist Items, Append Tracks to Playlist och Delete Tracks from List.
Steg 3: Konfigurera sortering och parallellt intag
Sortera både gillade låtar och spellistans låtar efter datum då de lades till, och kombinera dem sedan för jämförelse.
- I Order Liked By Added låter ni Field Name vara satt till
added_at. - I Order Playlist By Added låter ni Field Name vara satt till
added_at. - Bekräfta att Initialize Time Marker skickar output till både Retrieve Liked Tracks och Retrieve User Playlists parallellt.
- Bekräfta att Store Playlist URI skickar output till både Fetch Playlist Items och Combine Track Feeds parallellt.
- I Combine Track Feeds ställer ni in Mode till
combineoch Combination Mode tillmultiplex.
Steg 4: Jämför låtlistor och lägg till/ta bort i batchar
Identifiera skillnader mellan listan med gillade låtar och målspellistan, och applicera sedan tillägg och borttagningar i batchar.
- I Compare Track Lists låter ni Merge By Fields vara inställt för att jämföra
track.urii båda dataseten. - I Batch Add Missing behåller ni standardinställningarna för batchning och säkerställer att den tar emot output från Compare Track Lists.
- I Append Tracks to Playlist ställer ni in id till
{{ $json.setpluri }}och trackID till{{ $json.track.uri }}. - I Save Add Snapshot låter ni added vara satt till
{{ $json.snapshot_id }}. - I Batch Remove Old behåller ni standardinställningarna för batchning och säkerställer att den tar emot borttagnings-output från Compare Track Lists.
- I Delete Tracks from List ställer ni in id till
{{ $('Store Playlist URI').item.json.setpluri }}, trackID till{{ $json.track.uri }}, Resource tillplaylistoch Operation tilldelete. - I Record Delete Flag låter ni del vara satt till
{{ $json.success }}.
{{ $json.uri }} och att spellistan tillhör den autentiserade Spotify-användaren.Steg 5: Summera resultat och skicka notifieringar
Räkna tillagda och borttagna låtar och notifiera sedan resultatet tillsammans med körtidsinformation.
- I Count Added Tracks låter ni Fields To Summarize vara satt till
added. - I Count Removed Tracks låter ni Fields To Summarize vara satt till
del. - I Notify Add Results låter ni message vara
=### Sync of Liked Songs to {{ $('Set Target Playlist').item.json.varplaylistto }} finished. #### Added {{ $('Count Added Tracks').item.json.count_added }} Songs in {{ (($now.toUnixInteger()-$('Initialize Time Marker').item.json.timestart)/60).toFixed(1) }} Minutes to {{ $('Set Target Playlist').item.json.varplaylistto }}.. - I Notify Removal Results låter ni message vara
=### Sync of Lieblingssongs to {{ $('Set Target Playlist').item.json.varplaylistto }} finished. #### Deleted {{ $json.count_del }} Songs in {{ (($now.toUnixInteger()-$('Initialize Time Marker').item.json.timestart)/60).toFixed(1) }} Minutes from {{ $('Set Target Playlist').item.json.varplaylistto }}..
Inloggning krävs: Anslut era Gotify-inloggningsuppgifter för Notify Add Results och Notify Removal Results.
Steg 6: Testa och aktivera ert arbetsflöde
Kör ett manuellt test, verifiera ändringarna i spellistan och aktivera sedan schemaläggningen.
- Klicka på Execute Workflow på Manual Launch för att köra en full synk.
- Verifiera att Append Tracks to Playlist och Delete Tracks from List slutförs utan fel och att målspellistan uppdateras.
- Kontrollera att Notify Add Results och Notify Removal Results levererar meddelanden med korrekta antal och körtid.
- Aktivera arbetsflödet genom att växla Active så att Scheduled Clock Trigger körs med det intervall ni har ställt in.
Vanliga fallgropar
- Spotify-uppgifter kan gå ut eller sakna rätt scopes för att redigera spellistor. Om synken misslyckas, kontrollera först Spotify-uppgiften i n8n och bekräfta att den har behörighet att ändra spellistor.
- Om du använder Wait-noder eller extern rendering varierar processtider. Öka väntetiden om efterföljande noder fallerar på tomma svar.
- Gotify-notiser triggas inte om app-token eller server-URL är fel. Kontrollera inställningarna i Gotify-noden och testa med ett enkelt meddelande innan du litar på den för ”Lade till/tog bort”-bekräftelser.
Vanliga frågor
Cirka 20 minuter om din Spotify-app och dina inloggningsuppgifter är klara.
Nej. Du kopplar Spotify-uppgifter och ändrar ett värde för ”målspellistans namn” i arbetsflödet.
Ja. n8n har ett gratis self-hosted-alternativ och en gratis testperiod på n8n Cloud. Cloud-planer börjar på 20 USD/månad för högre volymer. Spotifys API-åtkomst är normalt gratis för den här typen av personlig automatisering.
Två alternativ: n8n Cloud (hanterad tjänst, enklast setup) eller self-hosting på en VPS. För self-hosting är Hostinger VPS prisvärd och hanterar n8n bra. Self-hosting ger dig obegränsade körningar men kräver grundläggande serverhantering.
Ja, men då vill du duplicera logiken för ”Set Target Playlist” och köra kedjan ”Retrieve User Playlists” → ”Filter Target List” för varje spellistnamn. Vissa ändrar också flödet så att det bara lägger till spår och aldrig tar bort dem, vilket bara är en justering i jämförelse-/borttagningsgrenen. En annan vanlig anpassning är att filtrera på datum och bara synka gillningar från senaste veckan. Om du behåller Gotify kan du även justera notiserna så att spellistnamnet ingår i meddelandet.
Oftast handlar det om utgångna uppgifter eller saknade scopes för spellistor. Skapa Spotify-uppgifterna på nytt i n8n och se sedan till att varje Spotify-nod använder de uppdaterade uppgifterna. Kontrollera också att spellistnamnet du angivit matchar exakt, eftersom senare noder inte har något att arbeta med om uppslagningen av spellistan misslyckas.
Många, så länge du har batchning aktiverad för tillägg/borttagningar.
Ofta, ja, eftersom det här jobbet kräver jämförelser i flera steg, batchning och en gren för att ”ta bort objekt” som enklare automationer har svårt med. n8n är också enklare att self-hosta, vilket spelar roll om du kör frekventa schemalagda synkar och inte vill räkna tasks. Zapier eller Make kan fortfarande fungera om du håller det extremt grundläggande (endast lägga till, små volymer, ingen listjämförelse), men de flesta slår i komplexitetstaket. Om du vill ha ett felfritt ”spegel inklusive borttagningar”-beteende är n8n ett säkrare val. Prata med en automationsexpert om du är osäker.
Ställ in en gång, och låt din delbara spellista spegla din verkliga smak varje dag. Arbetsflödet sköter underhållet, och du får tryggheten i en länk som fortsätter stämma.
Kontakta oss
Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.