Convertir des vidéos YouTube en articles SEO avec Supadata, Claude Sonnet 4 et WordPress
Ceci est unContent Creation, Multimodal AIworkflow d'automatisation du domainecontenant 22 nœuds.Utilise principalement des nœuds comme Set, Code, Wait, Filter, YouTube. Transformer des vidéos YouTube en articles SEO avec Supadata, Claude Sonnet 4 et WordPress
- •Peut nécessiter les informations d'identification d'authentification de l'API cible
- •Clé API Anthropic
Nœuds utilisés (22)
Catégorie
{
"meta": {
"instanceId": "76f89f83c161d3dc4a2a2307b8474c26e91222cc4714d0dbc0ef5a91b47e83d1"
},
"nodes": [
{
"id": "e457294a-498f-4eff-864e-358896831040",
"name": "Lors du clic sur 'Test workflow'",
"type": "n8n-nodes-base.manualTrigger",
"position": [
-1936,
1312
],
"parameters": {},
"typeVersion": 1
},
{
"id": "373070c8-4022-4047-9dcb-0577b83d7b48",
"name": "Boucler sur les éléments 1",
"type": "n8n-nodes-base.splitInBatches",
"position": [
-1344,
1120
],
"parameters": {
"options": {}
},
"typeVersion": 3
},
{
"id": "64d7bce2-fcc4-4536-b49f-8a8130f5f0a9",
"name": "Boucler sur les éléments 2",
"type": "n8n-nodes-base.splitInBatches",
"position": [
-240,
1120
],
"parameters": {
"options": {}
},
"typeVersion": 3
},
{
"id": "383fefc1-cab4-4137-9dc0-1b7a37f7e9ca",
"name": "Anthropic Chat Model1",
"type": "@n8n/n8n-nodes-langchain.lmChatAnthropic",
"position": [
304,
1232
],
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "claude-sonnet-4-20250514",
"cachedResultName": "Claude Sonnet 4"
},
"options": {
"thinking": true
}
},
"typeVersion": 1.3
},
{
"id": "43bce4d5-588f-4be7-a400-d534bfe981ce",
"name": "Note adhésive",
"type": "n8n-nodes-base.stickyNote",
"position": [
-2000,
960
],
"parameters": {
"width": 1640,
"height": 560,
"content": "## Search New Videos"
},
"typeVersion": 1
},
{
"id": "7e5a3733-4ca7-4c59-a5cc-1b6f351080cb",
"name": "Note adhésive 1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-336,
960
],
"parameters": {
"color": 4,
"width": 440,
"height": 560,
"content": "## Get the Most Viral Video (based on number of likes, views and comments)"
},
"typeVersion": 1
},
{
"id": "d648a061-da1d-4746-91d3-0e0cc27d743b",
"name": "Note adhésive 2",
"type": "n8n-nodes-base.stickyNote",
"position": [
128,
960
],
"parameters": {
"color": 5,
"width": 940,
"height": 560,
"content": "## Write the Article and Post it to WordPress drafts"
},
"typeVersion": 1
},
{
"id": "244061f5-2f53-4da8-9333-968e6f982bab",
"name": "DÉFINIR les chaînes YOUTUBE",
"type": "n8n-nodes-base.set",
"position": [
-1744,
1120
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "71f75da1-ccba-429d-8bd3-3d6b6026b617",
"name": "Youtube channel 1",
"type": "string",
"value": "Youtube channel 1"
},
{
"id": "4a7773ad-ffd5-4f34-9a25-c6d66ef461c7",
"name": "Youtube channel 2",
"type": "string",
"value": "Youtube channel 2"
},
{
"id": "69408d6d-1fab-4a1a-b13b-e0aacd5ff131",
"name": "Youtube channel 3",
"type": "string",
"value": "Youtube channel 3 (add more if needed)"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "1bec1dc6-9f9e-4cd6-93c3-38617efa7af2",
"name": "Rechercher la chaîne Youtube",
"type": "n8n-nodes-base.httpRequest",
"position": [
-1168,
1328
],
"parameters": {
"url": "https://www.googleapis.com/youtube/v3/search",
"options": {},
"sendQuery": true,
"queryParameters": {
"parameters": [
{
"name": "part",
"value": "snippet"
},
{
"name": "q",
"value": "={{ $json.search }}"
},
{
"name": "type",
"value": "channel"
},
{
"name": "key",
"value": "ENTER YOUR API KEY"
},
{
"name": "regionCode",
"value": "US"
},
{
"name": "maxResults",
"value": "10"
}
]
}
},
"typeVersion": 4.2
},
{
"id": "47a94130-279b-4e34-9e25-faf9727c2baf",
"name": "Obtenir les vidéos de la chaîne YouTube",
"type": "n8n-nodes-base.youTube",
"position": [
-896,
1120
],
"parameters": {
"limit": 10,
"filters": {
"channelId": "={{ $json.items[0].id.channelId }}"
},
"options": {
"order": "date"
},
"resource": "video"
},
"typeVersion": 1
},
{
"id": "1fdb0605-1093-4dd3-a399-4631dcd664b5",
"name": "Supprimer les doublons",
"type": "n8n-nodes-base.removeDuplicates",
"position": [
-688,
1120
],
"parameters": {
"compare": "selectedFields",
"options": {},
"fieldsToCompare": "snippet.title"
},
"typeVersion": 2
},
{
"id": "e147fc1a-74c6-4266-a2f8-1d1d66a7941f",
"name": "Filtrer par date",
"type": "n8n-nodes-base.filter",
"position": [
-480,
1120
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "b18a01f3-a39b-40eb-8421-0a4efc565ff7",
"operator": {
"type": "number",
"operation": "gt"
},
"leftValue": "={{ $json.snippet.publishTime.toDateTime().toMillis() / 1000 }}",
"rightValue": "={{$now.toMillis() / 1000 - 216000}}"
}
]
}
},
"typeVersion": 2.2
},
{
"id": "d5fb7afd-8bf2-4c5f-835d-0aa93d665f4f",
"name": "Obtenir la vidéo YouTube",
"type": "n8n-nodes-base.youTube",
"position": [
-64,
1328
],
"parameters": {
"options": {},
"videoId": "={{ $json.id.videoId }}",
"resource": "video",
"operation": "get"
},
"typeVersion": 1
},
{
"id": "44491508-bc13-4024-83f6-eaed3ff91546",
"name": "Créer une transcription",
"type": "n8n-nodes-base.httpRequest",
"position": [
160,
1024
],
"parameters": {
"url": "https://api.supadata.ai/v1/youtube/transcript",
"options": {},
"sendQuery": true,
"sendHeaders": true,
"queryParameters": {
"parameters": [
{
"name": "videoId",
"value": "={{ $json.id }}"
},
{
"name": "text",
"value": "true"
}
]
},
"headerParameters": {
"parameters": [
{
"name": "X-API-KEY",
"value": "ENTER YOUR SUPADATA API KEY"
}
]
}
},
"typeVersion": 4.2
},
{
"id": "08243de1-24af-4b52-b266-cd9ec8a20f0f",
"name": "Composer l'article",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
352,
1024
],
"parameters": {
"text": "=You are an AI copywriter + SEO assistant. Convert a YouTube [CONTENT_TYPE] transcript into a natural, engaging, fully SEO-optimized article.\n\n🔽 INPUT DATA (variables)\n\nYouTube Transcript: {{ $json.content }}\nYouTube Video Description: {{ $('Get the most Viral Video').item.json.snippet.description }}\nPrimary Topic / Hook: {{ $('Get the most Viral Video').item.json.snippet.title }}\nTarget Keyword List: [TARGET_KEYWORD_LIST_PLACEHOLDER]\n(choose the best one as PRIMARY)\nInternal Links (optional): [INTERNAL_LINK_URL_PLACEHOLDER]\nLink to original video:https://www.youtube.com/watch?v={{ $('Get the most Viral Video').item.json.id }}\nAuthor Name: [AUTHOR_NAME_PLACEHOLDER]\n\n\n✅ TASKS\n\nRead the transcript + description and understand the plot.\nPick a PRIMARY keyword (exact phrase from list) that best matches the story.\nPick 2–3 SECONDARY keywords (variations/related from the list).\nWrite an engaging article (800–1000 words): conversational, [BRAND_TONE_ADJECTIVES], but factual; organize for SEO and readers.\nOutput ONLY valid HTML (no markdown, no schema, no HTML comments). Nothing else.\nSatisfy Technical SEO Checklist (below) and show all required elements.\n\n\n🧭 CONTENT STRATEGY\n\nHook first: Start with the [HOOK_STRATEGY] in ≤100 words, include PRIMARY keyword.\nContext: Who are the people (full names first mention), why it matters.\nFlow: Tell it like a story ([CONTENT_STRUCTURE_OPTIONS]). Use 2–3 specific H2s.\nQuotes: Paraphrase or quote brief impactful lines from transcript.\nAnswer user intent: [USER_INTENT_QUESTIONS].\nClose strong: Recap takeaway, tease related [CONTENT_CATEGORY] (internal link).\n\nTone: [BRAND_VOICE_DESCRIPTION]. Use words like [BRAND_SPECIFIC_VOCABULARY] when natural. Avoid fluff.\n\n🛠 TECHNICAL SEO CHECKLIST (MUST PASS)\n\nTitle (H1): 50–60 chars, PRIMARY keyword near start. One H1 only.\nMeta description: 150–160 chars, includes PRIMARY keyword, persuasive.\nSlug suggestion: short, lowercase, hyphenated; contains PRIMARY keyword (return it in a data-slug comment-less attribute on the <article> tag: data-slug=\"your-slug\").\nPRIMARY keyword placement: first 100 words, one H2, last paragraph (CTA), and once bolded.\nSECONDARY keywords: 2–3 sprinkled naturally (overall density <2%).\nSubheadings: H2 every ≤300 words; at least one H2 carries a SECONDARY keyword.\nReadability rules (aim to please Yoast/RankMath):\n\n≥30% sentences start with transition words (e.g., \"However\", \"Moreover\").\nPassive voice ≤10%.\nNo more than 2 consecutive sentences starting with the same word.\nParagraphs ≤150 words; avg sentence length ≤20 words.\n\n\nInternal link: ≥1 to my site with descriptive anchor (skip if none provided).\nExternal link: ≥1 authoritative source besides YouTube if possible; always include the original video with rel=\"nofollow\".\nTable of contents: simple <ul> with in-page anchors under a <nav id=\"toc\"> block.\nConclusion CTA: invite to [CTA_ACTION], reiterate PRIMARY keyword once.\nWord count: 650–950 words (stay in range if transcript is short).\nNo keyword stuffing: natural only.\n\n\nName Recognition Strategy:\n\nExtract all names from transcript, description and video title\nUse full names when first mentioned, then first names or nicknames. Avoid phrases like [AVOID_PHRASES_PLACEHOLDER]\nBuild character: Give readers context about who these people are in 1-2 sentences\nConnect the dots: Explain relationships between people involved\nTag relevant platforms: Mention their [RELEVANT_PLATFORMS] accounts when relevant\nActive voice always: \"[PERSON_A] called out [PERSON_B]\" not \"[PERSON_B] was called out\"\n\n📦 OUTPUT FORMAT (RETURN ONLY THIS)\n<!-- ====== START HTML OUTPUT ====== -->\n<h1>[TITLE with PRIMARY keyword]</h1>\n<meta name=\"description\" content=\"[150-160 char meta with PRIMARY keyword]\">\n<article data-slug=\"[your-slug]\">\n<p><strong>[PRIMARY keyword]</strong> … [intro hook ≤100 words]</p>\n<h2 id=\"sec-1\">[Subheading with a SECONDARY keyword]</h2>\n<p>...</p>\n<h2 id=\"sec-2\">[Names/platforms/context]</h2>\n<p>...</p>\n<h2 id=\"sec-3\">[Reactions/impact]</h2>\n<p>...</p>\n<p>Watch the original video <a href=\"\" rel=\"nofollow\">here</a>. [Optional extra external link]</p>\n<p>Related: <a href=\"[internal_link_url]\">[internal_link_title]</a></p>\n<p><strong>Final take:</strong> [Wrap-up with PRIMARY keyword once more + CTA]</p>\n</article>\n<!-- ====== END HTML OUTPUT ====== -->\n\n✅ SELF-CHECK BEFORE RETURNING\n\nDid I pick and state PRIMARY + SECONDARY keywords?\nTitle & meta within limits?\nPRIMARY keyword in: title, first 100 words, meta, one H2, image alt.\nInternal + external link present?\nImages present with alt?\n800–1000 words?\nOutput ONLY HTML? (No markdown, no explanations, no extra keyword highlights like \"**\".)\nValid HTML tags; no unclosed tags.\nNO MARKDOWN SYMBOLS ANYWHERE. DO NOT MARK INSERTED KEYWORDS WITH ANY SYMBOLS\nUse names and surnames whereever possible.\n\n\nNOTES\n\nIf transcript lacks names, use those in description/title; otherwise infer from topic but don't invent people.\nDon't be too formal. You write a blog about [CONTENT_NICHE], so the text must be [CONTENT_STYLE_REQUIREMENTS]\nNo defamatory claims: stick to transcript facts.\nIf any input is missing (e.g., internal links), skip gracefully but keep structure.",
"options": {
"systemMessage": "You are a seasoned, charismatic blogger"
},
"promptType": "define"
},
"typeVersion": 1.9
},
{
"id": "2ba19b67-4460-47ec-bd40-8c4f212e42e2",
"name": "Séparer titre et corps",
"type": "n8n-nodes-base.code",
"position": [
688,
1024
],
"parameters": {
"jsCode": "const html = items[0].json.output;\nconst h1Match = html.match(/<h1>(.*?)<\\/h1>/i);\nconst title = h1Match ? h1Match[1] : '';\nconst body = html.replace(h1Match[0], '').trim();\n\nreturn [\n {\n json: {\n title,\n body,\n },\n },\n];\n"
},
"typeVersion": 2
},
{
"id": "e538ba77-75bb-4d0d-84ed-393143e51733",
"name": "Créer un post WordPress",
"type": "n8n-nodes-base.httpRequest",
"position": [
864,
1024
],
"parameters": {
"url": "https://YOUR-URL....",
"method": "POST",
"options": {},
"sendBody": true,
"sendQuery": true,
"contentType": "multipart-form-data",
"bodyParameters": {
"parameters": [
{
"name": "title",
"value": "={{ $json.title }}"
},
{
"name": "status",
"value": "draft"
},
{
"name": "content",
"value": "={{ $json.body }}"
}
]
},
"queryParameters": {
"parameters": [
{
"name": "Parameter if needed",
"value": "Value if needed"
}
]
}
},
"typeVersion": 4.2
},
{
"id": "ad2d030b-8223-42a7-905c-971ba15c6552",
"name": "Note adhésive 7",
"type": "n8n-nodes-base.stickyNote",
"position": [
-2000,
624
],
"parameters": {
"width": 936,
"height": 324,
"content": "## How to configure the workflow\n- Connect your Google Account to all YouTube nodes to enable video discovery and retrieval functionality (Tutorial: https://www.youtube.com/watch?v=BfW1JpJ39Ek).\n- Integrate your Supadata account with the 'Create Transcription' node for high-quality video transcription services.\n- Connect your Anthropic account for AI-powered article generation (Tutorial: https://www.youtube.com/watch?v=1jl_vBoVvq0) - I recommend using Claude Sonnet 4 for text generation, however GPT models are also supported.\n- Navigate to the 'Compose Article' node and customize the following [PLACEHOLDERS] according to your brand requirements.\n- Configure the 'Create WordPress Post' node according to your WordPress website API.\n\n## Starting the workflow\n- After all services are connected - access the 'SET YOUTUBE CHANNELS' node and input the exact YouTube channel names you want to monitor.\n- Activate the workflow!"
},
"typeVersion": 1
},
{
"id": "210b58a3-acf0-44f4-b267-1359012e713e",
"name": "Attendre 5 secondes (éviter la surcharge API)",
"type": "n8n-nodes-base.wait",
"position": [
-944,
1328
],
"webhookId": "8eba5872-32ee-4a9c-b296-5dc86c770275",
"parameters": {},
"typeVersion": 1.1
},
{
"id": "4e23c456-5f10-403a-b4fa-cf28e9b2d93c",
"name": "Diviser les éléments en Titre et Phrases de recherche",
"type": "n8n-nodes-base.code",
"position": [
-1536,
1120
],
"parameters": {
"jsCode": "const data = items[0].json;\nconst output = [];\nfor (const [title, search] of Object.entries(data)) {\n output.push({\n json: {\n title,\n search\n }\n });\n}\n\nreturn output;\n"
},
"typeVersion": 2
},
{
"id": "591f562a-3a4f-4cb8-b4c2-b5409fd33e3a",
"name": "Déclencheur planifié (Démarre toutes les 6 heures)",
"type": "n8n-nodes-base.scheduleTrigger",
"position": [
-1936,
1120
],
"parameters": {
"rule": {
"interval": [
{
"field": "cronExpression",
"expression": "0 */6 * * *"
}
]
}
},
"typeVersion": 1.2
},
{
"id": "c5a55f4b-fda1-48f5-a439-1f0f5956bcbe",
"name": "Obtenir la vidéo la plus virale",
"type": "n8n-nodes-base.code",
"position": [
-16,
1024
],
"parameters": {
"jsCode": "function score(stat) {\n const views = Number(stat.viewCount) || 0;\n const likes = Number(stat.likeCount) || 0;\n const comments = Number(stat.commentCount) || 0;\n return comments + (likes * 10) + (views * 20);\n}\n\nitems.sort((a, b) => {\n return score(b.json.statistics) - score(a.json.statistics);\n});\n\nreturn [items[0]];"
},
"typeVersion": 2
}
],
"pinData": {},
"connections": {
"e147fc1a-74c6-4266-a2f8-1d1d66a7941f": {
"main": [
[
{
"node": "64d7bce2-fcc4-4536-b49f-8a8130f5f0a9",
"type": "main",
"index": 0
}
]
]
},
"08243de1-24af-4b52-b266-cd9ec8a20f0f": {
"main": [
[
{
"node": "2ba19b67-4460-47ec-bd40-8c4f212e42e2",
"type": "main",
"index": 0
}
]
]
},
"373070c8-4022-4047-9dcb-0577b83d7b48": {
"main": [
[
{
"node": "47a94130-279b-4e34-9e25-faf9727c2baf",
"type": "main",
"index": 0
}
],
[
{
"node": "1bec1dc6-9f9e-4cd6-93c3-38617efa7af2",
"type": "main",
"index": 0
}
]
]
},
"64d7bce2-fcc4-4536-b49f-8a8130f5f0a9": {
"main": [
[
{
"node": "c5a55f4b-fda1-48f5-a439-1f0f5956bcbe",
"type": "main",
"index": 0
}
],
[
{
"node": "d5fb7afd-8bf2-4c5f-835d-0aa93d665f4f",
"type": "main",
"index": 0
}
]
]
},
"d5fb7afd-8bf2-4c5f-835d-0aa93d665f4f": {
"main": [
[
{
"node": "64d7bce2-fcc4-4536-b49f-8a8130f5f0a9",
"type": "main",
"index": 0
}
]
]
},
"1fdb0605-1093-4dd3-a399-4631dcd664b5": {
"main": [
[
{
"node": "e147fc1a-74c6-4266-a2f8-1d1d66a7941f",
"type": "main",
"index": 0
}
]
]
},
"44491508-bc13-4024-83f6-eaed3ff91546": {
"main": [
[
{
"node": "08243de1-24af-4b52-b266-cd9ec8a20f0f",
"type": "main",
"index": 0
}
]
]
},
"244061f5-2f53-4da8-9333-968e6f982bab": {
"main": [
[
{
"node": "4e23c456-5f10-403a-b4fa-cf28e9b2d93c",
"type": "main",
"index": 0
}
]
]
},
"2ba19b67-4460-47ec-bd40-8c4f212e42e2": {
"main": [
[
{
"node": "e538ba77-75bb-4d0d-84ed-393143e51733",
"type": "main",
"index": 0
}
]
]
},
"383fefc1-cab4-4137-9dc0-1b7a37f7e9ca": {
"ai_languageModel": [
[
{
"node": "08243de1-24af-4b52-b266-cd9ec8a20f0f",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"1bec1dc6-9f9e-4cd6-93c3-38617efa7af2": {
"main": [
[
{
"node": "210b58a3-acf0-44f4-b267-1359012e713e",
"type": "main",
"index": 0
}
]
]
},
"c5a55f4b-fda1-48f5-a439-1f0f5956bcbe": {
"main": [
[
{
"node": "44491508-bc13-4024-83f6-eaed3ff91546",
"type": "main",
"index": 0
}
]
]
},
"47a94130-279b-4e34-9e25-faf9727c2baf": {
"main": [
[
{
"node": "1fdb0605-1093-4dd3-a399-4631dcd664b5",
"type": "main",
"index": 0
}
]
]
},
"591f562a-3a4f-4cb8-b4c2-b5409fd33e3a": {
"main": [
[
{
"node": "244061f5-2f53-4da8-9333-968e6f982bab",
"type": "main",
"index": 0
}
]
]
},
"210b58a3-acf0-44f4-b267-1359012e713e": {
"main": [
[
{
"node": "373070c8-4022-4047-9dcb-0577b83d7b48",
"type": "main",
"index": 0
}
]
]
},
"4e23c456-5f10-403a-b4fa-cf28e9b2d93c": {
"main": [
[
{
"node": "373070c8-4022-4047-9dcb-0577b83d7b48",
"type": "main",
"index": 0
}
]
]
}
}
}Comment utiliser ce workflow ?
Copiez le code de configuration JSON ci-dessus, créez un nouveau workflow dans votre instance n8n et sélectionnez "Importer depuis le JSON", collez la configuration et modifiez les paramètres d'authentification selon vos besoins.
Dans quelles scénarios ce workflow est-il adapté ?
Avancé - Création de contenu, IA Multimodale
Est-ce payant ?
Ce workflow est entièrement gratuit et peut être utilisé directement. Veuillez noter que les services tiers utilisés dans le workflow (comme l'API OpenAI) peuvent nécessiter un paiement de votre part.
Workflows recommandés
Pavlo Hurhu
@pavlohurhuBuilding rock-solid automations with n8n for over a year. Love sharing reliable workflows that help teams work smarter, not harder.
Partager ce workflow