AutomationFlowsContent & Video › Generate Blog Posts From Youtube Videos with Openai Gpt for Wordpress & Webflow

Generate Blog Posts From Youtube Videos with Openai Gpt for Wordpress & Webflow

ByDahiana @mssporto on n8n.io

Who's it for: Content creators, marketers, and businesses who publish on both YouTube and blog platforms.

Cron / scheduled trigger★★★★☆ complexityAI-powered21 nodesWordPressWebflowTelegramRSS Feed ReadYouTubeOpenAI
Content & Video Trigger: Cron / scheduled Nodes: 21 Complexity: ★★★★☆ AI nodes: yes Added:

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

This workflow follows the OpenAI → Telegram 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": "STYgmx1IQLxQcLcA",
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "name": "Auto-generate blog posts from YouTube videos to WordPress and Webflow (TEMPLATE)",
  "tags": [
    {
      "id": "T3xhK1cIuPex0boX",
      "name": "Templates",
      "createdAt": "2025-09-03T11:06:03.839Z",
      "updatedAt": "2025-09-03T11:06:03.839Z"
    }
  ],
  "nodes": [
    {
      "id": "f33a19fb-1da8-434e-a6f4-aaa8e346f510",
      "name": "Extract Video Data",
      "type": "n8n-nodes-base.set",
      "position": [
        96,
        48
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "video_title",
              "name": "videoTitle",
              "type": "string",
              "value": "={{ $json.snippet.title }}"
            },
            {
              "id": "video_url",
              "name": "videoUrl",
              "type": "string",
              "value": "={{ $('Monitor YouTube Feed').item.json.link }}"
            },
            {
              "id": "video_id",
              "name": "videoId",
              "type": "string",
              "value": "={{ $json.id }}"
            },
            {
              "id": "thumbnail_url",
              "name": "thumbnailUrl",
              "type": "string",
              "value": "={{ $json.snippet.thumbnails.maxres.url }}"
            },
            {
              "id": "4125ae80-9be8-4281-9012-c217ee413c05",
              "name": "videoDescription",
              "type": "string",
              "value": "={{ $json.snippet.description }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "92ed5826-54c7-4f20-b017-62fa6cb3f5cc",
      "name": "Format Blog Post",
      "type": "n8n-nodes-base.set",
      "position": [
        672,
        48
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "blog_title",
              "name": "blogTitle",
              "type": "string",
              "value": "={{ $json.message.content.match(/#\\s*(.+)/)[1].trim() }}\n"
            },
            {
              "id": "blog_content",
              "name": "blogContent",
              "type": "string",
              "value": "={{ $json.message.content.replace(/```(?:\\w+)?\\n?/, '').replace(/```$/, '').trim() }}"
            },
            {
              "id": "blog_slug",
              "name": "blogSlug",
              "type": "string",
              "value": "={{ $('Extract Video Data').item.json.videoTitle.toLowerCase().replace(/[^a-z0-9]/g, '-').replace(/-+/g, '-').replace(/^-|-$/g, '') }}"
            },
            {
              "id": "featured_image",
              "name": "featuredImage",
              "type": "string",
              "value": "={{ $('Extract Video Data').item.json.thumbnailUrl }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "492fca15-3711-4357-b5d1-8d68e4b11ee5",
      "name": "Publish to WordPress",
      "type": "n8n-nodes-base.wordpress",
      "onError": "continueErrorOutput",
      "maxTries": 2,
      "position": [
        1136,
        -112
      ],
      "parameters": {
        "title": "={{ $json.blogTitle }}",
        "additionalFields": {
          "slug": "={{ $json.blogSlug }}",
          "tags": [
            6
          ],
          "content": "={{ $json.data }}",
          "categories": [
            5
          ]
        }
      },
      "credentials": {
        "wordpressApi": {
          "name": "<your credential>"
        }
      },
      "notesInFlow": false,
      "retryOnFail": false,
      "typeVersion": 1,
      "alwaysOutputData": false
    },
    {
      "id": "886d2a08-c897-4b6e-a517-71a30acc5230",
      "name": "Publish to Webflow",
      "type": "n8n-nodes-base.webflow",
      "onError": "continueErrorOutput",
      "position": [
        1120,
        240
      ],
      "parameters": {
        "siteId": "653a17a1b31a397763f3ce40",
        "fieldsUi": {
          "fieldValues": [
            {
              "fieldId": "name",
              "fieldValue": "={{ $json.blogTitle }}"
            },
            {
              "fieldId": "page-content",
              "fieldValue": "={{ $json.data }}"
            },
            {
              "fieldId": "slug",
              "fieldValue": "={{ $json.blogSlug }}"
            },
            {
              "fieldId": "featured-image",
              "fieldValue": "={{ $json.featuredImage }}"
            }
          ]
        },
        "operation": "create",
        "collectionId": "68c01d34f15ae8b8c30ead31"
      },
      "credentials": {
        "webflowOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2
    },
    {
      "id": "d3f9bbb3-5eb6-4b87-9e0d-8ea7001e139a",
      "name": "Workflow Info",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1296,
        -496
      ],
      "parameters": {
        "width": 350,
        "height": 1072,
        "content": "# Information\n\n**Who's it for:** Content creators, marketers, and businesses who publish on both YouTube and blog platforms.\n\n**What it does:** Monitors your YouTube channel for new videos and automatically creates SEO-optimized blog posts using AI, then publishes to WordPress or Webflow.\n\n**How it works:**\n1. RSS Feed Trigger polls YouTube every X amount of time\n2. Extracts video metadata (title, description, thumbnail)\n3. YouTube node extracts full description for extra context\n4. Uses OpenAI (you can choose any model) to generate 600-800 word blog post\n5. Publishes to WordPress AND/OR Webflow with error handling\n6. Sends notifications to Telegram if publishing fails\n\n**Requirements:**\n- YouTube channel ID (avoid tutorial channels for better results)\n- OpenAI API key\n- WordPress OR Webflow credentials\n- Telegram bot (optional, for error notifications)\n\n**Setup steps:**\n1. Replace `YOUR_CHANNEL_ID` in RSS Feed Trigger\n2. Add OpenAI credentials in AI generation node\n3. Configure WordPress and/or Webflow credentials\n4. Add Telegram bot for error notifications (optional)\n5. Test with manual execution first\n\n**Customization:**\n- Modify AI prompt for different content styles\n- Adjust polling frequency (30-60 minutes recommended)\n- Add more CMS platforms\n- Add content verification (is content larger than 600 characters? if not, improve)"
      },
      "typeVersion": 1
    },
    {
      "id": "b01b6aac-9da4-4be7-bcdd-0b4d9d833679",
      "name": "Extract Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        64,
        -112
      ],
      "parameters": {
        "color": 7,
        "width": 180,
        "height": 320,
        "content": "Extracts video title, description, URL, thumbnail. Creates clean slug for blog post."
      },
      "typeVersion": 1
    },
    {
      "id": "e691bd51-6c31-4b1a-9d84-284a034bc10c",
      "name": "AI Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        304,
        -128
      ],
      "parameters": {
        "color": 7,
        "width": 260,
        "height": 336,
        "content": "Uses OpenAI to create comprehensive blog post with proper structure and engaging content."
      },
      "typeVersion": 1
    },
    {
      "id": "3a24524a-7ef9-468c-a962-e8875da10540",
      "name": "Format Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        640,
        -128
      ],
      "parameters": {
        "color": 7,
        "width": 180,
        "height": 368,
        "content": "Cleans up AI response and prepares final blog post structure."
      },
      "typeVersion": 1
    },
    {
      "id": "7dce235b-13dc-4d69-8914-387642105549",
      "name": "Publish Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1088,
        -256
      ],
      "parameters": {
        "color": 7,
        "width": 200,
        "height": 692,
        "content": "Publishes to WordPress and/or Webflow. Error handling ensures workflow continues if one platform fails."
      },
      "typeVersion": 1
    },
    {
      "id": "b9d5764a-2718-4c15-888f-4908ee35ef1c",
      "name": "Send Error Notification",
      "type": "n8n-nodes-base.telegram",
      "position": [
        1456,
        -208
      ],
      "parameters": {
        "text": "=\u274c Blog post creation failed on Wordpress!\n\nVideo: {{ $('Get video details').item.json.snippet.title }}\nError: {{ $json.error }}\nTime: {{ $now }}",
        "chatId": "=CHAT_ID",
        "additionalFields": {
          "appendAttribution": false
        }
      },
      "credentials": {
        "telegramApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "7118630c-981e-4103-ac8b-acd62d3d084c",
      "name": "Extract Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -176,
        -96
      ],
      "parameters": {
        "color": 7,
        "width": 180,
        "height": 320,
        "content": "Uses Video ID to extract full description for extra context"
      },
      "typeVersion": 1
    },
    {
      "id": "284f96ec-094b-416b-8e51-22bba9190b14",
      "name": "Format Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        848,
        -64
      ],
      "parameters": {
        "color": 7,
        "width": 180,
        "height": 304,
        "content": "Formats Markdown to HTML for Webflow and WordPress"
      },
      "typeVersion": 1
    },
    {
      "id": "9223ad51-d408-4348-964c-778f1efeea56",
      "name": "Weekly RSS Check",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        -800,
        128
      ],
      "parameters": {
        "rule": {
          "interval": [
            {
              "field": "weeks",
              "triggerAtDay": [
                1
              ],
              "triggerAtHour": 21
            }
          ]
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "4b99efde-5648-4962-a0ef-e97f34b1283e",
      "name": "Monitor YouTube Feed",
      "type": "n8n-nodes-base.rssFeedRead",
      "position": [
        -576,
        128
      ],
      "parameters": {
        "url": "https://www.youtube.com/feeds/videos.xml?channel_id=UXXXXXXXXX",
        "options": {}
      },
      "executeOnce": false,
      "typeVersion": 1.2
    },
    {
      "id": "152dffb6-38bb-4f83-bbf6-bfd7d1736969",
      "name": "Get video details",
      "type": "n8n-nodes-base.youTube",
      "position": [
        -128,
        48
      ],
      "parameters": {
        "options": {},
        "videoId": "={{ $json.link.split('=')[1] }}",
        "resource": "video",
        "operation": "get"
      },
      "credentials": {
        "youTubeOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "dd501db5-689c-47b3-94f1-c4c3d1bcd181",
      "name": "Process Each Video",
      "type": "n8n-nodes-base.splitInBatches",
      "position": [
        -352,
        128
      ],
      "parameters": {
        "options": {}
      },
      "typeVersion": 3
    },
    {
      "id": "4e0a8146-ed68-4301-b698-ea539c83382b",
      "name": "AI Blog Generator",
      "type": "@n8n/n8n-nodes-langchain.openAi",
      "position": [
        320,
        48
      ],
      "parameters": {
        "modelId": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4.1-mini",
          "cachedResultName": "GPT-4.1-MINI"
        },
        "options": {
          "temperature": 0.7
        },
        "messages": {
          "values": [
            {
              "content": "=Write a comprehensive blog post about this YouTube video:\n\nVideo Title: {{ $json.videoTitle }}\nVideo Description: {{ $json.videoDescription }}\nVideo URL: {{ $json.videoUrl }}\n\nCreate a blog post that:\n1. Has an engaging headline (different from video title)\n2. Includes compelling introduction\n3. Summarizes key points from the video\n4. Adds valuable insights and context\n5. Uses relevant subheadings (## for H2)\n6. Ends with call-to-action to watch the video\n7. Is 600-800 words\n8. Uses conversational, engaging tone\n9. Targets no-code developers and Bubble.io users\n\nImportant: Format in markdown with proper structure."
            },
            {
              "role": "system",
              "content": "=You are an expert content writer who creates engaging blog posts from YouTube videos across all topics and industries. \n\nWrite in a conversational, accessible tone that educates and engages readers regardless of subject matter. Focus on extracting key insights, providing context, and making complex topics understandable.\n\nAlways structure content with clear headings, actionable takeaways, and encourage readers to watch the original video for the complete experience."
            }
          ]
        }
      },
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.8
    },
    {
      "id": "eb5d8c55-3806-4e7f-bbc7-7d41879a0ad1",
      "name": "Convert to HTML",
      "type": "n8n-nodes-base.markdown",
      "position": [
        896,
        48
      ],
      "parameters": {
        "mode": "markdownToHtml",
        "options": {},
        "markdown": "={{ $json.blogContent }}"
      },
      "typeVersion": 1
    },
    {
      "id": "9313716b-396f-417d-a0de-3dc8b6921c2f",
      "name": "Rate Limit Delay",
      "type": "n8n-nodes-base.wait",
      "position": [
        1712,
        96
      ],
      "parameters": {},
      "typeVersion": 1.1
    },
    {
      "id": "375eae45-91ea-4057-b704-768a862137f4",
      "name": "Send Error Alert",
      "type": "n8n-nodes-base.telegram",
      "position": [
        1472,
        464
      ],
      "parameters": {
        "text": "=\u274c Blog post creation failed on Webflow!\n\nVideo: {{ $('Get video details').item.json.snippet.title }}\nError: {{ $json.error }}\nTime: {{ $now }}",
        "chatId": "=CHAT_ID",
        "additionalFields": {
          "appendAttribution": false
        }
      },
      "credentials": {
        "telegramApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "e4d69452-8b9c-48c4-bb64-0af2bc4e9e51",
      "name": "Publish Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1408,
        -368
      ],
      "parameters": {
        "color": 7,
        "width": 216,
        "height": 1012,
        "content": "Optional: You can just leave one notification node"
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "35df95f2-f10f-4625-aafe-6a09a9a0dcda",
  "connections": {
    "Convert to HTML": {
      "main": [
        [
          {
            "node": "Publish to WordPress",
            "type": "main",
            "index": 0
          },
          {
            "node": "Publish to Webflow",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Format Blog Post": {
      "main": [
        [
          {
            "node": "Convert to HTML",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Rate Limit Delay": {
      "main": [
        [
          {
            "node": "Process Each Video",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Weekly RSS Check": {
      "main": [
        [
          {
            "node": "Monitor YouTube Feed",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "AI Blog Generator": {
      "main": [
        [
          {
            "node": "Format Blog Post",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get video details": {
      "main": [
        [
          {
            "node": "Extract Video Data",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Extract Video Data": {
      "main": [
        [
          {
            "node": "AI Blog Generator",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Process Each Video": {
      "main": [
        [],
        [
          {
            "node": "Get video details",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Publish to Webflow": {
      "main": [
        [
          {
            "node": "Rate Limit Delay",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Send Error Alert",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Monitor YouTube Feed": {
      "main": [
        [
          {
            "node": "Process Each Video",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Publish to WordPress": {
      "main": [
        [
          {
            "node": "Rate Limit Delay",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Send Error Notification",
            "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

Who's it for: Content creators, marketers, and businesses who publish on both YouTube and blog platforms.

Source: https://n8n.io/workflows/10046/ — 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

Content creators, media teams, and bloggers who run a YouTube channel and want to automatically repurpose video content into SEO-ready blog posts — without manual writing. Ideal for anyone publishing

HTTP Request, Google Sheets, Google Docs +7
Content & Video

This workflow automates reviews, comments, and content enhancements for WordPress and WooCommerce using AI. It includes five independent paths that you can run manually or schedule automatically.

WordPress, HTTP Request, OpenAI
Content & Video

This workflow automates the end-to-end process of generating and publishing blog posts from live news headlines.

HTTP Request, RSS Feed Read, OpenAI
Content & Video

Description: This workflow fully automates your blog publishing process using n8n, AI, and WordPress. It pulls blog data from Google Sheets, generates SEO-optimized content with AI, creates feature im

XML, WordPress, Google Sheets +4
Content & Video

Automatically convert your WordPress articles into multilingual voiceovers with professional-quality audio. Want to add audio versions of your WordPress posts? Looking for a workflow that is fully aut

WordPress, Google Sheets, OpenAI +2