AutomationFlowsContent & Video › Generate & Upload an Audio Summary of a Wordpress (or Woocommerce) Article

Generate & Upload an Audio Summary of a Wordpress (or Woocommerce) Article

Byphil @phil on n8n.io

This workflow automates the process of summarizing or transcribing a WordPress article, converting the text into speech using Eleven Labs API, and uploading the resulting MP3 file back to WordPress.

Event trigger★★★★☆ complexityAI-powered10 nodesWordPressChain LlmHTTP RequestOpenAI Chat
Content & Video Trigger: Event Nodes: 10 Complexity: ★★★★☆ AI nodes: yes Added:

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

This workflow follows the Chainllm → HTTP Request 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
{
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "nodes": [
    {
      "id": "468084ed-ce7d-45c5-bf27-ea9c91d5898a",
      "name": "When clicking \u2018Test workflow\u2019",
      "type": "n8n-nodes-base.manualTrigger",
      "position": [
        0,
        0
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "fbde6cfe-9fac-46d2-958a-f42c9ef383a3",
      "name": "Retrieve WordPress Article",
      "type": "n8n-nodes-base.wordpress",
      "position": [
        440,
        0
      ],
      "parameters": {
        "postId": "1032",
        "options": {},
        "operation": "get"
      },
      "credentials": {
        "wordpressApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "54241e39-7a5f-45f4-9dab-72b5424f4061",
      "name": "Generate Summary or Transcription",
      "type": "@n8n/n8n-nodes-langchain.chainLlm",
      "position": [
        680,
        0
      ],
      "parameters": {
        "text": "={{ $json.content }}",
        "messages": {
          "messageValues": [
            {
              "message": "Summarize or transcribe this article, depending on the workflow setting."
            }
          ]
        },
        "promptType": "define",
        "hasOutputParser": true
      },
      "typeVersion": 1.5
    },
    {
      "id": "49cfaab6-a0c1-4319-904d-c1e0a2c6aa91",
      "name": "Generate Speech",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        1120,
        0
      ],
      "parameters": {
        "url": "https://api.elevenlabs.io/v1/text-to-speech/voice_id",
        "method": "POST",
        "options": {},
        "sendBody": true,
        "authentication": "genericCredentialType",
        "bodyParameters": {
          "parameters": [
            {
              "name": "text",
              "value": "={{ $json.text }}"
            },
            {
              "name": "model_id",
              "value": "eleven_multilingual_v2"
            },
            {
              "name": "output_format",
              "value": "mp3_44100_128"
            }
          ]
        },
        "genericAuthType": "httpCustomAuth"
      },
      "credentials": {
        "httpCustomAuth": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "899abf3f-4ab6-48bd-90ba-0502cb23348e",
      "name": "Upload MP3",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        2060,
        0
      ],
      "parameters": {
        "url": "={{ $('settings').item.json['site_url'] }}wp-json/wp/v2/media",
        "method": "POST",
        "options": {},
        "sendBody": true,
        "contentType": "binaryData",
        "sendHeaders": true,
        "authentication": "predefinedCredentialType",
        "headerParameters": {
          "parameters": [
            {
              "name": "Content-Disposition",
              "value": "=attachment; filename=\"{{ $('Retrieve WordPress Article').item.json.slug }}.mp3\""
            }
          ]
        },
        "inputDataFieldName": "data",
        "nodeCredentialType": "wordpressApi"
      },
      "credentials": {
        "wordpressApi": {
          "name": "<your credential>"
        }
      },
      "retryOnFail": true,
      "typeVersion": 4.2
    },
    {
      "id": "590297c9-1f66-4071-8b47-230b08c379d4",
      "name": "Update WordPress Post",
      "type": "n8n-nodes-base.wordpress",
      "position": [
        2300,
        0
      ],
      "parameters": {
        "postId": "={{ $('Retrieve WordPress Article').item.json.id }}",
        "operation": "update",
        "updateFields": {
          "content": "=<!-- wp:audio {\"id\":{{ $json.id }}} -->\n<figure class=\"wp-block-audio\"><audio controls src=\"{{ $json.guid.rendered }}\"></audio><figcaption class=\"wp-element-caption\">\ud83d\udde3\ufe0f Listen to the summary or transcription. \ud83d\udc46</figcaption></figure>\n<!-- /wp:audio --><br>{{ $('Retrieve WordPress Article').item.json.content.rendered }}"
        }
      },
      "credentials": {
        "wordpressApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "5297d517-5dd9-4d4d-b201-0822af030c95",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1320,
        -340
      ],
      "parameters": {
        "color": 6,
        "width": 660,
        "height": 1000,
        "content": "## \ud83c\udf99\ufe0f Generate Text-to-Speech Using Eleven Labs via API\n\nSince there is no predefined node for Eleven Labs in n8n, we will use the **HTTP Request** module.\n\n### \ud83d\udee0\ufe0f Prerequisites:\n1. **Get an API Key**: Visit [Eleven Labs](https://try.elevenlabs.io/text-audio) to obtain your API key.\n2. **Choose a Suitable Voice**: Test different voices on [this demo page](https://try.elevenlabs.io/text-audio) to find the best fit for your use case.\n3. **Select the Right Model**: For multilingual usage, use:  \n   ~~~json\n   \"model_id\": \"eleven_multilingual_v2\"\n   ~~~\n4. **Set Output Format**: You can adjust the quality by modifying `output_format`, for example:  \n   ~~~json\n   \"output_format\": \"mp3_44100_128\"\n   ~~~\n\n\ud83d\udcd6 Refer to the full API documentation: [API Reference - Eleven Labs](https://try.elevenlabs.io/api-reference-text-to-speech)\n\n---\n## \ud83d\ude80 Step 1: Configure API Credentials in n8n\n\nAdd a custom authentication entry in n8n with the following structure: \n\n(Replace `\"your-elevenlabs-api-key\"` with your **actual API key**)\n\n~~~json\n{\n  \"headers\": {\n    \"xi-api-key\": \"your-elevenlabs-api-key\"\n  }\n}\n~~~\n---\n\n## \ud83d\udce9 Step 2: Send a POST Request to the API\n\nMake an HTTP POST request to the **webhook** of your workflow with the following parameters:\n\n- **`voice_id`**: The ID of the selected voice.\n- **`text`**: The text to convert into speech.\n\n---"
      },
      "typeVersion": 1
    },
    {
      "id": "8fecbb98-8120-4d94-82ce-15efa063394b",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        640,
        -340
      ],
      "parameters": {
        "width": 460,
        "height": 280,
        "content": "# Modify This Prompt\n\nHere you can modify this prompt. It is interesting because the neutral node might return HTML, and using a ChatGPT node allows you to clean or customize the output before sending it to text-to-speech.\n\nIn the example provided, I requested a summary. However, you could ask for the benefits or product advantages when using it for e-commerce or affiliate marketing. You could also request the full transcription of the article."
      },
      "typeVersion": 1
    },
    {
      "id": "06e66119-2b95-416b-8167-41dccbbd8612",
      "name": "OpenAI Chat Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        640,
        220
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4o-mini"
        },
        "options": {}
      },
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "47821853-b8f5-45f3-8e37-66365ba62422",
      "name": "settings",
      "type": "n8n-nodes-base.set",
      "position": [
        220,
        0
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "10c07d50-1310-4dd7-a143-b0c0e5cf1b70",
              "name": "site_url",
              "type": "string",
              "value": "https://mydomain.com/"
            }
          ]
        }
      },
      "typeVersion": 3.4
    }
  ],
  "connections": {
    "settings": {
      "main": [
        [
          {
            "node": "Retrieve WordPress Article",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Upload MP3": {
      "main": [
        [
          {
            "node": "Update WordPress Post",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Generate Speech": {
      "main": [
        [
          {
            "node": "Upload MP3",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "Generate Summary or Transcription",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Retrieve WordPress Article": {
      "main": [
        [
          {
            "node": "Generate Summary or Transcription",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Generate Summary or Transcription": {
      "main": [
        [
          {
            "node": "Generate Speech",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "When clicking \u2018Test workflow\u2019": {
      "main": [
        [
          {
            "node": "settings",
            "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

This workflow automates the process of summarizing or transcribing a WordPress article, converting the text into speech using Eleven Labs API, and uploading the resulting MP3 file back to WordPress.

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

More Content & Video workflows → · Browse all categories →

Related workflows

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

Content & Video

WP. Uses openAi, outputParserStructured, chainLlm, httpRequest. Event-driven trigger; 63 nodes.

OpenAI, Output Parser Structured, Chain Llm +8
Content & Video

Enrich Faq Sections On Your Website Pages At Scale With Ai. Uses manualTrigger, lmChatOpenAi, splitInBatches, splitOut. Event-driven trigger; 36 nodes.

OpenAI Chat, Google Drive, Google Sheets +6
Content & Video

Strapi Splitout. Uses manualTrigger, lmChatOpenAi, splitInBatches, splitOut. Event-driven trigger; 36 nodes.

OpenAI Chat, Google Drive, Google Sheets +6
Content & Video

2434. Uses lmChatOpenAi, googleDrive, googleSheets, executeWorkflowTrigger. Event-driven trigger; 36 nodes.

OpenAI Chat, Google Drive, Google Sheets +6
Content & Video

This n8n workflow template lets you easily generate comprehensive FAQ (Frequently Asked Questions) content for multiple services (or any items or pages you need to add the FAQs to). Simply provide the

OpenAI Chat, Google Drive, Google Sheets +6