Automatisation du SEO YouTube 1

Avancé

Ceci est unContent Creation, Multimodal AIworkflow d'automatisation du domainecontenant 19 nœuds.Utilise principalement des nœuds comme If, Set, Code, HttpRequest, GoogleSheets. Générer du contenu SEO YouTube et des vignettes à partir de scripts vidéo avec GPT-4o et Runway

Prérequis
  • Peut nécessiter les informations d'identification d'authentification de l'API cible
  • Informations d'identification Google Sheets API
  • Clé API OpenAI
Aperçu du workflow
Visualisation des connexions entre les nœuds, avec support du zoom et du déplacement
Exporter le workflow
Copiez la configuration JSON suivante dans n8n pour importer et utiliser ce workflow
{
  "id": "D0sZR93pIfNqpzPN",
  "meta": {
    "instanceId": "b575ae39acc98e53d75e50d1b5147e8b0922704c4aeb3230092d8e2a78247bc3",
    "templateCredsSetupCompleted": true
  },
  "name": "Youtube SEO Automation 1",
  "tags": [],
  "nodes": [
    {
      "id": "f268ec0d-7715-41bd-9e1a-7cc9285c5ec9",
      "name": "Google Déclencheur Sheets",
      "type": "n8n-nodes-base.googleSheetsTrigger",
      "position": [
        -2976,
        256
      ],
      "parameters": {
        "event": "rowAdded",
        "options": {},
        "pollTimes": {
          "item": [
            {
              "mode": "everyMinute"
            }
          ]
        },
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "gid=0",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1BMtXN3Wl_pqyHJQW9KfRaErjPmg5wrm9kfIYcnuUVAM/edit#gid=0",
          "cachedResultName": "Sheet1"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1BMtXN3Wl_pqyHJQW9KfRaErjPmg5wrm9kfIYcnuUVAM",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1BMtXN3Wl_pqyHJQW9KfRaErjPmg5wrm9kfIYcnuUVAM/edit?usp=drivesdk",
          "cachedResultName": "Youtube Automation"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "c27724ad-9f25-4e49-b9fb-2ca2bfa3e778",
      "name": "Aucune opération, ne rien faire",
      "type": "n8n-nodes-base.noOp",
      "position": [
        -2528,
        416
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "f92a73f2-3901-4576-b1e8-9836672a5977",
      "name": "Si le script anglais est disponible ou non",
      "type": "n8n-nodes-base.if",
      "position": [
        -2768,
        256
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "9b712734-6cd3-43d3-911c-bca7ffa53263",
              "operator": {
                "type": "string",
                "operation": "notEmpty",
                "singleValue": true
              },
              "leftValue": "={{ $json['Roman Hindi Script'] }}",
              "rightValue": ""
            },
            {
              "id": "18425a22-c745-45af-a354-d4bf43a73103",
              "operator": {
                "type": "string",
                "operation": "empty",
                "singleValue": true
              },
              "leftValue": "={{ $json['English script'] }}",
              "rightValue": ""
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "064a7b70-e5a9-4e9a-b7ac-50ad3e1a7840",
      "name": "Génération du script anglais",
      "type": "@n8n/n8n-nodes-langchain.openAi",
      "position": [
        -2560,
        192
      ],
      "parameters": {
        "modelId": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4o",
          "cachedResultName": "GPT-4O"
        },
        "options": {},
        "messages": {
          "values": [
            {
              "content": "={{ $json['Roman Hindi Script'] }}\n\nConvert this hindi roman script in to english script."
            }
          ]
        }
      },
      "typeVersion": 1.8
    },
    {
      "id": "12157d7c-4dae-4a06-be7b-23f39584d3c5",
      "name": "Création du champ pour le script anglais",
      "type": "n8n-nodes-base.set",
      "position": [
        -2208,
        192
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "9b4b3282-e472-4729-b52f-2ec7178063f3",
              "name": "message.content",
              "type": "string",
              "value": "={{ $json.message.content }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "bfc19dfc-5a3d-4235-a630-d12126afc3a7",
      "name": "Ajout du script anglais à GSheet",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        -2000,
        192
      ],
      "parameters": {
        "columns": {
          "value": {
            "Number": "={{ $('Google Sheets Trigger').item.json.Number }}",
            "English script": "={{ $('Generating English Script').item.json.message.content }}",
            "Roman Hindi Script": "={{ $('Google Sheets Trigger').item.json['Roman Hindi Script'] }}"
          },
          "schema": [
            {
              "id": "Number",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Number",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Roman Hindi Script",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Roman Hindi Script",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "English script",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "English script",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Youtube Title",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Youtube Title",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Youtube Tags",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Youtube Tags",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Youtube Keywords",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Youtube Keywords",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Youtube Description",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Youtube Description",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Youtube Thumbnail Brief",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Youtube Thumbnail Brief",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Youtube Thumbnail Tagline",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Youtube Thumbnail Tagline",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Youtube Generated Thumbnail",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Youtube Generated Thumbnail",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "row_number",
              "type": "number",
              "display": true,
              "removed": true,
              "readOnly": true,
              "required": false,
              "displayName": "row_number",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "Number"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "update",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "gid=0",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1BMtXN3Wl_pqyHJQW9KfRaErjPmg5wrm9kfIYcnuUVAM/edit#gid=0",
          "cachedResultName": "Sheet1"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1BMtXN3Wl_pqyHJQW9KfRaErjPmg5wrm9kfIYcnuUVAM",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1BMtXN3Wl_pqyHJQW9KfRaErjPmg5wrm9kfIYcnuUVAM/edit?usp=drivesdk",
          "cachedResultName": "Youtube Automation"
        }
      },
      "typeVersion": 4.6
    },
    {
      "id": "3342ff7b-5622-4aaf-8f8a-781285e027d9",
      "name": "Génération des balises Youtube, mots-clés et plus",
      "type": "@n8n/n8n-nodes-langchain.openAi",
      "position": [
        -1792,
        192
      ],
      "parameters": {
        "modelId": {
          "__rl": true,
          "mode": "list",
          "value": "chatgpt-4o-latest",
          "cachedResultName": "CHATGPT-4O-LATEST"
        },
        "options": {},
        "messages": {
          "values": [
            {
              "content": "={{ $json['English script'] }}\n\nUse the provided English script and generate:\nGenerate the following:\n\n1️⃣ 10 Best Engaging YouTube Titles (≤ 70 characters each)\n\n2️⃣ Best Engaging YouTube Tags (comma-separated, up to 20)\n\n3️⃣ Best Engaging YouTube Keywords (comma-separated, up to 20)\n\n4️⃣ SEO-Friendly YouTube Video Description (optimized for 2025 algorithm, includes keywords, tags, hook, timestamps, engagement call-to-action, hashtags, and Google Search Keywords section)\n\n5️⃣ Thumbnail AI Prompt (realistic, describes main idea, bold clickable text, color scheme, visual elements, emotion, layout, realistic photography style, 1280×720, 16:9, suitable for MidJourney/DALL·E/Runware)\n\n6️⃣ Thumbnail Tagline (single catchy 3–5 word tagline)"
            }
          ]
        }
      },
      "credentials": {
        "openAiApi": {
          "id": "hTbhwONPbaFtA1LQ",
          "name": "OpenAi account"
        }
      },
      "typeVersion": 1.8
    },
    {
      "id": "a601a771-5858-43cf-aa6e-3c36e2a6033f",
      "name": "Code JS pour séparer les différents sujets",
      "type": "n8n-nodes-base.code",
      "position": [
        -1328,
        192
      ],
      "parameters": {
        "jsCode": "const raw = $input.first().json.message.content;\n\n// Helper function to extract section between markers\nfunction extractSection(regex, input) {\n  const match = input.match(regex);\n  return match ? match[1].trim() : \"\";\n}\n\n// 1️⃣ Titles\nlet titlesRaw = extractSection(/1️⃣.*?\\n([\\s\\S]*?)2️⃣/, raw);\nlet titles = titlesRaw\n  .split(/\\n|-/)\n  .map(t => t.replace(/^\\d+\\.?\\s*/, \"\").trim())\n  .filter(t => t.length > 0);\n\n// 2️⃣ Tags\nlet tags = extractSection(/2️⃣.*?\\n([\\s\\S]*?)3️⃣/, raw).replace(/\\n/g, \"\").trim();\n\n// 3️⃣ Keywords\nlet keywords = extractSection(/3️⃣.*?\\n([\\s\\S]*?)4️⃣/, raw).replace(/\\n/g, \"\").trim();\n\n// 4️⃣ SEO Description\nlet description = extractSection(/4️⃣.*?\\n([\\s\\S]*?)5️⃣/, raw).trim();\n\n// 5️⃣ Thumbnail AI Prompt\nlet thumbnailPrompt = extractSection(/5️⃣.*?\\n([\\s\\S]*?)6️⃣/, raw).trim();\n\n// 6️⃣ Thumbnail Tagline\nlet tagline = extractSection(/6️⃣.*?\\n([\\s\\S]*)$/, raw).replace(/[\"\\n]/g, \"\").trim();\n\nreturn [\n  {\n    json: {\n      \"YouTube Titles\": titles,\n      \"YouTube Tags\": tags,\n      \"YouTube Keywords\": keywords,\n      \"SEO Description\": description,\n      \"Thumbnail AI Prompt\": thumbnailPrompt,\n      \"Thumbnail Tagline\": tagline\n    }\n  }\n];\n"
      },
      "typeVersion": 2
    },
    {
      "id": "e6ae98e2-2599-4006-ac63-40f43198812e",
      "name": "Mise à jour de la ligne dans GSheet avec les balises, description, etc.",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        -1168,
        192
      ],
      "parameters": {
        "columns": {
          "value": {
            "Number": "={{ $('Google Sheets Trigger').item.json.Number }}",
            "Youtube Tags": "={{ $json['YouTube Tags'] }}",
            "Youtube Title": "={{ $json['YouTube Titles'] }}",
            "Youtube Keywords": "={{ $json['YouTube Keywords'] }}",
            "Youtube Description": "={{ $json['SEO Description'] }}",
            "Youtube Thumbnail Brief": "={{ $json['Thumbnail AI Prompt'] }}",
            "Youtube Thumbnail Tagline": "={{ $json['Thumbnail Tagline'] }}"
          },
          "schema": [
            {
              "id": "Number",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Number",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Roman Hindi Script",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Roman Hindi Script",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "English script",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "English script",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Youtube Title",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Youtube Title",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Youtube Tags",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Youtube Tags",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Youtube Keywords",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Youtube Keywords",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Youtube Description",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Youtube Description",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Youtube Thumbnail Brief",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Youtube Thumbnail Brief",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Youtube Thumbnail Tagline",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Youtube Thumbnail Tagline",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Youtube Generated Thumbnail",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Youtube Generated Thumbnail",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "row_number",
              "type": "number",
              "display": true,
              "removed": true,
              "readOnly": true,
              "required": false,
              "displayName": "row_number",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "Number"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "update",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "gid=0",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1BMtXN3Wl_pqyHJQW9KfRaErjPmg5wrm9kfIYcnuUVAM/edit#gid=0",
          "cachedResultName": "Sheet1"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1BMtXN3Wl_pqyHJQW9KfRaErjPmg5wrm9kfIYcnuUVAM",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1BMtXN3Wl_pqyHJQW9KfRaErjPmg5wrm9kfIYcnuUVAM/edit?usp=drivesdk",
          "cachedResultName": "Youtube Automation"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "S5JvudyeIyaJADDa",
          "name": "Google Sheets account"
        }
      },
      "typeVersion": 4.6
    },
    {
      "id": "f0a5ba4b-4dba-4acc-bc80-1e66f6181e32",
      "name": "Code Python pour créer une invite dynamique",
      "type": "n8n-nodes-base.code",
      "position": [
        -704,
        320
      ],
      "parameters": {
        "language": "python",
        "pythonCode": "import uuid\n\nthumbnail_brief = items[0][\"json\"].get(\"Youtube Thumbnail Brief\", \"\")\ntagline = items[0][\"json\"].get(\"Youtube Thumbnail Tagline\", \"\")\n\n# Final prompt for Runware AI\nprompt = (\n    \"Generate a professional YouTube thumbnail.\\n\\n\"\n    f\"Thumbnail Context:\\n{thumbnail_brief}\\n\\n\"\n    f\"Main Tagline: '{tagline}'\\n\\n\"\n    \"Thumbnail requirements:\\n\"\n    \"- Bold, central tagline text\\n\"\n    \"- Cinematic lighting, vibrant colors\\n\"\n    \"- Highly clickable YouTube style\\n\"\n    \"- 1280x720 resolution\"\n)\n\npayload = {\n    \"taskType\": \"imageInference\",\n    \"taskUUID\": str(uuid.uuid4()),\n    \"positivePrompt\": prompt,\n    \"width\": 1280,\n    \"height\": 720,\n    \"model\": \"bytedance:3@1\",\n    \"numberResults\": 1,\n    \"outputFileName\": \"thumbnail.png\"\n}\n\nreturn {\"data\": [payload]}\n"
      },
      "typeVersion": 2
    },
    {
      "id": "4478f8d0-f766-42e9-9d8b-f9183539ab23",
      "name": "HTTP Appel de requête à Runware API pour générer l'image de miniature",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -416,
        -16
      ],
      "parameters": {
        "url": "https://api.runware.ai/v1/image",
        "method": "POST",
        "options": {},
        "jsonBody": "={{ $json.data }}",
        "sendBody": true,
        "sendHeaders": true,
        "specifyBody": "json",
        "headerParameters": {
          "parameters": [
            {
              "name": "Authorization"
            },
            {
              "name": "Content-Type",
              "value": "application/json"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "3e233517-bbca-420e-a081-6ce8ca14a77a",
      "name": "Mise à jour de GSheet avec l'image de miniature",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        -240,
        -16
      ],
      "parameters": {
        "columns": {
          "value": {
            "Number": "={{ $('Google Sheets Trigger').item.json.Number }}",
            "Youtube Generated Thumbnail": "={{ $json.data[0].imageURL }}"
          },
          "schema": [
            {
              "id": "Number",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Number",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Roman Hindi Script",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Roman Hindi Script",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "English script",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "English script",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Youtube Title",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Youtube Title",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Youtube Tags",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Youtube Tags",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Youtube Keywords",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Youtube Keywords",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Youtube Description",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Youtube Description",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Youtube Thumbnail Brief",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Youtube Thumbnail Brief",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Youtube Thumbnail Tagline",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Youtube Thumbnail Tagline",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Youtube Generated Thumbnail",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Youtube Generated Thumbnail",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "row_number",
              "type": "number",
              "display": true,
              "removed": true,
              "readOnly": true,
              "required": false,
              "displayName": "row_number",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "Number"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "update",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "gid=0",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1BMtXN3Wl_pqyHJQW9KfRaErjPmg5wrm9kfIYcnuUVAM/edit#gid=0",
          "cachedResultName": "Sheet1"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1BMtXN3Wl_pqyHJQW9KfRaErjPmg5wrm9kfIYcnuUVAM",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1BMtXN3Wl_pqyHJQW9KfRaErjPmg5wrm9kfIYcnuUVAM/edit?usp=drivesdk",
          "cachedResultName": "Youtube Automation"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "S5JvudyeIyaJADDa",
          "name": "Google Sheets account"
        }
      },
      "typeVersion": 4.6
    },
    {
      "id": "fc5309f3-e498-4dd4-9e17-e89438661df0",
      "name": "Note autocollante",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -3072,
        448
      ],
      "parameters": {
        "height": 224,
        "content": "## Step-by-Step Tutorial YouTube Video  \n\n## [Follow Video- Click here](https://youtu.be/R426d84slWY?si=Ecozf55ypxg6PnQz)"
      },
      "typeVersion": 1
    },
    {
      "id": "4ebd0064-f716-4fc0-9c87-d5d4a3590b0f",
      "name": "Note autocollante 1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1840,
        -544
      ],
      "parameters": {
        "width": 352,
        "height": 672,
        "content": "## Prompt for Generating YouTue Tags, Description so on..\n\n{{ $json['English script'] }}\n\nUse the provided English script and generate:\nGenerate the following:\n\n1️⃣ 10 Best Engaging YouTube Titles (≤ 70 characters each)\n\n2️⃣ Best Engaging YouTube Tags (comma-separated, up to 20)\n\n3️⃣ Best Engaging YouTube Keywords (comma-separated, up to 20)\n\n4️⃣ SEO-Friendly YouTube Video Description (optimized for 2025 algorithm, includes keywords, tags, hook, timestamps, engagement call-to-action, hashtags, and Google Search Keywords section)\n\n5️⃣ Thumbnail AI Prompt (realistic, describes main idea, bold clickable text, color scheme, visual elements, emotion, layout, realistic photography style, 1280×720, 16:9, suitable for MidJourney/DALL·E/Runware)\n\n6️⃣ Thumbnail Tagline (single catchy 3–5 word tagline)"
      },
      "typeVersion": 1
    },
    {
      "id": "287cad96-b7b8-4f90-a2f9-eab7672a1b9d",
      "name": "Note autocollante 2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1408,
        -544
      ],
      "parameters": {
        "width": 448,
        "height": 672,
        "content": "## Javascript code for separating the data\n\nconst raw = $input.first().json.message.content;\n\n// Helper function to extract section between markers\nfunction extractSection(regex, input) {\n  const match = input.match(regex);\n  return match ? match[1].trim() : \"\";\n}\n\n// 1️⃣ Titles\nlet titlesRaw = extractSection(/1️⃣.*?\\n([\\s\\S]*?)2️⃣/, raw);\nlet titles = titlesRaw\n  .split(/\\n|-/)\n  .map(t => t.replace(/^\\d+\\.?\\s*/, \"\").trim())\n  .filter(t => t.length > 0);\n\n// 2️⃣ Tags\nlet tags = extractSection(/2️⃣.*?\\n([\\s\\S]*?)3️⃣/, raw).replace(/\\n/g, \"\").trim();\n\n// 3️⃣ Keywords\nlet keywords = extractSection(/3️⃣.*?\\n([\\s\\S]*?)4️⃣/, raw).replace(/\\n/g, \"\").trim();\n\n// 4️⃣ SEO Description\nlet description = extractSection(/4️⃣.*?\\n([\\s\\S]*?)5️⃣/, raw).trim();\n\n// 5️⃣ Thumbnail AI Prompt\nlet thumbnailPrompt = extractSection(/5️⃣.*?\\n([\\s\\S]*?)6️⃣/, raw).trim();\n\n// 6️⃣ Thumbnail Tagline\nlet tagline = extractSection(/6️⃣.*?\\n([\\s\\S]*)$/, raw).replace(/[\"\\n]/g, \"\").trim();\n\nreturn [\n  {\n    json: {\n      \"YouTube Titles\": titles,\n      \"YouTube Tags\": tags,\n      \"YouTube Keywords\": keywords,\n      \"SEO Description\": description,\n      \"Thumbnail AI Prompt\": thumbnailPrompt,\n      \"Thumbnail Tagline\": tagline\n    }\n  }\n];\n"
      },
      "typeVersion": 1
    },
    {
      "id": "8ac19d3d-486e-4772-8871-64e0246b4ca5",
      "name": "Note autocollante 3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -832,
        528
      ],
      "parameters": {
        "width": 464,
        "height": 672,
        "content": "## Python code for generating dynamic prompt\n\nimport uuid\n\nthumbnail_brief = items[0][\"json\"].get(\"Youtube Thumbnail Brief\", \"\")\ntagline = items[0][\"json\"].get(\"Youtube Thumbnail Tagline\", \"\")\n\nprompt = (\n    \"Generate a professional YouTube thumbnail.\\n\\n\"\n    f\"Thumbnail Context:\\n{thumbnail_brief}\\n\\n\"\n    f\"Main Tagline: '{tagline}'\\n\\n\"\n    \"Thumbnail requirements:\\n\"\n    \"- Bold, central tagline text\\n\"\n    \"- Cinematic lighting, vibrant colors\\n\"\n    \"- Highly clickable YouTube style\\n\"\n    \"- 1280x720 resolution\"\n)\n\npayload = {\n    \"taskType\": \"imageInference\",\n    \"taskUUID\": str(uuid.uuid4()),\n    \"positivePrompt\": prompt,\n    \"width\": 1280,\n    \"height\": 720,\n    \"model\": \"bytedance:3@1\",\n    \"numberResults\": 1,\n    \"outputFileName\": \"thumbnail.png\"\n}\n\nreturn {\"data\": [payload]}"
      },
      "typeVersion": 1
    },
    {
      "id": "a67690da-e029-4458-a2c4-ff72ff6b94ca",
      "name": "Note autocollante 4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -2560,
        80
      ],
      "parameters": {
        "height": 96,
        "content": "## Add your OpenAI Keys\n"
      },
      "typeVersion": 1
    },
    {
      "id": "caec88cf-9d1a-4f52-bc18-bc2b5281d976",
      "name": "Note autocollante 5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -3008,
        112
      ],
      "parameters": {
        "width": 176,
        "height": 112,
        "content": "## Connect with your Google Sheet\n"
      },
      "typeVersion": 1
    },
    {
      "id": "5ac6a066-7d50-46b2-84ec-8529b9878cb5",
      "name": "Note autocollante 6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -400,
        -192
      ],
      "parameters": {
        "height": 144,
        "content": "## Add your RUNWARE API or any other 3rd party"
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "pinData": {},
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "eed95939-cf9f-4852-8ecb-997cf777c3c0",
  "connections": {
    "f268ec0d-7715-41bd-9e1a-7cc9285c5ec9": {
      "main": [
        [
          {
            "node": "f92a73f2-3901-4576-b1e8-9836672a5977",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "064a7b70-e5a9-4e9a-b7ac-50ad3e1a7840": {
      "main": [
        [
          {
            "node": "12157d7c-4dae-4a06-be7b-23f39584d3c5",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "bfc19dfc-5a3d-4235-a630-d12126afc3a7": {
      "main": [
        [
          {
            "node": "3342ff7b-5622-4aaf-8f8a-781285e027d9",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "12157d7c-4dae-4a06-be7b-23f39584d3c5": {
      "main": [
        [
          {
            "node": "bfc19dfc-5a3d-4235-a630-d12126afc3a7",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "f92a73f2-3901-4576-b1e8-9836672a5977": {
      "main": [
        [
          {
            "node": "064a7b70-e5a9-4e9a-b7ac-50ad3e1a7840",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "c27724ad-9f25-4e49-b9fb-2ca2bfa3e778",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "a601a771-5858-43cf-aa6e-3c36e2a6033f": {
      "main": [
        [
          {
            "node": "e6ae98e2-2599-4006-ac63-40f43198812e",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "f0a5ba4b-4dba-4acc-bc80-1e66f6181e32": {
      "main": [
        [
          {
            "node": "4478f8d0-f766-42e9-9d8b-f9183539ab23",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "3342ff7b-5622-4aaf-8f8a-781285e027d9": {
      "main": [
        [
          {
            "node": "a601a771-5858-43cf-aa6e-3c36e2a6033f",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "e6ae98e2-2599-4006-ac63-40f43198812e": {
      "main": [
        [
          {
            "node": "f0a5ba4b-4dba-4acc-bc80-1e66f6181e32",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "4478f8d0-f766-42e9-9d8b-f9183539ab23": {
      "main": [
        [
          {
            "node": "3e233517-bbca-420e-a081-6ce8ca14a77a",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
Foire aux questions

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.

Informations sur le workflow
Niveau de difficulté
Avancé
Nombre de nœuds19
Catégorie2
Types de nœuds9
Description de la difficulté

Adapté aux utilisateurs avancés, avec des workflows complexes contenant 16+ nœuds

Liens externes
Voir sur n8n.io

Partager ce workflow

Catégories

Catégories: 34