8
n8n 한국어amn8n.com

YouTube SEO 자동화 1

고급

이것은Content Creation, Multimodal AI분야의자동화 워크플로우로, 19개의 노드를 포함합니다.주로 If, Set, Code, HttpRequest, GoogleSheets 등의 노드를 사용하며. GPT-4o와 Runway를 사용하여 비디오 스크립트에서 YouTube SEO 내용 및 썸네일 생성

사전 요구사항
  • 대상 API의 인증 정보가 필요할 수 있음
  • Google Sheets API 인증 정보
  • OpenAI API Key
워크플로우 미리보기
노드 연결 관계를 시각적으로 표시하며, 확대/축소 및 이동을 지원합니다
워크플로우 내보내기
다음 JSON 구성을 복사하여 n8n에 가져오면 이 워크플로우를 사용할 수 있습니다
{
  "id": "D0sZR93pIfNqpzPN",
  "meta": {
    "instanceId": "b575ae39acc98e53d75e50d1b5147e8b0922704c4aeb3230092d8e2a78247bc3",
    "templateCredsSetupCompleted": true
  },
  "name": "Youtube SEO Automation 1",
  "tags": [],
  "nodes": [
    {
      "id": "f268ec0d-7715-41bd-9e1a-7cc9285c5ec9",
      "name": "Google 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": "아무 작업 없음",
      "type": "n8n-nodes-base.noOp",
      "position": [
        -2528,
        416
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "f92a73f2-3901-4576-b1e8-9836672a5977",
      "name": "영어 스크립트 사용 가능 여부 확인",
      "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": "영어 스크립트 생성",
      "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": "영어 스크립트 필드 생성",
      "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": "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": "Youtube 태그, 키워드 등 생성",
      "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": "다른 주제 분리를 위한 JS 코드",
      "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": "태그, 설명 등으로 GSheet 행 업데이트",
      "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": "동적 프롬프트 생성을 위한 Python 코드",
      "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": "썸네일 이미지 생성을 위한 Runware API 호출 요청",
      "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": "썸네일 이미지로 GSheet 업데이트",
      "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": "스티커 메모",
      "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": "스티커 메모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": "스티커 메모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": "스티커 메모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": "스티커 메모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": "스티커 메모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": "스티커 메모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
          }
        ]
      ]
    }
  }
}
자주 묻는 질문

이 워크플로우를 어떻게 사용하나요?

위의 JSON 구성 코드를 복사하여 n8n 인스턴스에서 새 워크플로우를 생성하고 "JSON에서 가져오기"를 선택한 후, 구성을 붙여넣고 필요에 따라 인증 설정을 수정하세요.

이 워크플로우는 어떤 시나리오에 적합한가요?

고급 - 콘텐츠 제작, 멀티모달 AI

유료인가요?

이 워크플로우는 완전히 무료이며 직접 가져와 사용할 수 있습니다. 다만, 워크플로우에서 사용하는 타사 서비스(예: OpenAI API)는 사용자 직접 비용을 지불해야 할 수 있습니다.

워크플로우 정보
난이도
고급
노드 수19
카테고리2
노드 유형9
난이도 설명

고급 사용자를 위한 16+개 노드의 복잡한 워크플로우

외부 링크
n8n.io에서 보기

이 워크플로우 공유

카테고리

카테고리: 34