Back to Catalog

IOT button remote / Spotify control integration with MQTT

HubschrauberHubschrauber
4021 views
2/3/2026
Official Page

Overview

This template integrates an IOT multi-button switch (meant for controlling a dimmable light) with Spotify playback functions, via MQTT messages. This isn't likely to work without some tinkering, but should be a good head start on receiving/routing IOT/MQTT messages and hooking up to a Spotify-like API.

Requirements

  • An IOT device capable of generating events that can be delivered as MQTT messages through an MQTT Broker
  • An MQTT Broker to which n8n can connect and consume messages
    • e.g. Zigbee2MQTT in HomeAssistant
  • A Spotify developer-account (which provides access to API functions via OAuth2 authorization)
  • A Spotify user-account (which provides access to Spotify streamed content, user settings, etc.)

Setup

  1. Create an MQTT Credential item in n8n and assign it to the MQTT Trigger node
  2. Modify the MQTT trigger node to match the topic for your IOT device messages
  3. Modify the switch/router nodes to map to the message text from your IOT button (e.g. arrow_left_click, brightness_up_click, etc.)
  4. Create a Spotify developer-account (or use the login for a user-account)
  5. Create an "App" in the developer-account to represent the n8n workflow
    • Chicken/Egg ALERT: The n8n Spotify Credentials dialog box will display the "OAuth Redirect URL" required to create the App in Spotify, but the n8n Credential item itself cannot be created until AFTER the App has been created.
  6. Create a Spotify Credentials item in n8n
    • Open the Settings on the Spotify App to find the required Client ID and Client Secret information.
    • ALERT: Save this before proceeding to the Connect step.
  7. Connect the n8n Spotify Credential item to the Spotify user-account
    • ALERT: Expect n8n to open a separate OAuth2 window on authorization.spotify.com here, which may require a login to the Spotify user-account
  8. Open each of the HTTP and Spotify nodes, one by one, and re-assign to your Spotify Credential (try not to miss any).
  9. Modify the variable values in the Globals node to match your own environment.
    • target_spotify_playback_device_name - The name of a playback device available to the Spotify user-account
    • favorite_playlist_name - The name of a playlist to start when one of the button actions is indicated in the MQTT message. Used in example "Custom Function 2" sequence.

Notes

  • You're on your own for getting the multi-button remote switch talking to MQTT, figuring out what the exact MQTT topic name is, and mapping the message parts to the workflow (actions, etc.).
  • The next / previous actions are wired up to not transfer control to the target device. This alternative routing just illustrates a different behavior than the remaining actions/functions, which include activation of the target device when required.
  • Some of the Spotify API interactions use the Spotify node in n8n, but many of the available Spotify API functions are limited or not implemented at all in the Spotify node. So, in other cases, a regular HTTP node is used with the Spotify OAuth2 API credential instead. By modifying one of the examples included in the template, it should be possible to call nearly anything the Spotify API has to offer.

Spotify+n8n OAuth Mini-Tutorial

Definitions

  • The developer-account is the Spotify login for creating a spotify-app which will be associated with a client id and client secret.
  • The user-account is the Spotify login that has permission to stream songs, set up playback devices, etc.
  • ++A spotify-login allows access to a Spotify user-account, or a Spotify developer-account, OR BOTH++
  • The spotify-app, which has a client id and client secret, is an object created in the developer-account.
  • The app-implementation (in this case, an ++n8n workflow++) uses the spotify-app's credentials (client id / client secret) to call Spotify API endpoints on behalf of a user-account.

Using One Spotify Login as Both User and Developer

When an n8n Spotify-node or HTTP-node (i.e. an app-implementation) calls a Spotify API endpoint, the Credentials item may be using the client id and client secret from a spotify-app, which was created in a developer-account that is ++one and the same spotify-login as the user-account++. However, it helps to remind yourself that from the Spotify API server's perspective, the developer-account + spotify-app, and the user-account, are ++two independent entities++.

n8n Spotify-OAuth2-API Credential Authorization Process

The 2 layers/steps, in the process of authorizing an n8n Spotify-OAuth2-API credential to make API calls, are:

  1. n8n must identify itself to Spotify as the app-implementation associated with the developer-account/spotify-app by sending the app's credentials (client id and client secret) to Spotify.
    • The Client ID and Client Secret are supplied in the n8n Spotify OAuth2 Credentials UI/dialog-box
  2. Separately, n8n must obtain an authorization token from Spotify to represent the permissions granted by the user to execute actions (call API endpoints) on behalf of the user (i.e. access things that belong to the user-account).
    • This authorization for the user-account access is obtained when the "Connect" or "Reconnect" button is clicked in the n8n Spotify Credentials UI/dialog-box (which pops up a separate authorization UI/browser-window managed by Spotify).
    • The Authorization for a given spotify-app stays "registered" in the user-account until revoked.
      • See: https://support.spotify.com/us/article/spotify-on-other-apps/
      • Direct Link: https://www.spotify.com/account/apps/
    • More than one user-account can be authorized for a given spotify-app. A particular n8n Spotify-OAuth2-API credential item appears to cache an authorization token for the user-account that was most recently authorized.
      • Up to 25 users can be allowed access to a spotify-app in Developer-Mode, but any user-account other than the one associated with the developer-account must be added by email address at https://developer.spotify.com/dashboard/{{app-credential-id}}/users
    • ALERT: IF the browser running the n8n UI is ALSO logged into a Spotify account, and the spotify-app is already authorized for that Spotify account, the "reconnect" button in the Spotify-OAuth2-API credential dialog may automatically grab a token for that logged in user-account, offering no opportunity to select a different user-account.
      • This can be managed somewhat by using "incognito" browser windows for n8n, Spotify, or both.

References

n8n Spotify Control via MQTT

This n8n workflow enables remote control of Spotify playback using MQTT messages. It acts as a bridge, allowing you to trigger Spotify actions (like playing, pausing, or skipping tracks) from any device that can send MQTT messages, such as an IoT button or a home automation system.

What it does

This workflow simplifies controlling your Spotify playback by:

  1. Listening for MQTT Messages: It continuously monitors a specified MQTT topic for incoming messages.
  2. Filtering Relevant Messages: It filters out messages that do not contain a payload field.
  3. Parsing JSON Payload: It attempts to parse the payload of the MQTT message as JSON.
  4. Extracting Spotify Action: It extracts the action property from the parsed JSON payload.
  5. Routing Actions to Spotify: Based on the action value, it triggers the corresponding Spotify API call (e.g., play, pause, next, previous).
  6. Handling Unknown Actions: If an unknown action is received, it proceeds without performing a Spotify action.

Prerequisites/Requirements

  • n8n Instance: A running n8n instance.
  • MQTT Broker: Access to an MQTT broker (e.g., Mosquitto, HiveMQ, AWS IoT Core).
  • Spotify Account: A Spotify Premium account is recommended for full playback control features.
  • Spotify API Credentials: You will need to set up Spotify API credentials (Client ID, Client Secret) and obtain an access token. This is typically done through a Spotify Developer account.
  • n8n MQTT Credential: An n8n credential configured to connect to your MQTT broker.
  • n8n Spotify Credential: An n8n credential configured with your Spotify API access.

Setup/Usage

  1. Import the Workflow:

    • Copy the provided JSON workflow definition.
    • In your n8n instance, click "New" in the workflows section.
    • Click the three dots ... next to "New workflow" and select "Import from JSON".
    • Paste the JSON content and click "Import".
  2. Configure MQTT Trigger:

    • Locate the "MQTT Trigger" node.
    • Configure your MQTT Broker Credential.
    • Specify the Topic you want to listen to (e.g., spotify/control).
  3. Configure Spotify Node:

    • Locate the "Spotify" node.
    • Configure your Spotify Credential. Ensure it has the necessary permissions to control playback.
  4. Customize Actions (Optional):

    • The "Switch" node currently routes based on action values. You can modify the cases to add more Spotify actions or customize existing ones.
    • For example, to add a "volume up" action, you would add a new case in the "Switch" node and connect it to a new "Spotify" node configured to adjust the volume.
  5. Activate the Workflow:

    • Save the workflow.
    • Toggle the "Active" switch in the top right corner to enable the workflow.
  6. Send MQTT Messages:

    • From your IoT device or MQTT client, publish messages to the configured MQTT topic.
    • The payload should be a JSON object with an action property.
    • Example payloads:
      • To play: {"action": "play"}
      • To pause: {"action": "pause"}
      • To skip to next track: {"action": "next"}
      • To go to previous track: {"action": "previous"}

This workflow provides a flexible foundation for integrating physical controls with your Spotify experience.

Related Templates

Track competitor SEO keywords with Decodo + GPT-4.1-mini + Google Sheets

This workflow automates competitor keyword research using OpenAI LLM and Decodo for intelligent web scraping. Who this is for SEO specialists, content strategists, and growth marketers who want to automate keyword research and competitive intelligence. Marketing analysts managing multiple clients or websites who need consistent SEO tracking without manual data pulls. Agencies or automation engineers using Google Sheets as an SEO data dashboard for keyword monitoring and reporting. What problem this workflow solves Tracking competitor keywords manually is slow and inconsistent. Most SEO tools provide limited API access or lack contextual keyword analysis. This workflow solves that by: Automatically scraping any competitor’s webpage with Decodo. Using OpenAI GPT-4.1-mini to interpret keyword intent, density, and semantic focus. Storing structured keyword insights directly in Google Sheets for ongoing tracking and trend analysis. What this workflow does Trigger — Manually start the workflow or schedule it to run periodically. Input Setup — Define the website URL and target country (e.g., https://dev.to, france). Data Scraping (Decodo) — Fetch competitor web content and metadata. Keyword Analysis (OpenAI GPT-4.1-mini) Extract primary and secondary keywords. Identify focus topics and semantic entities. Generate a keyword density summary and SEO strength score. Recommend optimization and internal linking opportunities. Data Structuring — Clean and convert GPT output into JSON format. Data Storage (Google Sheets) — Append structured keyword data to a Google Sheet for long-term tracking. Setup Prerequisites If you are new to Decode, please signup on this link visit.decodo.com n8n account with workflow editor access Decodo API credentials OpenAI API key Google Sheets account connected via OAuth2 Make sure to install the Decodo Community node. Create a Google Sheet Add columns for: primarykeywords, seostrengthscore, keyworddensity_summary, etc. Share with your n8n Google account. Connect Credentials Add credentials for: Decodo API credentials - You need to register, login and obtain the Basic Authentication Token via Decodo Dashboard OpenAI API (for GPT-4o-mini) Google Sheets OAuth2 Configure Input Fields Edit the “Set Input Fields” node to set your target site and region. Run the Workflow Click Execute Workflow in n8n. View structured results in your connected Google Sheet. How to customize this workflow Track Multiple Competitors → Use a Google Sheet or CSV list of URLs; loop through them using the Split In Batches node. Add Language Detection → Add a Gemini or GPT node before keyword analysis to detect content language and adjust prompts. Enhance the SEO Report → Expand the GPT prompt to include backlink insights, metadata optimization, or readability checks. Integrate Visualization → Connect your Google Sheet to Looker Studio for SEO performance dashboards. Schedule Auto-Runs → Use the Cron Node to run weekly or monthly for competitor keyword refreshes. Summary This workflow automates competitor keyword research using: Decodo for intelligent web scraping OpenAI GPT-4.1-mini for keyword and SEO analysis Google Sheets for live tracking and reporting It’s a complete AI-powered SEO intelligence pipeline ideal for teams that want actionable insights on keyword gaps, optimization opportunities, and content focus trends, without relying on expensive SEO SaaS tools.

Ranjan DailataBy Ranjan Dailata
161

Generate song lyrics and music from text prompts using OpenAI and Fal.ai Minimax

Spark your creativity instantly in any chat—turn a simple prompt like "heartbreak ballad" into original, full-length lyrics and a professional AI-generated music track, all without leaving your conversation. 📋 What This Template Does This chat-triggered workflow harnesses AI to generate detailed, genre-matched song lyrics (at least 600 characters) from user messages, then queues them for music synthesis via Fal.ai's minimax-music model. It polls asynchronously until the track is ready, delivering lyrics and audio URL back in chat. Crafts original, structured lyrics with verses, choruses, and bridges using OpenAI Submits to Fal.ai for melody, instrumentation, and vocals aligned to the style Handles long-running generations with smart looping and status checks Returns complete song package (lyrics + audio link) for seamless sharing 🔧 Prerequisites n8n account (self-hosted or cloud with chat integration enabled) OpenAI account with API access for GPT models Fal.ai account for AI music generation 🔑 Required Credentials OpenAI API Setup Go to platform.openai.com → API keys (sidebar) Click "Create new secret key" → Name it (e.g., "n8n Songwriter") Copy the key and add to n8n as "OpenAI API" credential type Test by sending a simple chat completion request Fal.ai HTTP Header Auth Setup Sign up at fal.ai → Dashboard → API Keys Generate a new API key → Copy it In n8n, create "HTTP Header Auth" credential: Name="Fal.ai", Header Name="Authorization", Header Value="Key [Your API Key]" Test with a simple GET to their queue endpoint (e.g., /status) ⚙️ Configuration Steps Import the workflow JSON into your n8n instance Assign OpenAI API credentials to the "OpenAI Chat Model" node Assign Fal.ai HTTP Header Auth to the "Generate Music Track", "Check Generation Status", and "Fetch Final Result" nodes Activate the workflow—chat trigger will appear in your n8n chat interface Test by messaging: "Create an upbeat pop song about road trips" 🎯 Use Cases Content Creators: YouTubers generating custom jingles for videos on the fly, streamlining production from idea to audio export Educators: Music teachers using chat prompts to create era-specific folk tunes for classroom discussions, fostering interactive learning Gift Personalization: Friends crafting anniversary R&B tracks from shared memories via quick chats, delivering emotional audio surprises Artist Brainstorming: Songwriters prototyping hip-hop beats in real-time during sessions, accelerating collaboration and iteration ⚠️ Troubleshooting Invalid JSON from AI Agent: Ensure the system prompt stresses valid JSON; test the agent standalone with a sample query Music Generation Fails (401/403): Verify Fal.ai API key has minimax-music access; check usage quotas in dashboard Status Polling Loops Indefinitely: Bump wait time to 45-60s for complex tracks; inspect fal.ai queue logs for bottlenecks Lyrics Under 600 Characters: Tweak agent prompt to enforce fuller structures like [V1][C][V2][B][C]; verify output length in executions

Daniel NkenchoBy Daniel Nkencho
601

Automate Dutch Public Procurement Data Collection with TenderNed

TenderNed Public Procurement What This Workflow Does This workflow automates the collection of public procurement data from TenderNed (the official Dutch tender platform). It: Fetches the latest tender publications from the TenderNed API Retrieves detailed information in both XML and JSON formats for each tender Parses and extracts key information like organization names, titles, descriptions, and reference numbers Filters results based on your custom criteria Stores the data in a database for easy querying and analysis Setup Instructions This template comes with sticky notes providing step-by-step instructions in Dutch and various query options you can customize. Prerequisites TenderNed API Access - Register at TenderNed for API credentials Configuration Steps Set up TenderNed credentials: Add HTTP Basic Auth credentials with your TenderNed API username and password Apply these credentials to the three HTTP Request nodes: "Tenderned Publicaties" "Haal XML Details" "Haal JSON Details" Customize filters: Modify the "Filter op ..." node to match your specific requirements Examples: specific organizations, contract values, regions, etc. How It Works Step 1: Trigger The workflow can be triggered either manually for testing or automatically on a daily schedule. Step 2: Fetch Publications Makes an API call to TenderNed to retrieve a list of recent publications (up to 100 per request). Step 3: Process & Split Extracts the tender array from the response and splits it into individual items for processing. Step 4: Fetch Details For each tender, the workflow makes two parallel API calls: XML endpoint - Retrieves the complete tender documentation in XML format JSON endpoint - Fetches metadata including reference numbers and keywords Step 5: Parse & Merge Parses the XML data and merges it with the JSON metadata and batch information into a single data structure. Step 6: Extract Fields Maps the raw API data to clean, structured fields including: Publication ID and date Organization name Tender title and description Reference numbers (kenmerk, TED number) Step 7: Filter Applies your custom filter criteria to focus on relevant tenders only. Step 8: Store Inserts the processed data into your database for storage and future analysis. Customization Tips Modify API Parameters In the "Tenderned Publicaties" node, you can adjust: offset: Starting position for pagination size: Number of results per request (max 100) Add query parameters for date ranges, status filters, etc. Add More Fields Extend the "Splits Alle Velden" node to extract additional fields from the XML/JSON data, such as: Contract value estimates Deadline dates CPV codes (procurement classification) Contact information Integrate Notifications Add a Slack, Email, or Discord node after the filter to get notified about new matching tenders. Incremental Updates Modify the workflow to only fetch new tenders by: Storing the last execution timestamp Adding date filters to the API query Only processing publications newer than the last run Troubleshooting No data returned? Verify your TenderNed API credentials are correct Check that you have setup youre filter proper Need help setting this up or interested in a complete tender analysis solution? Get in touch 🔗 LinkedIn – Wessel Bulte

Wessel BulteBy Wessel Bulte
247