Task: Add liked songs to a Spotify monthly playlist

n8n workflow JSON:
{"meta":{"instanceId":"0c99324b4b0921a9febd4737c606882881f3ca11d9b1d7e22b0dad4784eb24c7"},"nodes":[{"id":"f418ae01-01ea-4794-8903-d5709a29c735","name":"Get current date","type":"n8n-nodes-base.code","position":[240,2460],"parameters":{"jsCode":"const monthNames = [\n  'January',\n  'February',\n  'March',\n  'April',\n  'May',\n  'June',\n  'July',\n  'August',\n  'September',\n  'October',\n  'November',\n  'December',\n]\n\nconst date = new Date()\nconst year = date.getFullYear()\nconst month = date.getMonth()\n\nlet currentDate = {\n  month: month,\n  year: year,\n  text: `${monthNames[month]} '${year.toString().slice(-2)}`\n}\n\nitems[0].json.currentDate = currentDate\n\nreturn items\n\n// Month > Number e.g. July = 6, December = 11\n// Year > Text\n// Text > Playlist name\n\n// let currentDate = {\n//   month: 8, \n//   year: '2024',\n//   text: `September '23`\n// }\n\n// items[0].json.currentDate = currentDate\n\n// return items\n\n"},"typeVersion":1},{"id":"855e493a-a232-45ef-8fdd-4a8225065c95","name":"Sticky Note3","type":"n8n-nodes-base.stickyNote","position":[460,2580],"parameters":{"width":1290.936043660723,"height":407.6508589002549,"content":"## Check if the song is present in the database"},"typeVersion":1},{"id":"672ef06c-b812-41c8-8501-cde8b61a4aef","name":"Get last 10 liked tracks","type":"n8n-nodes-base.spotify","position":[500,2680],"parameters":{"limit":10,"resource":"library"},"credentials":{"spotifyOAuth2Api":{"id":"zQrMRwwU6DLh4W77","name":"Spotify account"}},"typeVersion":1},{"id":"da13c571-6af4-49bf-b8ff-2d54245f6d3e","name":"Check if track is saved","type":"n8n-nodes-base.nocoDb","position":[940,2780],"parameters":{"table":"m0dm2y304t7vmuk","options":{"where":"=(uri,eq,{{ $json.track.uri }})","fields":["uri"]},"operation":"getAll","projectId":"pepq760y5lwt5tm","returnAll":true,"authentication":"nocoDbApiToken"},"credentials":{"nocoDbApiToken":{"id":"9uSbSrDz8EL2OIL7","name":"NocoDB Token account"}},"typeVersion":3,"alwaysOutputData":true},{"id":"9144cda9-f18f-46d9-be2d-9fca4b192dbb","name":"Is not saved","type":"n8n-nodes-base.if","position":[1160,2780],"parameters":{"options":{},"conditions":{"options":{"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"dbb259d9-e2ec-4a7b-b375-601346dc2571","operator":{"type":"object","operation":"empty","singleValue":true},"leftValue":"={{ $json }}","rightValue":""}]}},"typeVersion":2},{"id":"66b430e2-f46c-43b2-84e7-35c85d2b4403","name":"Create song entry","type":"n8n-nodes-base.nocoDb","position":[1380,2700],"parameters":{"table":"m0dm2y304t7vmuk","fieldsUi":{"fieldValues":[{"fieldName":"uri","fieldValue":"={{ $('For each tracks in liked song').item.json.track.uri }}"},{"fieldName":"added_at","fieldValue":"={{ $('For each tracks in liked song').item.json.added_at }}"},{"fieldName":"playlistName","fieldValue":"={{ $('Get current date').item.json.currentDate.text }}"}]},"operation":"create","projectId":"pepq760y5lwt5tm","authentication":"nocoDbApiToken"},"credentials":{"nocoDbApiToken":{"id":"9uSbSrDz8EL2OIL7","name":"NocoDB Token account"}},"typeVersion":3},{"id":"9bd883ea-2e87-45aa-b8a0-b361ba7c5d9f","name":"Get all user playlist","type":"n8n-nodes-base.spotify","position":[500,2220],"parameters":{"resource":"playlist","operation":"getUserPlaylists","returnAll":true},"credentials":{"spotifyOAuth2Api":{"id":"zQrMRwwU6DLh4W77","name":"Spotify account"}},"typeVersion":1},{"id":"3a0dad98-4571-4fb7-b366-0060d35b65fe","name":"Sticky Note4","type":"n8n-nodes-base.stickyNote","position":[460,2080],"parameters":{"width":1481.5336029736159,"height":416.7665808180022,"content":"## Check if the playlist present in the database"},"typeVersion":1},{"id":"e793b97c-cc29-47b0-8aa7-015fa631bc37","name":"Get monthly playlist","type":"n8n-nodes-base.filter","position":[720,2220],"parameters":{"options":{},"conditions":{"options":{"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"56173299-d774-4cb4-b26f-4dca294dda1d","operator":{"name":"filter.operator.equals","type":"string","operation":"equals"},"leftValue":"={{ $json.name }}","rightValue":"={{ $('Get current date').item.json.currentDate.text }}"}]}},"typeVersion":2,"alwaysOutputData":true},{"id":"502ea9e2-7f03-4a8a-860e-90d63e42ee33","name":"Get playlist in DB","type":"n8n-nodes-base.nocoDb","position":[1160,2120],"parameters":{"table":"mchan0xys9h7h7e","options":{"where":"=(name,eq,{{ $('Get current date').item.json.currentDate.text }})"},"operation":"getAll","projectId":"pepq760y5lwt5tm","returnAll":true,"authentication":"nocoDbApiToken"},"credentials":{"nocoDbApiToken":{"id":"9uSbSrDz8EL2OIL7","name":"NocoDB Token account"}},"typeVersion":3,"alwaysOutputData":true},{"id":"3d2bece0-8096-4ee1-a3b9-ae91b83f0957","name":"Monthly playlist exist in Spotify ?","type":"n8n-nodes-base.if","position":[940,2220],"parameters":{"options":{},"conditions":{"options":{"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"a2d9e3e0-a906-4ed9-9e23-166f781c86b1","operator":{"type":"object","operation":"notEmpty","singleValue":true},"leftValue":"={{ $json }}","rightValue":""}]}},"typeVersion":2},{"id":"d983b940-2f8d-4823-aaaf-d1bfa4428b41","name":"Playlist exist  in DB ?","type":"n8n-nodes-base.if","position":[1380,2120],"parameters":{"options":{},"conditions":{"options":{"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"9485c9d4-ecdc-4d0e-a576-c7db5787c069","operator":{"type":"object","operation":"notEmpty","singleValue":true},"leftValue":"={{ $json }}","rightValue":""}]}},"typeVersion":2},{"id":"c694ab19-bca7-4dd4-8d10-cf8a1adab341","name":"Create playlist in Spotify","type":"n8n-nodes-base.spotify","position":[1160,2320],"parameters":{"name":"={{ $('Get current date').item.json.currentDate.text }}","resource":"playlist","operation":"create","additionalFields":{"description":"Monthly playlist"}},"credentials":{"spotifyOAuth2Api":{"id":"zQrMRwwU6DLh4W77","name":"Spotify account"}},"typeVersion":1},{"id":"dc9dc3b5-cef7-412b-b3f8-5ec011c2746d","name":"Create playlist in DB1","type":"n8n-nodes-base.nocoDb","position":[1380,2320],"parameters":{"table":"mchan0xys9h7h7e","fieldsUi":{"fieldValues":[{"fieldName":"uri","fieldValue":"={{ $json.uri }}"},{"fieldName":"name","fieldValue":"={{ $json.name }}"},{"fieldName":"description","fieldValue":"={{ $json.description}}"}]},"operation":"create","projectId":"pepq760y5lwt5tm","authentication":"nocoDbApiToken"},"credentials":{"nocoDbApiToken":{"id":"9uSbSrDz8EL2OIL7","name":"NocoDB Token account"}},"typeVersion":3},{"id":"0356c3a4-dc20-42b0-b069-045048768939","name":"Create playlist in DB","type":"n8n-nodes-base.nocoDb","position":[1600,2200],"parameters":{"table":"mchan0xys9h7h7e","fieldsUi":{"fieldValues":[{"fieldName":"uri","fieldValue":"={{ $('Get monthly playlist').item.json.uri }}"},{"fieldName":"name","fieldValue":"={{ $('Get monthly playlist').item.json.name }}"},{"fieldName":"description","fieldValue":"={{ $('Get monthly playlist').item.json.description }}"}]},"operation":"create","projectId":"pepq760y5lwt5tm","authentication":"nocoDbApiToken"},"credentials":{"nocoDbApiToken":{"id":"9uSbSrDz8EL2OIL7","name":"NocoDB Token account"}},"typeVersion":3},{"id":"e2c86f04-725c-4af7-b3c2-9c22e2dc64bf","name":"Merge","type":"n8n-nodes-base.merge","position":[2040,2460],"parameters":{"mode":"chooseBranch","output":"empty"},"typeVersion":2.1},{"id":"036e0d74-3383-44e9-991d-7e062b982b51","name":"Clean op","type":"n8n-nodes-base.noOp","position":[1820,2200],"parameters":{},"typeVersion":1},{"id":"323c9746-f713-4a3d-9af5-9579ec767fca","name":"Clean op2","type":"n8n-nodes-base.noOp","position":[1600,2800],"parameters":{},"typeVersion":1},{"id":"3b0be7ca-c47b-4524-b72a-c37f25c5e4d0","name":"Get this month playlist in DB","type":"n8n-nodes-base.nocoDb","position":[2260,2460],"parameters":{"table":"mchan0xys9h7h7e","options":{"where":"=(name,eq,{{ $('Get current date').item.json.currentDate.text }})"},"operation":"getAll","projectId":"pepq760y5lwt5tm","returnAll":true,"authentication":"nocoDbApiToken"},"credentials":{"nocoDbApiToken":{"id":"9uSbSrDz8EL2OIL7","name":"NocoDB Token account"}},"typeVersion":3},{"id":"733077e4-c474-4c95-ba05-d0b2375475ad","name":"Get this month tracks in DB","type":"n8n-nodes-base.nocoDb","position":[2480,2460],"parameters":{"table":"m0dm2y304t7vmuk","options":{"where":"=(playlistName,eq,{{ $('Get current date').item.json.currentDate.text }})"},"operation":"getAll","projectId":"pepq760y5lwt5tm","returnAll":true,"authentication":"nocoDbApiToken"},"credentials":{"nocoDbApiToken":{"id":"9uSbSrDz8EL2OIL7","name":"NocoDB Token account"}},"typeVersion":3},{"id":"6c8ef70f-542d-4454-9ae6-8f4e9778beb0","name":"Add song to the playlist","type":"n8n-nodes-base.spotify","position":[3580,2460],"parameters":{"id":"={{ $('Get this month playlist in DB').item.json.uri }}","trackID":"={{ $('For each monthly tracks in DB').item.json.uri }}","resource":"playlist","additionalFields":{}},"credentials":{"spotifyOAuth2Api":{"id":"zQrMRwwU6DLh4W77","name":"Spotify account"}},"typeVersion":1},{"id":"034cd38d-4800-4f9c-9b67-453fdb2afa3c","name":"For each tracks in liked song","type":"n8n-nodes-base.splitInBatches","position":[720,2680],"parameters":{"options":{"reset":false}},"typeVersion":3},{"id":"90ff5c0b-e842-437f-be85-a5938288c513","name":"For each monthly tracks in DB","type":"n8n-nodes-base.splitInBatches","position":[2700,2460],"parameters":{"options":{}},"typeVersion":3},{"id":"decf36a4-fb8c-41eb-ae15-7ba36d621ad7","name":"Get this month tracks in Spotify","type":"n8n-nodes-base.spotify","position":[2920,2560],"parameters":{"id":"={{ $('Get this month playlist in DB').item.json.uri }}","resource":"playlist","operation":"getTracks","returnAll":true},"credentials":{"spotifyOAuth2Api":{"id":"zQrMRwwU6DLh4W77","name":"Spotify account"}},"typeVersion":1,"alwaysOutputData":true},{"id":"d322a655-e80b-4277-87d9-93e927b2f372","name":"Filter1","type":"n8n-nodes-base.filter","position":[3140,2560],"parameters":{"options":{},"conditions":{"options":{"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"a11640e1-f22a-4ce9-abff-976efc57e1d3","operator":{"name":"filter.operator.equals","type":"string","operation":"equals"},"leftValue":"={{ $('For each monthly tracks in DB').item.json.uri }}","rightValue":"={{ $json.track.uri }}"}]}},"executeOnce":false,"typeVersion":2,"alwaysOutputData":true},{"id":"5027f98d-b973-405f-81cf-534df794325f","name":"Song is not present in the playlist ?","type":"n8n-nodes-base.if","position":[3360,2560],"parameters":{"options":{},"conditions":{"options":{"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"1beb843e-53da-48ce-9717-d7797232e4ae","operator":{"type":"object","operation":"empty","singleValue":true},"leftValue":"={{ $json }}","rightValue":""}]}},"typeVersion":2},{"id":"cd2e3a28-24c1-47d7-ad30-c836e08ad40f","name":"Clean op1","type":"n8n-nodes-base.noOp","position":[3800,2560],"parameters":{},"typeVersion":1},{"id":"56bbb0e9-3ee5-48e3-b0bf-48e8d026daa9","name":"Sticky Note5","type":"n8n-nodes-base.stickyNote","position":[2220,2400],"parameters":{"width":1733.785946789966,"height":351.94195615011336,"content":"## Check if the song is in the Spotify playlist. If not, add it."},"typeVersion":1},{"id":"9834163b-0991-4910-bb4f-cf4557bfa0d5","name":"Schedule Trigger","type":"n8n-nodes-base.scheduleTrigger","position":[20,2460],"parameters":{"rule":{"interval":[{"field":"minutes"}]}},"typeVersion":1.2},{"id":"72a3c48f-a759-4e0c-b7bb-9f69a5f4377e","name":"End","type":"n8n-nodes-base.noOp","position":[4100,2260],"parameters":{},"typeVersion":1}],"pinData":{},"connections":{"Merge":{"main":[[{"node":"Get this month playlist in DB","type":"main","index":0}]]},"Filter1":{"main":[[{"node":"Song is not present in the playlist ?","type":"main","index":0}]]},"Clean op":{"main":[[{"node":"Merge","type":"main","index":0}]]},"Clean op1":{"main":[[{"node":"For each monthly tracks in DB","type":"main","index":0}]]},"Clean op2":{"main":[[{"node":"For each tracks in liked song","type":"main","index":0}]]},"Is not saved":{"main":[[{"node":"Create song entry","type":"main","index":0}],[{"node":"Clean op2","type":"main","index":0}]]},"Get current date":{"main":[[{"node":"Get all user playlist","type":"main","index":0},{"node":"Get last 10 liked tracks","type":"main","index":0}]]},"Schedule Trigger":{"main":[[{"node":"Get current date","type":"main","index":0}]]},"Create song entry":{"main":[[{"node":"Clean op2","type":"main","index":0}]]},"Get playlist in DB":{"main":[[{"node":"Playlist exist  in DB ?","type":"main","index":0}]]},"Get monthly playlist":{"main":[[{"node":"Monthly playlist exist in Spotify ?","type":"main","index":0}]]},"Create playlist in DB":{"main":[[{"node":"Clean op","type":"main","index":0}]]},"Get all user playlist":{"main":[[{"node":"Get monthly playlist","type":"main","index":0}]]},"Create playlist in DB1":{"main":[[{"node":"Clean op","type":"main","index":0}]]},"Check if track is saved":{"main":[[{"node":"Is not saved","type":"main","index":0}]]},"Playlist exist  in DB ?":{"main":[[{"node":"Clean op","type":"main","index":0}],[{"node":"Create playlist in DB","type":"main","index":0}]]},"Add song to the playlist":{"main":[[{"node":"Clean op1","type":"main","index":0}]]},"Get last 10 liked tracks":{"main":[[{"node":"For each tracks in liked song","type":"main","index":0}]]},"Create playlist in Spotify":{"main":[[{"node":"Create playlist in DB1","type":"main","index":0}]]},"Get this month tracks in DB":{"main":[[{"node":"For each monthly tracks in DB","type":"main","index":0}]]},"For each monthly tracks in DB":{"main":[[{"node":"End","type":"main","index":0}],[{"node":"Get this month tracks in Spotify","type":"main","index":0}]]},"For each tracks in liked song":{"main":[[{"node":"Merge","type":"main","index":1}],[{"node":"Check if track is saved","type":"main","index":0}]]},"Get this month playlist in DB":{"main":[[{"node":"Get this month tracks in DB","type":"main","index":0}]]},"Get this month tracks in Spotify":{"main":[[{"node":"Filter1","type":"main","index":0}]]},"Monthly playlist exist in Spotify ?":{"main":[[{"node":"Get playlist in DB","type":"main","index":0}],[{"node":"Create playlist in Spotify","type":"main","index":0}]]},"Song is not present in the playlist ?":{"main":[[{"node":"Add song to the playlist","type":"main","index":0}],[{"node":"Clean op1","type":"main","index":0}]]}}}