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.
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
- 1Copy the workflow JSON above using the Copy Workflow JSON button.
- 2Open your n8n instance and go to Workflows.
- 3Click Import from JSON and paste the copied workflow.
Don't have an n8n instance? Start your free trial at n8nautomation.cloud
Related Templates
Agentic Telegram AI bot with LangChain nodes and new tools
Ready-to-use n8n workflow template for social media. This automation connects Telegram, OpenAI with 8 nodes. Import directly into your n8n instance and customize for your needs.
Angie, Personal AI Assistant with Telegram Voice and Text
Ready-to-use n8n workflow template for social media. This automation connects Telegram, Gmail, Google Calendar, OpenAI with 15 nodes. Import directly into your n8n instance and customize for your needs.
AI-Powered Children_s English Storytelling on Telegram with OpenAI
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.