AutomationFlowsContent & Video › WordPress Article to Audio Summary

WordPress Article to Audio Summary

Original n8n title: Manual Wordpress

Manual Wordpress. Uses manualTrigger, wordpress, chainLlm, httpRequest. Event-driven trigger; 10 nodes.

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

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

How this works

This workflow transforms your WordPress articles into engaging audio content by automatically generating summaries or transcriptions and converting them into MP3 files for easy upload and sharing. It's ideal for content creators, bloggers, or podcasters who want to repurpose written posts into spoken formats without manual effort, saving hours on production. The key step involves using ChainLLM to craft a concise audio script from the retrieved article, followed by an HTTP request to generate the speech, which then updates the post with the new audio asset via WordPress integration.

Use this workflow when you need quick audio versions of new or existing posts to boost accessibility and audience reach, such as for newsletters or social media. Avoid it for very short articles under 200 words, where the summary might feel redundant, or if you require custom voices beyond basic text-to-speech options. Common variations include skipping the summary for direct transcription or integrating with email services to notify subscribers of the new audio release.

About this workflow

Manual Wordpress. Uses manualTrigger, wordpress, chainLlm, httpRequest. Event-driven trigger; 10 nodes.

Source: https://github.com/Zie619/n8n-workflows — 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