Back to templates
Content & AI

YouTube to Blog Post Converter

Transform YouTube videos into SEO-optimized blog posts with transcription and AI-powered content generation.

YouTube
Whisper
OpenAI
Content
SEO
Blog
Transcription

About this template

Turn your YouTube videos into engaging blog content automatically. This workflow downloads audio from YouTube videos, transcribes them using OpenAI Whisper, and uses GPT-4 to transform the transcript into a well-structured, SEO-optimized blog post. Includes automatic headline generation, meta descriptions, and formatting for your CMS. Perfect for content creators who want to maximize their video content.

Workflow JSON

{
  "name": "YouTube to Blog Post Converter",
  "nodes": [
    {
      "parameters": {
        "content": "## Template by Harshith Vaddiparthy\n\n\n**Learn to Build AI Automations**\nMaster n8n, AI agents, and no-code automation in my comprehensive course.\n→ harshith.com/vibecode\n\n\n**Content Automation Consulting**\nI help businesses automate video creation, social media, blogs, and newsletters.\n→ harshith.com/meet\n\n\n**Connect with me**\n→ linkedin.com/in/harshith-vaddiparthy",
        "height": 420,
        "width": 400,
        "color": 4
      },
      "id": "promo-sticky",
      "name": "Sticky Note - Credits",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -500,
        -200
      ],
      "typeVersion": 1
    },
    {
      "parameters": {
        "path": "youtube-to-blog",
        "options": {},
        "httpMethod": "POST",
        "responseMode": "responseNode"
      },
      "id": "webhook",
      "name": "Webhook",
      "type": "n8n-nodes-base.webhook",
      "position": [
        0,
        100
      ],
      "webhookId": "youtube-blog-webhook",
      "typeVersion": 2
    },
    {
      "parameters": {
        "url": "=https://www.youtube.com/watch?v={{ $json.body.videoId }}",
        "options": {}
      },
      "id": "get-video-info",
      "name": "Get Video Info",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        200,
        100
      ],
      "typeVersion": 4.2
    },
    {
      "parameters": {
        "command": "=yt-dlp -x --audio-format mp3 -o '/tmp/{{ $json.body.videoId }}.%(ext)s' 'https://www.youtube.com/watch?v={{ $json.body.videoId }}'"
      },
      "id": "download-audio",
      "name": "Download Audio",
      "type": "n8n-nodes-base.executeCommand",
      "position": [
        400,
        100
      ],
      "typeVersion": 1
    },
    {
      "parameters": {
        "resource": "audio",
        "operation": "transcribe",
        "binaryPropertyName": "={{ $json.body.videoId }}.mp3",
        "options": {}
      },
      "id": "transcribe",
      "name": "Transcribe with Whisper",
      "type": "@n8n/n8n-nodes-langchain.openAi",
      "position": [
        600,
        100
      ],
      "credentials": {
        "openAiApi": {
          "id": "YOUR_OPENAI_CREDENTIAL_ID",
          "name": "OpenAI"
        }
      },
      "typeVersion": 1.8
    },
    {
      "parameters": {
        "text": "=Transform this video transcript into a well-structured, SEO-optimized blog post.\n\nVideo Title: {{ $('Webhook').item.json.body.videoTitle }}\n\nTranscript:\n{{ $json.text }}\n\nCreate:\n1. An engaging headline (H1)\n2. A meta description (160 characters max)\n3. 3-5 subheadings (H2) with content\n4. A conclusion with call-to-action\n5. 5 relevant tags/keywords\n\nFormat the output as JSON with these fields: title, metaDescription, content (HTML), tags (array)",
        "modelId": {
          "__rl": true,
          "value": "gpt-4o",
          "mode": "list"
        },
        "options": {
          "temperature": 0.7,
          "responseFormat": "json_object"
        }
      },
      "id": "generate-blog",
      "name": "Generate Blog Post",
      "type": "@n8n/n8n-nodes-langchain.openAi",
      "position": [
        800,
        100
      ],
      "credentials": {
        "openAiApi": {
          "id": "YOUR_OPENAI_CREDENTIAL_ID",
          "name": "OpenAI"
        }
      },
      "typeVersion": 1.8
    },
    {
      "parameters": {
        "options": {}
      },
      "id": "respond-webhook",
      "name": "Respond to Webhook",
      "type": "n8n-nodes-base.respondToWebhook",
      "position": [
        1000,
        100
      ],
      "typeVersion": 1.1
    },
    {
      "parameters": {
        "content": "## YouTube to Blog Converter\n\n### Setup:\n1. Install yt-dlp on your n8n server\n2. Configure OpenAI credentials\n3. Send POST request with videoId and videoTitle\n\n### Flow:\n1. Receives video ID via webhook\n2. Downloads audio using yt-dlp\n3. Transcribes with Whisper\n4. Generates blog post with GPT-4\n5. Returns JSON with blog content\n\n### Integration:\n- Connect to WordPress, Ghost, or Notion\n- Add scheduling for automatic posting\n- Include featured image generation",
        "height": 360,
        "width": 400,
        "color": 7
      },
      "id": "info-sticky",
      "name": "Info",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -500,
        40
      ],
      "typeVersion": 1
    }
  ],
  "connections": {
    "Webhook": {
      "main": [
        [
          {
            "node": "Get Video Info",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get Video Info": {
      "main": [
        [
          {
            "node": "Download Audio",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Download Audio": {
      "main": [
        [
          {
            "node": "Transcribe with Whisper",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Transcribe with Whisper": {
      "main": [
        [
          {
            "node": "Generate Blog Post",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Generate Blog Post": {
      "main": [
        [
          {
            "node": "Respond to Webhook",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "pinData": {},
  "meta": {
    "instanceId": "template-youtube-blog"
  }
}

Copy this JSON and import it into n8n via Settings → Import from File/URL → Paste JSON

Free n8n Automation Templates | Production-Ready Workflows | Harshith Vaddiparthy