AutomationFlowsAI & RAG › Generate AI Songs From Text Prompts with Suno, Openai, Google Drive and Slack

Generate AI Songs From Text Prompts with Suno, Openai, Google Drive and Slack

ByOneclick AI Squad @oneclick-ai on n8n.io

Build a fully automated music generation workflow in n8n using Suno to create and store AI-generated songs.

Webhook trigger★★★★☆ complexityAI-powered18 nodesHTTP RequestGoogle DriveGoogle SheetsSlackOpenAI
AI & RAG Trigger: Webhook Nodes: 18 Complexity: ★★★★☆ AI nodes: yes Added:

This workflow corresponds to n8n.io template #13826 — we link there as the canonical source.

This workflow follows the Google Drive → Google Sheets recipe pattern — see all workflows that pair these two integrations.

The workflow JSON

Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →

Download .json
{
  "id": "tERdsAbhelx64Fx0",
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "name": "n8n Suno Music Automation: Generate Custom AI Songs from Text Prompts",
  "tags": [],
  "nodes": [
    {
      "id": "7ce6840b-f4d2-48b1-957c-72ef2cc6c76d",
      "name": "Overview & Instructions",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -256,
        -144
      ],
      "parameters": {
        "width": 1140,
        "height": 956,
        "content": "## \ud83c\udfb5 n8n Suno Music Automation\n### Generate Custom AI Songs from Text Prompts\n\nBuild a fully automated music generation workflow in n8n using Suno to create and store AI-generated songs.\n\n### What's the Goal?\nAutomate end-to-end AI music creation \u2014 from a simple text prompt to a fully generated, stored, and shareable song \u2014 using Suno's API inside n8n with zero manual effort.\n\n### Why Does It Matter?\nAI music generation is powerful but manual. This workflow lets you batch-generate songs, integrate music into apps or content pipelines, and store outputs automatically \u2014 saving hours of repetitive work.\n\n### How It Works\n1. Webhook or Schedule triggers the flow with a text prompt\n2. Prompt is enriched/formatted for best Suno results\n3. Suno API call initiates song generation\n4. Workflow polls until song is ready (async wait loop)\n5. Song metadata & audio URL retrieved\n6. File downloaded and saved to cloud storage (Google Drive / S3)\n7. Metadata logged to Google Sheets / Airtable\n8. Notification sent via Slack / Email\n\n### Configuration Requirements\n- Suno API key (via RapidAPI or official Suno API access)\n- Cloud storage credentials (Google Drive / AWS S3)\n- Google Sheets or Airtable credentials (for logging)\n- Slack Bot Token or SMTP (for notifications)\n- Optional: OpenAI API key (for prompt enrichment)\n\n### Setup Guide\n1. Import workflow into n8n\n2. Connect credentials (Suno/RapidAPI, Google Drive, Sheets, Slack)\n3. Configure Set node: default genre, mood, duration, style tags\n4. Test with a manual trigger and a sample prompt\n5. Activate webhook \u2192 send prompts to trigger URL\n6. Monitor generation status and tune polling interval\n7. Check storage & logs for generated songs\n\n"
      },
      "typeVersion": 1
    },
    {
      "id": "6f8087b3-7fc1-457d-85f7-f3b9413791f0",
      "name": "1. Trigger",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        960,
        -36
      ],
      "parameters": {
        "color": 3,
        "width": 432,
        "height": 740,
        "content": "## 1. Trigger & Prompt Input\nWebhook or schedule \u2192 receive and prepare the music prompt"
      },
      "typeVersion": 1
    },
    {
      "id": "55521757-9241-4014-a9c5-f0a502a5f96a",
      "name": "2. Enrichment Phase",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1424,
        -16
      ],
      "parameters": {
        "color": 5,
        "width": 200,
        "height": 720,
        "content": "## 2. Prompt Enrichment\nUse AI to enhance prompt with genre, mood & style tags for best Suno output"
      },
      "typeVersion": 1
    },
    {
      "id": "102f7f37-dc19-4330-a8ca-43401780d440",
      "name": "3. Suno Phase",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1664,
        0
      ],
      "parameters": {
        "color": 4,
        "width": 1104,
        "height": 700,
        "content": "## 3. Suno Generation & Polling\nSubmit to Suno API \u2192 poll until song is ready"
      },
      "typeVersion": 1
    },
    {
      "id": "0c909a7e-4f80-4466-8bfc-a7da4053ddec",
      "name": "4. Storage & Output",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2816,
        0
      ],
      "parameters": {
        "color": 3,
        "width": 680,
        "height": 696,
        "content": "## 4. Store, Log & Notify\nDownload audio \u2192 Cloud Storage \u2192 Log \u2192 Slack alert"
      },
      "typeVersion": 1
    },
    {
      "id": "442802db-9904-40a0-b1a6-4daa1e8f50e0",
      "name": "Webhook: Receive Prompt",
      "type": "n8n-nodes-base.webhook",
      "position": [
        1040,
        352
      ],
      "parameters": {
        "path": "suno-generate-song",
        "options": {},
        "httpMethod": "POST"
      },
      "typeVersion": 2
    },
    {
      "id": "aae08c5c-0e38-41ed-baac-0a5dd6128b70",
      "name": "Daily Batch (fallback)",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        1040,
        544
      ],
      "parameters": {
        "rule": {
          "interval": [
            {
              "field": "hours",
              "hoursInterval": 24
            }
          ]
        }
      },
      "typeVersion": 1.3
    },
    {
      "id": "f5080e4a-10bc-4b0a-b5d0-becc41126dd2",
      "name": "Set Music Config",
      "type": "n8n-nodes-base.set",
      "position": [
        1264,
        448
      ],
      "parameters": {
        "values": {
          "string": [
            {
              "name": "default_prompt",
              "value": "An uplifting electronic pop song about chasing your dreams"
            },
            {
              "name": "genre",
              "value": "pop"
            },
            {
              "name": "mood",
              "value": "uplifting"
            },
            {
              "name": "style_tags",
              "value": "electronic, energetic, modern"
            },
            {
              "name": "duration_seconds",
              "value": "60"
            },
            {
              "name": "storage_folder",
              "value": "AI-Generated-Songs"
            },
            {
              "name": "log_sheet_id",
              "value": "your-google-sheet-id-here"
            }
          ]
        },
        "options": {}
      },
      "typeVersion": 2
    },
    {
      "id": "ccaf90de-c02c-468b-b2a4-57a057b11d39",
      "name": "Suno: Submit Generation Job",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        1712,
        448
      ],
      "parameters": {
        "url": "https://suno-api.p.rapidapi.com/generate",
        "options": {},
        "sendBody": true,
        "sendHeaders": true,
        "bodyParameters": {
          "parameters": [
            {
              "name": "prompt",
              "value": "={{ $json.message.content }}"
            },
            {
              "name": "tags",
              "value": "={{ $('Set Music Config').item.json.style_tags }}"
            },
            {
              "name": "make_instrumental",
              "value": "false"
            },
            {
              "name": "wait_audio",
              "value": "false"
            }
          ]
        },
        "headerParameters": {
          "parameters": [
            {
              "name": "x-rapidapi-host",
              "value": "suno-api.p.rapidapi.com"
            },
            {
              "name": "x-rapidapi-key",
              "value": "={{ $credentials.rapidApiKey }}"
            },
            {
              "name": "Content-Type",
              "value": "application/json"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "1949fb9d-c581-4e8c-9b81-11454fbac54c",
      "name": "Wait 30s (Polling Delay)",
      "type": "n8n-nodes-base.wait",
      "position": [
        1936,
        448
      ],
      "parameters": {},
      "typeVersion": 1.1
    },
    {
      "id": "125ffb37-c45b-49f9-8bd6-1b8200b9707b",
      "name": "Suno: Poll Song Status",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        2160,
        448
      ],
      "parameters": {
        "url": "=https://suno-api.p.rapidapi.com/get?ids={{ $('Suno: Submit Generation Job').item.json[0].id }}",
        "options": {},
        "sendHeaders": true,
        "headerParameters": {
          "parameters": [
            {
              "name": "x-rapidapi-host",
              "value": "suno-api.p.rapidapi.com"
            },
            {
              "name": "x-rapidapi-key",
              "value": "={{ $credentials.rapidApiKey }}"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "8a5ad676-94a1-47a4-bd05-53ffc8d2e971",
      "name": "Song Ready?",
      "type": "n8n-nodes-base.if",
      "position": [
        2384,
        448
      ],
      "parameters": {
        "conditions": {
          "string": [
            {
              "value1": "={{ $json[0].status }}",
              "value2": "complete"
            }
          ]
        }
      },
      "typeVersion": 1
    },
    {
      "id": "21ce21ad-68af-44f2-8124-141aecc3ec11",
      "name": "Download Audio File",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        2608,
        352
      ],
      "parameters": {
        "url": "={{ $json[0].audio_url }}",
        "options": {
          "response": {
            "response": {
              "responseFormat": "file"
            }
          }
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "a6bf6e4c-963d-491e-8cd4-33cf922ffdfb",
      "name": "Google Drive: Save Song",
      "type": "n8n-nodes-base.googleDrive",
      "position": [
        2832,
        352
      ],
      "parameters": {
        "name": "={{ $('Suno: Poll Song Status').item.json[0].title || 'ai-song-' + $now.toFormat('yyyyMMdd-HHmmss') }}.mp3",
        "options": {},
        "folderId": {
          "mode": "string",
          "value": "={{ $('Set Music Config').item.json.storage_folder }}"
        }
      },
      "credentials": {
        "googleDriveOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 3
    },
    {
      "id": "b298b099-4b19-4124-aada-9b2b6b005f69",
      "name": "Google Sheets: Log Song",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        3056,
        352
      ],
      "parameters": {
        "columns": {
          "value": {
            "Title": "={{ $('Suno: Poll Song Status').item.json[0].title }}",
            "Prompt": "={{ $('OpenAI: Enrich Prompt').item.json.message.content }}",
            "Song ID": "={{ $('Suno: Poll Song Status').item.json[0].id }}",
            "Duration": "={{ $('Suno: Poll Song Status').item.json[0].duration }}",
            "Audio URL": "={{ $('Suno: Poll Song Status').item.json[0].audio_url }}",
            "Image URL": "={{ $('Suno: Poll Song Status').item.json[0].image_url }}",
            "Generated At": "={{ $now.toISO() }}",
            "Drive File ID": "={{ $json.id }}"
          },
          "mappingMode": "defineBelow"
        },
        "options": {},
        "operation": "append",
        "sheetName": {
          "mode": "string",
          "value": "Song Log"
        },
        "documentId": {
          "mode": "string",
          "value": "={{ $('Set Music Config').item.json.log_sheet_id }}"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.4
    },
    {
      "id": "d061b43c-3efc-4b95-8c45-8e0fd5abb8cc",
      "name": "Notify Slack",
      "type": "n8n-nodes-base.slack",
      "position": [
        3280,
        352
      ],
      "parameters": {
        "text": "={{ '\ud83c\udfb5 New AI Song Generated!\\n\\n*Title:* ' + $('Suno: Poll Song Status').item.json[0].title + '\\n*Prompt:* ' + $('OpenAI: Enrich Prompt').item.json.message.content + '\\n*Listen:* ' + $('Suno: Poll Song Status').item.json[0].audio_url + '\\n*Saved to Drive \u2705*' }}",
        "channel": "music-generation",
        "attachments": [],
        "otherOptions": {}
      },
      "credentials": {
        "slackApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "cfcc044e-1acd-4d89-a9cc-831cdddb718e",
      "name": "Notify Failure",
      "type": "n8n-nodes-base.slack",
      "position": [
        2608,
        544
      ],
      "parameters": {
        "text": "={{ '\u274c Song Generation Failed\\n\\n*Job ID:* ' + $('Suno: Submit Generation Job').item.json[0].id + '\\n*Status:* ' + $json[0].status + '\\n*Error:* ' + ($json[0].error_message || 'Unknown error') }}",
        "channel": "music-generation",
        "attachments": [],
        "otherOptions": {}
      },
      "credentials": {
        "slackApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "fca14269-5014-4cba-b5c1-6d5a66398e9a",
      "name": "OpenAI: Enrich Prompt",
      "type": "@n8n/n8n-nodes-langchain.openAi",
      "position": [
        1488,
        448
      ],
      "parameters": {
        "options": {},
        "messages": {
          "values": [
            {}
          ]
        },
        "resource": "conversation"
      },
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.1
    }
  ],
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "289d6e55-2375-4e8f-969a-ef225cc814a7",
  "connections": {
    "Song Ready?": {
      "main": [
        [
          {
            "node": "Download Audio File",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Notify Failure",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Set Music Config": {
      "main": [
        [
          {
            "node": "OpenAI: Enrich Prompt",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Download Audio File": {
      "main": [
        [
          {
            "node": "Google Drive: Save Song",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI: Enrich Prompt": {
      "main": [
        [
          {
            "node": "Suno: Submit Generation Job",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Daily Batch (fallback)": {
      "main": [
        [
          {
            "node": "Set Music Config",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Suno: Poll Song Status": {
      "main": [
        [
          {
            "node": "Song Ready?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Google Drive: Save Song": {
      "main": [
        [
          {
            "node": "Google Sheets: Log Song",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Google Sheets: Log Song": {
      "main": [
        [
          {
            "node": "Notify Slack",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Webhook: Receive Prompt": {
      "main": [
        [
          {
            "node": "Set Music Config",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Wait 30s (Polling Delay)": {
      "main": [
        [
          {
            "node": "Suno: Poll Song Status",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Suno: Submit Generation Job": {
      "main": [
        [
          {
            "node": "Wait 30s (Polling Delay)",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}

Credentials you'll need

Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.

Pro

For the full experience including quality scoring and batch install features for each workflow upgrade to Pro

About this workflow

Build a fully automated music generation workflow in n8n using Suno to create and store AI-generated songs.

Source: https://n8n.io/workflows/13826/ — original creator credit. Request a take-down →

More AI & RAG workflows → · Browse all categories →

Related workflows

Workflows that share integrations, category, or trigger type with this one. All free to copy and import.

AI & RAG

This system meticulously guides each lead through a fully automated journey, from initial contact to a personalized follow-up and CRM integration.

OpenAI, @Elevenlabs/N8N Nodes Elevenlabs, Google Drive +4
AI & RAG

A smart, fully automated coding pipeline built inside n8n that leverages Cursor AI to write, refactor, review, and optimize code projects — triggered by a webhook, schedule, or manual prompt. Every ou

HTTP Request, Google Drive, Google Sheets +2
AI & RAG

Overview

Gmail Trigger, Google Drive, OpenAI +4
AI & RAG

Transform your webinar registrations from basic form submissions into a verified, personalized, and premium attendee experience.

N8N Nodes Verifiemail, Slack, Stop And Error +4
AI & RAG

This workflow automates the initial screening process for new job applications, freeing up your recruitment team to focus on qualified candidates. It receives applications from a webhook, uses OpenAI

HTTP Request, OpenAI, Google Sheets +2