{
"id": "F7CfIF10XjXhqbGb",
"meta": {
"instanceId": "ba8f1362d8ed4c2ce84171d2f481098de4ee775241bdc1660d1dce80434ec7d4",
"templateCredsSetupCompleted": true
},
"name": "Play with Spotify from Telegram",
"tags": [],
"nodes": [
{
"id": "0395b3e4-94ef-49ea-9b4c-8f908e62f8c6",
"name": "Telegram Trigger",
"type": "n8n-nodes-base.telegramTrigger",
"position": [
-60,
20
],
"webhookId": "e7aa284b-5eef-4ac1-94bf-8e4d307a3b14",
"parameters": {
"updates": [
"message"
],
"additionalFields": {}
},
"credentials": {
"telegramApi": {
"id": "gblW5oACGEPuccja",
"name": "Telegram account"
}
},
"typeVersion": 1.1
},
{
"id": "263edf45-58a0-45e8-91f8-601bc62c7d6f",
"name": "OpenAI - Ask about a track",
"type": "@n8n/n8n-nodes-langchain.openAi",
"position": [
120,
-120
],
"parameters": {
"modelId": {
"__rl": true,
"mode": "list",
"value": "gpt-4o-mini",
"cachedResultName": "GPT-4O-MINI"
},
"options": {},
"messages": {
"values": [
{
"content": "=get artist and song name from '{{ $json.message.text }}'. Reply only eg. 'track:song name artist:artist name'"
}
]
}
},
"credentials": {
"openAiApi": {
"id": "vDcge3EgslxfX3EC",
"name": "OpenAi account"
}
},
"typeVersion": 1.6
},
{
"id": "086aef8b-533a-4c33-9952-29d5adb152c8",
"name": "Search track",
"type": "n8n-nodes-base.spotify",
"onError": "continueErrorOutput",
"position": [
540,
-200
],
"parameters": {
"limit": 1,
"query": "={{ $json.message.content }}",
"filters": {},
"resource": "track",
"operation": "search"
},
"credentials": {
"spotifyOAuth2Api": {
"id": "wylKghFNQa8IKy1U",
"name": "Spotify account"
}
},
"typeVersion": 1,
"alwaysOutputData": true
},
{
"id": "08af6055-ba52-4cb2-a561-ea04ac55279f",
"name": "Add song",
"type": "n8n-nodes-base.spotify",
"onError": "continueErrorOutput",
"position": [
780,
-240
],
"parameters": {
"id": "=spotify:track:{{ $json.id }}"
},
"credentials": {
"spotifyOAuth2Api": {
"id": "wylKghFNQa8IKy1U",
"name": "Spotify account"
}
},
"typeVersion": 1
},
{
"id": "2dbdafa4-3b6f-4a14-813c-4e10da10abad",
"name": "Next Song",
"type": "n8n-nodes-base.spotify",
"onError": "continueErrorOutput",
"position": [
980,
-280
],
"parameters": {
"operation": "nextSong"
},
"credentials": {
"spotifyOAuth2Api": {
"id": "wylKghFNQa8IKy1U",
"name": "Spotify account"
}
},
"typeVersion": 1
},
{
"id": "cb8d42aa-0c7e-45a5-90b5-b91e483dd13a",
"name": "Resume play",
"type": "n8n-nodes-base.spotify",
"notes": "We don't have to stop here on error. An error is thrown from Spotify if the player is already playing.",
"onError": "continueRegularOutput",
"position": [
1240,
-380
],
"parameters": {
"operation": "resume"
},
"credentials": {
"spotifyOAuth2Api": {
"id": "wylKghFNQa8IKy1U",
"name": "Spotify account"
}
},
"typeVersion": 1
},
{
"id": "089e1070-b013-454c-9f6c-55b909e06c1d",
"name": "Currently Playing",
"type": "n8n-nodes-base.spotify",
"onError": "continueErrorOutput",
"position": [
1420,
-300
],
"parameters": {
"operation": "currentlyPlaying"
},
"credentials": {
"spotifyOAuth2Api": {
"id": "wylKghFNQa8IKy1U",
"name": "Spotify account"
}
},
"typeVersion": 1
},
{
"id": "e9df0dcf-b166-45a3-910b-787b3718bbcf",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
120,
-300
],
"parameters": {
"color": 5,
"width": 254.05813953488382,
"content": "## Telegram to Spotify \nAsk AI about a track with artist and song name or if you can't remember describe it and AI does it's thing.\n"
},
"typeVersion": 1
},
{
"id": "77bae9be-2d92-4028-ae78-7887b6a2d394",
"name": "Merge",
"type": "n8n-nodes-base.merge",
"position": [
440,
220
],
"parameters": {
"mode": "combine",
"options": {},
"combineBy": "combineAll"
},
"typeVersion": 3
},
{
"id": "0d95000d-7efd-402a-9a34-47ababb2f53e",
"name": "If",
"type": "n8n-nodes-base.if",
"position": [
620,
-440
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "02af5387-07d2-4a16-bd83-e1359d091165",
"operator": {
"type": "string",
"operation": "notEmpty",
"singleValue": true
},
"leftValue": "={{ $json?.id }}",
"rightValue": ""
}
]
}
},
"typeVersion": 2.2
},
{
"id": "363f89ad-34d0-4445-8ff3-693d991dad09",
"name": "Message parser",
"type": "n8n-nodes-base.set",
"position": [
1280,
-40
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "93cd2545-c6e9-4717-96b7-d49eb056ac70",
"name": "message",
"type": "string",
"value": "={{ $json.error }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "8b80f80d-8c8e-44de-9838-6d05199bb734",
"name": "Not found error message",
"type": "n8n-nodes-base.set",
"position": [
880,
-460
],
"parameters": {
"mode": "raw",
"options": {},
"jsonOutput": "{\n \"error\": \"Song not found\"\n}\n"
},
"typeVersion": 3.4
},
{
"id": "f1785140-8e97-43e1-9d84-aedc8b8d5e06",
"name": "Return message to Telegram",
"type": "n8n-nodes-base.telegram",
"position": [
760,
220
],
"parameters": {
"text": "={{ $('Message parser').item.json.message }}",
"chatId": "={{ $json.message.chat.id }}",
"additionalFields": {}
},
"credentials": {
"telegramApi": {
"id": "gblW5oACGEPuccja",
"name": "Telegram account"
}
},
"typeVersion": 1.2
},
{
"id": "e3e16535-094b-41bf-88c6-166bb6805d53",
"name": "Define Now Playing",
"type": "n8n-nodes-base.set",
"notes": "We use the object \"error\" as a returned bject so we can re-use the Message Parser node.",
"position": [
1660,
-240
],
"parameters": {
"mode": "raw",
"options": {},
"jsonOutput": "={\n \"error\": \"Now playing {{ $json.item.name }} - {{ $json.item.artists[0].name }} - {{ $json.item.album.name }}\"\n}\n"
},
"typeVersion": 3.4
}
],
"active": true,
"pinData": {},
"settings": {
"executionOrder": "v1"
},
"versionId": "6f219c9e-f17a-45b1-ab8d-09d991fd8e34",
"connections": {
"If": {
"main": [
[
{
"node": "Add song",
"type": "main",
"index": 0
}
],
[
{
"node": "Not found error message",
"type": "main",
"index": 0
}
]
]
},
"Merge": {
"main": [
[
{
"node": "Return message to Telegram",
"type": "main",
"index": 0
}
]
]
},
"Add song": {
"main": [
[
{
"node": "Next Song",
"type": "main",
"index": 0
}
],
[
{
"node": "Message parser",
"type": "main",
"index": 0
}
]
]
},
"Next Song": {
"main": [
[
{
"node": "Resume play",
"type": "main",
"index": 0
}
],
[
{
"node": "Message parser",
"type": "main",
"index": 0
}
]
]
},
"Resume play": {
"main": [
[
{
"node": "Currently Playing",
"type": "main",
"index": 0
}
],
[]
]
},
"Search track": {
"main": [
[
{
"node": "If",
"type": "main",
"index": 0
}
],
[
{
"node": "Message parser",
"type": "main",
"index": 0
}
]
]
},
"Message parser": {
"main": [
[
{
"node": "Merge",
"type": "main",
"index": 0
}
]
]
},
"Telegram Trigger": {
"main": [
[
{
"node": "OpenAI - Ask about a track",
"type": "main",
"index": 0
},
{
"node": "Merge",
"type": "main",
"index": 1
}
]
]
},
"Currently Playing": {
"main": [
[
{
"node": "Define Now Playing",
"type": "main",
"index": 0
}
],
[
{
"node": "Message parser",
"type": "main",
"index": 0
}
]
]
},
"Define Now Playing": {
"main": [
[
{
"node": "Message parser",
"type": "main",
"index": 0
}
]
]
},
"Not found error message": {
"main": [
[
{
"node": "Message parser",
"type": "main",
"index": 0
}
]
]
},
"OpenAI - Ask about a track": {
"main": [
[
{
"node": "Search track",
"type": "main",
"index": 0
}
]
]
}
}
}