Play with Spotify from Telegram

Ready-to-use n8n workflow template for social media. This automation connects Telegram, OpenAI with 14 nodes. Import directly into your n8n instance and customize for your needs.

14 nodesmanual trigger5 views0 copiesSocial Media
TelegramOpenAI

Workflow JSON

{"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": "", "name": "[Your telegramApi]"}}, "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": "", "name": "[Your openAiApi]"}}, "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": "", "name": "[Your spotifyOAuth2Api]"}}, "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": "", "name": "[Your spotifyOAuth2Api]"}}, "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": "", "name": "[Your spotifyOAuth2Api]"}}, "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": "", "name": "[Your spotifyOAuth2Api]"}}, "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": "", "name": "[Your spotifyOAuth2Api]"}}, "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": "", "name": "[Your telegramApi]"}}, "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}]]}}}

How to Import This Workflow

  1. 1Copy the workflow JSON above using the Copy Workflow JSON button.
  2. 2Open your n8n instance and go to Workflows.
  3. 3Click Import from JSON and paste the copied workflow.

Don't have an n8n instance? Start your free trial at n8nautomation.cloud

Ready to automate with n8n?

Get affordable managed n8n hosting with 24/7 support.