n8n + n8n: YouTube to SEO Blog Post — Auto-Publish with GPT-4o & Whisper
You record a solid YouTube video — a tutorial, a product walkthrough, a webinar — and it earns views for a week, then dies in the algorithm. Meanwhile the transcript inside it, the exact content your
You record a solid YouTube video — a tutorial, a product walkthrough, a webinar — and it earns views for a week, then dies in the algorithm. Meanwhile the transcript inside it, the exact content your audience searches Google for, never becomes a page that ranks. The gap between "video published" and "article ranking" is manual work no busy team ever gets to: pulling the transcript, cleaning filler words, restructuring it into a readable post, writing a title and meta description, and pushing it live to WordPress. That gap is where your organic traffic leaks. This article shows how to close it with a single n8n workflow that turns a pasted YouTube URL into a published, SEO-structured blog post in under three minutes.
The problem: your best content is trapped in video
Video and search are two different distribution systems. YouTube ranks watch time and thumbnails; Google ranks structured text, headings, and internal links. A 12-minute tutorial can contain 2,000 words of high-intent, keyword-dense content — "how to connect Stripe to a Google Sheet," "fixing a webhook 404" — but Google can't index the spoken words the way it indexes an article. So you pay twice: once to produce the video, and again in lost traffic because the same content never exists in a crawlable format.
The manual fix is real work. A decent repurposing pass is 45–90 minutes per video: copy the auto-caption (often garbage), strip "um" and "so basically," reorganize rambling speech into sections, add H2s, write a title that isn't clickbait, generate a meta description, find a featured image, and format everything for your CMS. At any real publishing cadence — even two videos a week — that's a part-time job nobody on a lean team has. So it doesn't happen, and the content stays trapped.
The solution: one workflow, transcript to published post
The fix is a pipeline that treats the video as raw input and the published article as output, with zero human steps in between. Paste a URL, get a post. The workflow does four things in sequence: extracts the audio and transcribes it with Whisper (far more accurate than YouTube's auto-captions, especially for technical terms and accented speech), rewrites the raw transcript into a structured 1,500-word article with GPT-4o, generates SEO metadata (title, slug, meta description, tags), and publishes the finished HTML straight to WordPress via its REST API.
Whisper matters here more than people expect. YouTube's auto-captions mangle product names, code syntax, and anything domain-specific — and if your transcript says "n eight n" instead of "n8n," every downstream step inherits the error. Whisper transcribes from the actual audio, so "PostgreSQL," "OAuth2," and "npx" survive. GPT-4o then does the heavy lifting the transcript can't do itself: it's a spoken monologue, not an article, so the model restructures it into a lead paragraph, logical H2 sections, and a conclusion — while preserving the technical substance instead of summarizing it into mush.
Step-by-step: building it in n8n
The whole thing is roughly eight nodes. Here's the exact chain and the configuration that matters at each step.
1. Trigger — Form or Webhook. Use n8n's Form Trigger node with a single field, youtube_url, so you (or a teammate) can paste a link from any browser. If you'd rather fire it from another system, swap in a Webhook node and POST the URL as JSON. Keep the input to one field — the workflow derives everything else.
2. Fetch audio. Use an Execute Command node running yt-dlp to pull the audio stream only: yt-dlp -x --audio-format mp3 -o "/tmp/{{$json.video_id}}.mp3" "{{$json.youtube_url}}". Audio-only keeps the file small and the Whisper cost low. Parse the video ID first with a small Set or Code node using a regex on the URL so your filenames and later canonical links stay clean.
3. Transcribe with Whisper. Add the OpenAI node, resource Audio, operation Transcribe. Point it at the MP3 from the previous node (pass it as binary data). Set the language if you know it — forcing language: en stops Whisper from guessing on quiet intros. The node returns the full transcript as text in one field. If your videos run long (over ~25 min / 25MB), add an Execute Command step with ffmpeg to split the audio into chunks, transcribe each, and concatenate — otherwise you'll hit the file-size limit.
4. Rewrite with GPT-4o. Add another OpenAI node, resource Chat, model gpt-4o. Your system prompt is the whole game: instruct it to act as an SEO editor, convert the transcript into a 1,400–1,600 word article, open with value (no "in this video"), use <h2> section tags, preserve every technical detail, and return clean HTML only. Set temperature to around 0.4 — low enough to stay faithful to the source, high enough to read like prose and not a transcript. Ask for the body and metadata in one structured JSON response (title, meta_description, slug, tags, html_body) so you don't need a second model call.
5. Parse and validate. Drop in a Code node to JSON.parse the model output and guard against malformed responses — check that html_body exists and the word count is in range. If it fails, route to an IF node that retries the GPT-4o call once rather than publishing an empty post.
6. Publish to WordPress. Use the native WordPress node (or an HTTP Request node hitting POST /wp-json/wp/v2/posts with application-password auth). Map title, content (the HTML body), slug, and status. Set status to draft for the first dozen runs so you can eyeball quality, then flip to publish once you trust the output. Map the tags and set the Yoast/RankMath meta description via the post's meta fields if your SEO plugin exposes them through the REST API.
7. Notify. End with a Slack or email node returning the live post URL, so whoever pasted the link gets confirmation without opening WordPress.
Why this pays off
The obvious win is time: 60–90 minutes of manual repurposing collapses to a paste and a three-minute wait. But the compounding win is coverage. Every video you've ever published is now a candidate article — a back catalog of 40 videos becomes 40 indexable pages in an afternoon of pasting, each targeting the long-tail queries your niche actually searches. That's the difference between publishing content and owning a search footprint.
The economics are trivial next to the output. A 12-minute video costs a few cents of Whisper transcription plus a GPT-4o call in the low tens of cents — call it under $0.50 per finished article, versus the hour of skilled labor it replaces. And because Whisper reads the real audio, the technical accuracy is high enough that your posts rank for the specific terms your competitors' auto-captioned junk never surfaces. You also get a virtuous loop: the published article links back to the video, feeding YouTube watch time from search traffic you couldn't capture before.
Common pitfalls — and how to avoid them
Publishing straight to live. Don't. Run status: draft until you've reviewed ten posts and tuned the prompt. GPT-4o occasionally over-summarizes a dense section; you want to catch that before Google does.
Whisper file limits. The single biggest failure point on long videos is the 25MB transcription cap. Build the ffmpeg chunk-and-merge step early even if your current videos are short — you'll add it eventually, and retrofitting it into a live workflow is painful.
Thin, transcript-flavored output. If posts read like someone talking, your temperature is too low or your prompt is too weak. Explicitly instruct GPT-4o to remove filler, merge tangents, and write in article voice — and give it a hard word-count floor so it doesn't just lightly edit the transcript.
Duplicate-content risk. If you also publish the raw transcript somewhere (YouTube description, a captions file on your site), Google may see near-duplicates. Keep the article as the canonical version and don't post the raw transcript publicly.
WordPress auth failures. Use an application password, not your main login, and confirm the REST API isn't blocked by a security plugin — a silent 401 here is the most common "it ran but nothing published" bug. Log the API response in your Code node so you can see it fail instead of guessing.
Build this once and every future video publishes itself twice — as a watch and as a page that ranks while you sleep.
Ja construimos isso pra voce
Nao comece do zero. O YouTube to SEO Blog Post — Auto-Publish with GPT-4o & Whisper e um workflow n8n pronto para instalar — conecta suas ferramentas em minutos, sem codigo.
Instalar por $49.0 →