8
n8n Françaisamn8n.com

đŸ’„ CrĂ©ation automatique de miniatures YouTube Ă  partir de liens vidĂ©o

Avancé

Ceci est unContent Creation, Multimodal AIworkflow d'automatisation du domainecontenant 25 nƓuds.Utilise principalement des nƓuds comme Set, Code, Wait, Gmail, Telegram. CrĂ©ation automatisĂ©e de miniatures YouTube et publication sur les rĂ©seaux sociaux avec Templated.io et Blotato

Prérequis
  • ‱Compte Google et informations d'identification Gmail API
  • ‱Token Bot Telegram
  • ‱Informations d'identification Google Drive API
  • ‱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": "OJZHlaGLkOyFR7ut",
  "meta": {
    "instanceId": "de822f81f3a2367cef7d9549771a77783236bc9596481be2ae65c05fbcc4b4fd",
    "templateCredsSetupCompleted": true
  },
  "name": "đŸ’„  Automate YouTube thumbnail creation from video links -vide",
  "tags": [],
  "nodes": [
    {
      "id": "41092605-3611-4017-828a-3c7bb41a2eb6",
      "name": "Telegram Trigger",
      "type": "n8n-nodes-base.telegramTrigger",
      "position": [
        4016,
        864
      ],
      "webhookId": "71c3ceda-ca60-42bd-beb6-845035069dc2",
      "parameters": {
        "updates": [
          "message"
        ],
        "additionalFields": {}
      },
      "credentials": {
        "telegramApi": {
          "id": "zT2gC4wPXibPyra1",
          "name": "Telegram - templated"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "dec01d59-d7a5-4a53-9971-e62a276cbbfb",
      "name": "Configuration du Workflow",
      "type": "n8n-nodes-base.set",
      "position": [
        4256,
        864
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "id-1",
              "name": "youtubeApiKey",
              "type": "string",
              "value": "YOUR_YOUTUBE_API_KEY"
            },
            {
              "id": "id-3",
              "name": "templatedTemplateId",
              "type": "string",
              "value": "YOUR_TEMPLATE_ID"
            },
            {
              "id": "id-4",
              "name": "googleDriveFolderId",
              "type": "string",
              "value": "YOUR_DRIVE_FOLDER_ID"
            },
            {
              "id": "id-5",
              "name": "googleSheetsId",
              "type": "string",
              "value": "YOUR_SHEETS_ID"
            },
            {
              "id": "id-6",
              "name": "emailRecipient",
              "type": "string",
              "value": "YOUR_EMAIL_ADDRESS"
            }
          ]
        },
        "includeOtherFields": true
      },
      "typeVersion": 3.4
    },
    {
      "id": "7bda8d47-fc97-4372-a447-c23bc0bd3c8f",
      "name": "Extraire l'ID Vidéo",
      "type": "n8n-nodes-base.code",
      "position": [
        4480,
        864
      ],
      "parameters": {
        "jsCode": "// Extract YouTube video ID from Telegram message\nconst items = $input.all();\nconst outputItems = [];\n\nfor (const item of items) {\n  const messageText = item.json.message?.text || '';\n  \n  // Regex patterns for various YouTube URL formats\n  const patterns = [\n    /(?:youtube\\.com\\/watch\\?v=)([a-zA-Z0-9_-]{11})/,\n    /(?:youtu\\.be\\/)([a-zA-Z0-9_-]{11})/,\n    /(?:youtube\\.com\\/embed\\/)([a-zA-Z0-9_-]{11})/,\n    /(?:youtube\\.com\\/v\\/)([a-zA-Z0-9_-]{11})/,\n    /(?:youtube\\.com\\/shorts\\/)([a-zA-Z0-9_-]{11})/\n  ];\n  \n  let videoId = null;\n  \n  // Try each pattern until we find a match\n  for (const pattern of patterns) {\n    const match = messageText.match(pattern);\n    if (match && match[1]) {\n      videoId = match[1];\n      break;\n    }\n  }\n  \n  if (videoId) {\n    outputItems.push({\n      json: {\n        videoId: videoId,\n        videoUrl: `https://www.youtube.com/watch?v=${videoId}`,\n        originalMessage: messageText\n      }\n    });\n  } else {\n    // If no video ID found, pass through with error flag\n    outputItems.push({\n      json: {\n        error: 'No valid YouTube URL found in message',\n        originalMessage: messageText\n      }\n    });\n  }\n}\n\nreturn outputItems;"
      },
      "typeVersion": 2
    },
    {
      "id": "0cc8b6fe-9fe9-41ac-aa66-4a90e1995f70",
      "name": "Récupérer les Infos YouTube",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        4768,
        864
      ],
      "parameters": {
        "url": "https://www.googleapis.com/youtube/v3/videos",
        "options": {},
        "sendQuery": true,
        "queryParameters": {
          "parameters": [
            {
              "name": "part",
              "value": "snippet"
            },
            {
              "name": "id",
              "value": "={{ $json.videoId }}"
            },
            {
              "name": "key",
              "value": "={{ $('Workflow Configuration').first().json.youtubeApiKey }}"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "6f6ed14b-0e3c-45e3-8e78-72cc4748db90",
      "name": "Préparer les Données Texte",
      "type": "n8n-nodes-base.code",
      "position": [
        5040,
        864
      ],
      "parameters": {
        "jsCode": "// Normalize YouTube API responses and extract fields for thumbnail generation\n\nconst inputItems = $input.all();\nconst out = [];\n\nfor (const item of inputItems) {\n  // Handle string payloads (if HTTP node returned text)\n  let root = item.json ?? {};\n  if (typeof root === 'string') {\n    try { root = JSON.parse(root); } catch (e) { root = {}; }\n  }\n\n  // Build a uniform array of \"video\" records to iterate\n  let videos = [];\n  if (Array.isArray(root.items)) {\n    videos = root.items; // videoListResponse (videos.list) or search.list\n  } else if (root.kind === 'youtube#video') {\n    videos = [root]; // single video object shape\n  } else {\n    // Fallback: maybe the current item itself is a snippet\n    if (root.snippet) videos = [root];\n  }\n\n  for (const v of videos) {\n    const snippet = v.snippet || {};\n    // videoId can be under v.id (videos.list) or v.id.videoId (search.list)\n    const videoId = (v.id && typeof v.id === 'object') ? (v.id.videoId || '') : (v.id || '');\n\n    // Title (trim to 60 chars max)\n    let title = snippet.title || '';\n    if (title.length > 60) title = title.slice(0, 57) + '...';\n\n    const description = snippet.description || '';\n    const channelTitle = snippet.channelTitle || '';\n    const publishedAt = snippet.publishedAt || '';\n\n    // Choose best available thumbnail\n    const t = snippet.thumbnails || {};\n    const thumbnailUrl =\n      (t.maxres && t.maxres.url) ||\n      (t.standard && t.standard.url) ||\n      (t.high && t.high.url) ||\n      (t.medium && t.medium.url) ||\n      (t.default && t.default.url) ||\n      '';\n\n    out.push({\n      json: {\n        title,\n        description,\n        videoId,\n        channelTitle,\n        publishedAt,\n        thumbnailUrl,\n      },\n    });\n  }\n}\n\n// If nothing matched, still return a single empty item to avoid node errors\nif (out.length === 0) {\n  out.push({ json: { title: '', description: '', videoId: '', channelTitle: '', publishedAt: '', thumbnailUrl: '' } });\n}\n\nreturn out;\n"
      },
      "typeVersion": 2
    },
    {
      "id": "f391676c-8826-4a3e-b19a-2e58c7e7c796",
      "name": "Attendre le Rendu",
      "type": "n8n-nodes-base.wait",
      "position": [
        4768,
        1152
      ],
      "webhookId": "853c0ca8-14b7-4854-878f-89d5787e9fc8",
      "parameters": {
        "unit": "minutes",
        "amount": 2
      },
      "typeVersion": 1.1
    },
    {
      "id": "ca6a5f90-4174-42dc-a4f5-f1c14d4f2f40",
      "name": "Téléverser sur Google Drive",
      "type": "n8n-nodes-base.googleDrive",
      "position": [
        4256,
        1440
      ],
      "parameters": {
        "name": "={{ $('Extract Video ID').first().json.videoId }}_thumbnail_{{ $('Prepare Text Data').first().json.title }}.png",
        "driveId": {
          "__rl": true,
          "mode": "list",
          "value": "My Drive"
        },
        "options": {},
        "folderId": {
          "__rl": true,
          "mode": "id",
          "value": "={{ $('Workflow Configuration').first().json.googleDriveFolderId }}"
        },
        "inputDataFieldName": "thumbnail"
      },
      "credentials": {
        "googleDriveOAuth2Api": {
          "id": "odf7JAwyqVFVZBhQ",
          "name": "Google Drive account"
        }
      },
      "typeVersion": 3
    },
    {
      "id": "7ea4143c-b953-4430-908b-e7b13a8ff7eb",
      "name": "Envoyer Gmail",
      "type": "n8n-nodes-base.gmail",
      "position": [
        4768,
        1440
      ],
      "webhookId": "17c8a017-1821-4519-be49-1ee16ef91109",
      "parameters": {
        "sendTo": "={{ $('Workflow Configuration').first().json.emailRecipient }}",
        "message": "=<h2>YouTube Thumbnail Generated Successfully</h2>\n<p>A new thumbnail has been generated for your YouTube video.</p>\n<h3>Video Details:</h3>\n<ul>\n  <li><strong>Title:</strong> {{ $('Prepare Text Data').first().json.title }}</li>\n  <li><strong>Channel:</strong> {{ $('Prepare Text Data').first().json.channelTitle }}</li>\n  <li><strong>Video ID:</strong> {{ $('Extract Video ID').first().json.videoId }}</li>\n</ul>\n<h3>Thumbnail:</h3>\n<p>The thumbnail has been uploaded to Google Drive and is attached to this email.</p>\n<p><strong>Google Drive Link:</strong> <a href=\"{{ $('Upload to Google Drive').first().json.webViewLink }}\">View in Google Drive</a></p>\n<p>Thank you for using our YouTube Thumbnail Generator!</p>",
        "options": {},
        "subject": "=YouTube Thumbnail Generated: {{ $('Prepare Text Data').first().json.title }}"
      },
      "credentials": {
        "gmailOAuth2": {
          "id": "SYGi4mCMfmxi8gK3",
          "name": "Gmail account"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "e52e1427-e362-4731-9a4c-92a5e4610687",
      "name": "Envoyer Notification Telegram",
      "type": "n8n-nodes-base.telegram",
      "position": [
        5040,
        1440
      ],
      "webhookId": "4424fef6-e1c1-4b7f-b599-9239c8b0ca82",
      "parameters": {
        "file": "={{ $('Downloading files').item.json.url }}",
        "chatId": "={{ $('Telegram Trigger').first().json.message.chat.id }}",
        "operation": "sendPhoto",
        "additionalFields": {
          "caption": "=✅ Thumbnail generated for: {{ $('Prepare Text Data').first().json.title }}\n\n🔗 Google Drive: {{ $('Upload to Google Drive').first().json.webViewLink }}"
        }
      },
      "credentials": {
        "telegramApi": {
          "id": "zT2gC4wPXibPyra1",
          "name": "Telegram - templated"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "b5ee3daa-64ce-4782-837d-142bc5ee3c77",
      "name": "Génération de Post OpenAI",
      "type": "@n8n/n8n-nodes-langchain.openAi",
      "position": [
        4016,
        1728
      ],
      "parameters": {
        "modelId": {
          "__rl": true,
          "mode": "id",
          "value": "gpt-4o-mini"
        },
        "options": {},
        "messages": {
          "values": [
            {
              "role": "system",
              "content": "You are a social media expert creating viral posts for YouTube promotions. Write engaging, platform-optimized captions."
            },
            {
              "content": "=Create a compelling social media post for: {{ $('Prepare Text Data').first().json.title }}\n\nContext: {{ $('Prepare Text Data').first().json.description }}\n\nRequirements:\n- Start with attention-grabbing hook\n- Highlight 2-3 key points\n- Include strong call-to-action\n- Add 5-8 relevant hashtags\n- Format: Keep under 1000 characters for LinkedIn\n- Include video URL: {{ $('Extract Video ID').first().json.videoUrl }}"
            }
          ]
        }
      },
      "credentials": {
        "openAiApi": {
          "id": "QmtwfFk8iBkuCXOX",
          "name": "n8n free OpenAI API credits"
        }
      },
      "typeVersion": 1.8
    },
    {
      "id": "5210d570-ac35-4175-b783-af582160befa",
      "name": "Téléverser la Vidéo sur BLOTATO",
      "type": "@blotato/n8n-nodes-blotato.blotato",
      "position": [
        4352,
        1728
      ],
      "parameters": {
        "mediaUrl": "={{ $('Downloading files').item.json.url }}",
        "resource": "media"
      },
      "credentials": {
        "blotatoApi": {
          "id": "wozsYJYLfCZO37j8",
          "name": "Blotato account"
        }
      },
      "typeVersion": 2
    },
    {
      "id": "9d78b633-b9d3-47a4-bcd7-0e48739cf0eb",
      "name": "Linkedin",
      "type": "@blotato/n8n-nodes-blotato.blotato",
      "position": [
        4768,
        1728
      ],
      "parameters": {
        "options": {},
        "platform": "linkedin",
        "accountId": {
          "__rl": true,
          "mode": "list",
          "value": "1446",
          "cachedResultUrl": "https://backend.blotato.com/v2/accounts/1446",
          "cachedResultName": "Samuel Amalric"
        },
        "postContentText": "={{ $('OpenAI Post Generation').item.json.message.content }}",
        "postContentMediaUrls": "={{ $json.url }}"
      },
      "credentials": {
        "blotatoApi": {
          "id": "wozsYJYLfCZO37j8",
          "name": "Blotato account"
        }
      },
      "typeVersion": 2
    },
    {
      "id": "caadaf4e-8b06-41b6-950c-41846f684915",
      "name": "Facebook",
      "type": "@blotato/n8n-nodes-blotato.blotato",
      "position": [
        4560,
        1728
      ],
      "parameters": {
        "options": {},
        "platform": "facebook",
        "accountId": {
          "__rl": true,
          "mode": "list",
          "value": "1759",
          "cachedResultUrl": "https://backend.blotato.com/v2/accounts/1759",
          "cachedResultName": "Firass Ben"
        },
        "facebookPageId": {
          "__rl": true,
          "mode": "list",
          "value": "101603614680195",
          "cachedResultUrl": "https://backend.blotato.com/v2/accounts/1759/subaccounts/101603614680195",
          "cachedResultName": "Dr. Firas"
        },
        "postContentText": "={{ $('OpenAI Post Generation').item.json.message.content }}",
        "postContentMediaUrls": "={{ $json.url }}"
      },
      "credentials": {
        "blotatoApi": {
          "id": "wozsYJYLfCZO37j8",
          "name": "Blotato account"
        }
      },
      "typeVersion": 2
    },
    {
      "id": "06b1aa18-c78f-4d52-9ddb-6532eae175f4",
      "name": "Twitter (X)",
      "type": "@blotato/n8n-nodes-blotato.blotato",
      "position": [
        5024,
        1728
      ],
      "parameters": {
        "options": {},
        "platform": "twitter",
        "accountId": {
          "__rl": true,
          "mode": "list",
          "value": "1289",
          "cachedResultUrl": "https://backend.blotato.com/v2/accounts/1289",
          "cachedResultName": "Docteur_Firas"
        },
        "postContentText": "={{ $('OpenAI Post Generation').item.json.message.content }}",
        "postContentMediaUrls": "={{ $json.url }}"
      },
      "credentials": {
        "blotatoApi": {
          "id": "wozsYJYLfCZO37j8",
          "name": "Blotato account"
        }
      },
      "typeVersion": 2
    },
    {
      "id": "0b9bc493-3327-429e-88d8-4de803f4c800",
      "name": "OpenAI Post Generation1",
      "type": "@n8n/n8n-nodes-langchain.openAi",
      "position": [
        4016,
        1152
      ],
      "parameters": {
        "modelId": {
          "__rl": true,
          "mode": "id",
          "value": "gpt-4o-mini"
        },
        "options": {},
        "messages": {
          "values": [
            {
              "role": "system",
              "content": "You are an expert French copywriter who specializes in creating short, punchy, and visually effective YouTube thumbnail texts.\nYour goal is to write 4 concise and impactful text elements in French, based on the provided YouTube video title, description, and channel context.\nKeep the phrasing visually strong and emotionally engaging — it must capture attention at first glance.\nAvoid emojis, hashtags, and punctuation except when necessary for readability.\nEach phrase should be formatted as plain text (no markdown, no quotes)."
            },
            {
              "content": "=Based on the following information:\n\nVideo Title: {{ $json.title }}\n\nVideo Description: {{ $json.description }}\n\nChannel Name: {{ $json.channelTitle }}\n\nGenerate 4 text elements for a YouTube thumbnail in French:\n\nMain Title (Top) — 3 strong words maximum that summarize the main idea or hook. maximum 20 characters.\n\nSecondary Title (Center) — 4 words maximum that create curiosity or highlight the benefit of the video. maximum 20 characters.\n\nBottom Title (Footer) — a short supportive phrase or promise related to the topic. maximum 20 characters.\n\nLabel (Top-Right) — one single keyword describing the type of content (e.g. “Tutoriel”, “Astuce”, “Workflow”, “Cours”, “Formation”).\n\nConstraints:\n\nAll outputs must be in French.\n\nUse natural, human language that feels like it belongs on a modern YouTube thumbnail.\n\nAvoid repeating the exact same words as in the video title — paraphrase creatively.\n\nOutput in this JSON structure:\n\n{\n  \"main_title\": \"...\",\n  \"center_title\": \"...\",\n  \"bottom_title\": \"...\",\n  \"label\": \"...\"\n}"
            }
          ]
        },
        "jsonOutput": true
      },
      "credentials": {
        "openAiApi": {
          "id": "QmtwfFk8iBkuCXOX",
          "name": "n8n free OpenAI API credits"
        }
      },
      "typeVersion": 1.8
    },
    {
      "id": "17b9ee87-c823-4eab-9f6a-63cd3926ea2e",
      "name": "Télécharger la Miniature",
      "type": "n8n-nodes-templated.templated",
      "position": [
        5040,
        1152
      ],
      "parameters": {
        "renderId": "={{ $json.id }}",
        "operation": "retrieveRender",
        "requestOptions": {}
      },
      "credentials": {
        "templatedApi": {
          "id": "N8DKDKLktjraHiaQ",
          "name": "Templated account"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "3b65e073-31be-4bcf-bcf2-f126a3199ca7",
      "name": "Générer la Miniature via Templated.io",
      "type": "n8n-nodes-templated.templated",
      "position": [
        4480,
        1152
      ],
      "parameters": {
        "layers": {
          "layer": [
            {
              "text": "={{ $json.message.content.main_title }}",
              "layerName": "title-1"
            },
            {
              "text": "={{ $json.message.content.center_title }}",
              "layerName": "title-2"
            },
            {
              "text": "={{ $json.message.content.label }}",
              "layerName": "word"
            },
            {
              "text": "={{ $json.message.content.bottom_title }}",
              "layerName": "episode"
            }
          ]
        },
        "template": {
          "__rl": true,
          "mode": "list",
          "value": "e97fb8b6-d548-4e19-8783-d924f1a93af3",
          "cachedResultName": "Thumbnail YT n8n"
        },
        "requestOptions": {}
      },
      "credentials": {
        "templatedApi": {
          "id": "N8DKDKLktjraHiaQ",
          "name": "Templated account"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "1f2550f0-076a-4f7d-9b88-f84767527a9e",
      "name": "Téléchargement des fichiers",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        4032,
        1440
      ],
      "parameters": {
        "url": "={{ $json.url }}",
        "options": {
          "response": {
            "response": {
              "responseFormat": "file",
              "outputPropertyName": "thumbnail"
            }
          }
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "fc02c5c7-c022-47fd-9c1a-44e6b76df0a1",
      "name": "Sauvegarder dans Google Sheets",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        4480,
        1440
      ],
      "parameters": {
        "columns": {
          "value": {
            "STATUS": "created",
            "ID VIDEO": "={{ $('Prepare Text Data').first().json.videoId }}",
            "YOUTUBE URL": "={{ $('Extract Video ID').first().json.videoUrl }}",
            "YOUTUBE TITLE": "={{ $('Prepare Text Data').first().json.title }}",
            "GOOGLE DRIVE URL": "={{ $json.webContentLink }}"
          },
          "schema": [
            {
              "id": "ID VIDEO",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "ID VIDEO",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "YOUTUBE URL",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "YOUTUBE URL",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "YOUTUBE TITLE",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "YOUTUBE TITLE",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "GOOGLE DRIVE URL",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "GOOGLE DRIVE URL",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "POST DESCRIPTION",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "POST DESCRIPTION",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "STATUS",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "STATUS",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "append",
        "sheetName": {
          "__rl": true,
          "mode": "name",
          "value": "YouTube"
        },
        "documentId": {
          "__rl": true,
          "mode": "id",
          "value": "={{ $('Workflow Configuration').first().json.googleSheetsId }}"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "YlIXFU6zUDsqwmRG",
          "name": "Google Sheets account"
        }
      },
      "typeVersion": 4.7
    },
    {
      "id": "9e85c26f-b85a-49a0-89b0-97743e5dcdd9",
      "name": "📋 APERÇU DU WORKFLOW",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        3120,
        784
      ],
      "parameters": {
        "color": 7,
        "width": 400,
        "height": 652,
        "content": "# 🚀 Automate YouTube thumbnail creation\n\n### đŸŽ„ Watch This Tutorial\n\n@[youtube](CenAtzPceQU)\n\nThis workflow automates YouTube thumbnail generation and social media distribution. Send a YouTube URL via Telegram, and the workflow will:\n\n✅ Extract video metadata from YouTube API\n✅ Generate custom thumbnail using [templated.io](https://templated.io/?utm_campaign=drfiras)\n✅ Store thumbnail in Google Drive\n✅ Log activity in Google Sheets\n✅ Create AI-powered social media posts\n✅ Publish to LinkedIn, Facebook, and Twitter\n✅ Send notifications via Email and Telegram"
      },
      "typeVersion": 1
    },
    {
      "id": "f15bdc4e-5493-4de8-b3b7-66d3e0fbbe01",
      "name": "🔧 ÉTAPE 1 : Configuration",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        3536,
        784
      ],
      "parameters": {
        "color": 4,
        "width": 1680,
        "height": 270,
        "content": "## đŸ“€ STEP 1: đŸ“± Telegram Trigger: Receives YouTube URLs from users\n\n⚙ Workflow Configuration: Central hub for all API keys and settings\n\nRequired fields:\n‱ youtubeApiKey - Get from Google Cloud Console\n‱ templatedApiKey - Get from [templated.io](https://templated.io/?utm_campaign=drfiras) dashboard\n‱ templatedTemplateId - Your thumbnail template ID\n‱ googleDriveFolderId - Target folder for thumbnails\n‱ googleSheetsId - Spreadsheet for logging\n‱ emailRecipient - Notification email address\n‱ blotatoApiKey - Blotato API credentials\n‱ linkedinAccountId, facebookPageId, twitterAccountId"
      },
      "typeVersion": 1
    },
    {
      "id": "84d95f0c-9c9f-4e23-9161-aa3631a6c27b",
      "name": "🎹 ÉTAPE 3 : GĂ©nĂ©ration de la Miniature",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        3536,
        1072
      ],
      "parameters": {
        "color": 5,
        "width": 1680,
        "height": 264,
        "content": "## đŸ“€ STEP 2: 🎹 Generate Thumbnail: Sends POST request to [templated.io](https://templated.io/?utm_campaign=drfiras) \nAPI with video title and description to generate custom thumbnail\n\n⏳ Wait for Rendering: Pauses workflow for 5 minutes \nto allow [templated.io](https://templated.io/?utm_campaign=drfiras) to complete thumbnail generation\n\nâŹ‡ïž Download Thumbnail: Fetches the generated thumbnail image \nfile from [templated.io](https://templated.io/?utm_campaign=drfiras) response URL and stores as binary data\n\nNote: Adjust wait time based on your template complexity"
      },
      "typeVersion": 1
    },
    {
      "id": "57361e93-16f1-4a1b-9369-99952249a7f9",
      "name": "📱 ÉTAPE 5 : Notifications",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        3536,
        1360
      ],
      "parameters": {
        "color": 2,
        "width": 1680,
        "height": 264,
        "content": "## đŸ“€ STEP 3: 📧 Send Gmail: Sends email notification with:\n‱ Subject: YouTube Thumbnail Generated + video title\n‱ HTML body with video details\n‱ Thumbnail attachment\n‱ Google Drive link\n\n☁ Upload to Google Drive: Uploads thumbnail to specified \n\n💬 Send Telegram Notification: Sends thumbnail with:\n‱ Video title\n‱ Google Drive link\n‱ Success confirmation message"
      },
      "typeVersion": 1
    },
    {
      "id": "844d603f-3246-48da-a899-6e30022df65e",
      "name": "⚙ GUIDE D'INSTALLATION",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        3120,
        1456
      ],
      "parameters": {
        "color": 7,
        "width": 402,
        "height": 448,
        "content": "📋 INSTALLATION CHECKLIST\n\n1ïžâƒŁ Get YouTube Data API v3 key from Google Cloud Console\n2ïžâƒŁ Create [templated.io](https://templated.io/?utm_campaign=drfiras) account and get API key + template ID\n3ïžâƒŁ Set up Telegram bot using @BotFather\n4ïžâƒŁ Create Google Drive folder and copy folder ID from URL\n5ïžâƒŁ Create Google Sheets with columns: Date, Video ID, Video URL, Title, Thumbnail Link, Status\n6ïžâƒŁ Get Blotato API key from dashboard\n7ïžâƒŁ Connect social media accounts to Blotato and get account IDs\n8ïžâƒŁ Fill all values in Workflow Configuration node\n9ïžâƒŁ Test with a YouTube URL via Telegram\n\n## 📬 Need Help or Want to Customize This?\n**Contact me for consulting and support:** [LinkedIn](https://www.linkedin.com/in/dr-firas/) / [YouTube](https://www.youtube.com/@DRFIRASS)  / [🚀 Mes Ateliers n8n  ](https://hotm.art/formation-n8n)\n"
      },
      "typeVersion": 1
    },
    {
      "id": "1579f6a0-8326-4c06-b5bf-29c0b1d0fafd",
      "name": "Étape 5 - Publication",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        3536,
        1648
      ],
      "parameters": {
        "color": 5,
        "width": 1692,
        "height": 260,
        "content": "## đŸ“€ STEP 4: PUBLISHING\n\n### Install the Blotato [Blotato](https://blotato.com/?ref=firas) Node in n8n (Community Nodes)\n1. In n8n, open **Settings → Community Nodes**.  \n2. Click **Install**, then add: `@blotato/n8n-nodes-blotato`.  \n3. Log in to **Blotato**.  \n4. Go to **Settings → API Keys**.  \n5. In n8n → **Credentials → New**.  \n6. Choose **Blotato API** \n(provided by the community node you installed).  "
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "pinData": {},
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "387ca33f-5a76-458f-a9f2-81ff3af75d1b",
  "connections": {
    "caadaf4e-8b06-41b6-950c-41846f684915": {
      "main": [
        []
      ]
    },
    "9d78b633-b9d3-47a4-bcd7-0e48739cf0eb": {
      "main": [
        []
      ]
    },
    "7ea4143c-b953-4430-908b-e7b13a8ff7eb": {
      "main": [
        [
          {
            "node": "e52e1427-e362-4731-9a4c-92a5e4610687",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "06b1aa18-c78f-4d52-9ddb-6532eae175f4": {
      "main": [
        []
      ]
    },
    "7bda8d47-fc97-4372-a447-c23bc0bd3c8f": {
      "main": [
        [
          {
            "node": "0cc8b6fe-9fe9-41ac-aa66-4a90e1995f70",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "41092605-3611-4017-828a-3c7bb41a2eb6": {
      "main": [
        [
          {
            "node": "dec01d59-d7a5-4a53-9971-e62a276cbbfb",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "1f2550f0-076a-4f7d-9b88-f84767527a9e": {
      "main": [
        [
          {
            "node": "ca6a5f90-4174-42dc-a4f5-f1c14d4f2f40",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "6f6ed14b-0e3c-45e3-8e78-72cc4748db90": {
      "main": [
        [
          {
            "node": "0b9bc493-3327-429e-88d8-4de803f4c800",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "17b9ee87-c823-4eab-9f6a-63cd3926ea2e": {
      "main": [
        [
          {
            "node": "1f2550f0-076a-4f7d-9b88-f84767527a9e",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "0cc8b6fe-9fe9-41ac-aa66-4a90e1995f70": {
      "main": [
        [
          {
            "node": "6f6ed14b-0e3c-45e3-8e78-72cc4748db90",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "f391676c-8826-4a3e-b19a-2e58c7e7c796": {
      "main": [
        [
          {
            "node": "17b9ee87-c823-4eab-9f6a-63cd3926ea2e",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "fc02c5c7-c022-47fd-9c1a-44e6b76df0a1": {
      "main": [
        [
          {
            "node": "7ea4143c-b953-4430-908b-e7b13a8ff7eb",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "b5ee3daa-64ce-4782-837d-142bc5ee3c77": {
      "main": [
        [
          {
            "node": "5210d570-ac35-4175-b783-af582160befa",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "ca6a5f90-4174-42dc-a4f5-f1c14d4f2f40": {
      "main": [
        [
          {
            "node": "fc02c5c7-c022-47fd-9c1a-44e6b76df0a1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "dec01d59-d7a5-4a53-9971-e62a276cbbfb": {
      "main": [
        [
          {
            "node": "7bda8d47-fc97-4372-a447-c23bc0bd3c8f",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "0b9bc493-3327-429e-88d8-4de803f4c800": {
      "main": [
        [
          {
            "node": "3b65e073-31be-4bcf-bcf2-f126a3199ca7",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "5210d570-ac35-4175-b783-af582160befa": {
      "main": [
        [
          {
            "node": "9d78b633-b9d3-47a4-bcd7-0e48739cf0eb",
            "type": "main",
            "index": 0
          },
          {
            "node": "caadaf4e-8b06-41b6-950c-41846f684915",
            "type": "main",
            "index": 0
          },
          {
            "node": "06b1aa18-c78f-4d52-9ddb-6532eae175f4",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "e52e1427-e362-4731-9a4c-92a5e4610687": {
      "main": [
        [
          {
            "node": "b5ee3daa-64ce-4782-837d-142bc5ee3c77",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "3b65e073-31be-4bcf-bcf2-f126a3199ca7": {
      "main": [
        [
          {
            "node": "f391676c-8826-4a3e-b19a-2e58c7e7c796",
            "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.

Workflows recommandés

đŸ’„ Automatisation des publicitĂ©s vidĂ©o avec NanoBanana, Seedream 4, ChatGPT Image et Veo 3 - VIDE
Utiliser l'IA (NanoBanana, Seedream, GPT-4o, Veo 3) pour automatiser et publier des campagnes publicitaires vidéo
Set
Code
Wait
+
Set
Code
Wait
63 NƓudsDr. Firas
Création de contenu
Générateur de vidéos TikTok virales : création automatique de vidéos UGC avec des avatars VEED
Utiliser VEED.io AI avatar, ElevenLabs et GPT-4 pour créer automatiquement des vidéos TikTok
Set
Code
Wait
+
Set
Code
Wait
35 NƓudsDr. Firas
Création de contenu
đŸ’„ HeyGen II - Clone-moi - De l'idĂ©e Ă  la publication : Automatisation de vidĂ©os GPT-5 pour YouTube, TikTok et Instagram - VidĂ©o
Automatiser la création de vidéos à partir d'entrées vocales avec HeyGen, GPT-5 et la publication sociale
If
Set
Wait
+
If
Set
Wait
41 NƓudsDr. Firas
Création de contenu
đŸ’„ HeyGen - De l'idĂ©e Ă  la publication : Automatisation de vidĂ©o GPT-5 pour YouTube, TikTok et Instagram - VidĂ©o
Générer et publier des vidéos d'avatar IA avec GPT-5 sur les plateformes de médias sociaux
If
Set
Wait
+
If
Set
Wait
41 NƓudsDr. Firas
Création de contenu
đŸ’„ GĂ©nĂ©rer des vidĂ©os virales IA avec NanoBanana et VEO3, les partager sur les rĂ©seaux sociaux avec Blotato - VidĂ©o
Générez des vidéos virales IA avec NanoBanana et VEO3, et partagez-les sur les réseaux sociaux via Blotato
Set
Code
Wait
+
Set
Code
Wait
47 NƓudsDr. Firas
Divers
đŸ’„ GĂ©nĂ©ration de vidĂ©os UGC promotionnelles pour e-commerce avec Blotato et Sora 2
Générer des vidéos promotionnelles UGC pour le e-commerce avec OpenAI, Sora 2 et Blotato
If
Set
Code
+
If
Set
Code
34 NƓudsDr. Firas
Création de contenu
Informations sur le workflow
Niveau de difficulté
Avancé
Nombre de nƓuds25
Catégorie2
Types de nƓuds13
Description de la difficulté

AdaptĂ© aux utilisateurs avancĂ©s, avec des workflows complexes contenant 16+ nƓuds

Auteur
Dr. Firas

Dr. Firas

@drfiras

Automation expert and certified trainer. I create hands-on courses to master automation with n8n. Contact me to access my exclusive training and start building powerful workflows today. 🚀

Liens externes
Voir sur n8n.io →

Partager ce workflow

Catégories

Catégories: 34