8
n8n 한국어amn8n.com

트렌드 스프레드시트에서 SEO 콘텐츠를 스토리지(SharePoint/Drive/Dropbox)로 생성

고급

이것은Content Creation, Multimodal AI분야의자동화 워크플로우로, 47개의 노드를 포함합니다.주로 If, Set, Code, Wait, Gmail 등의 노드를 사용하며. GPT-4o, FAL AI 및 다중 저장소 지원을 사용하여 트렌드에서 SEO 콘텐츠 자동 생성

사전 요구사항
  • Google 계정 및 Gmail API 인증 정보
  • HTTP Webhook 엔드포인트(n8n이 자동으로 생성)
  • 대상 API의 인증 정보가 필요할 수 있음
  • OpenAI API Key
워크플로우 미리보기
노드 연결 관계를 시각적으로 표시하며, 확대/축소 및 이동을 지원합니다
워크플로우 내보내기
다음 JSON 구성을 복사하여 n8n에 가져오면 이 워크플로우를 사용할 수 있습니다
{
  "id": "J5BZO9ezilMiswH7",
  "meta": {
    "instanceId": "2cf742429c2e3ee4e5a20069d3d8a75208519303b864f026a79464efa726bd95",
    "templateCredsSetupCompleted": true
  },
  "name": "Generate SEO content from trends spreadsheet to storage (SharePoint/Drive/Dropbox)",
  "tags": [
    {
      "id": "wpMIpESnBZpdPCpj",
      "name": "Marketing",
      "createdAt": "2025-06-03T11:38:37.020Z",
      "updatedAt": "2025-06-03T11:38:37.020Z"
    }
  ],
  "nodes": [
    {
      "id": "5a9c11b3-a0d8-419f-a447-828ca7908f0a",
      "name": "Read Trends Data",
      "type": "n8n-nodes-base.spreadsheetFile",
      "position": [
        -4288,
        -2048
      ],
      "parameters": {
        "options": {}
      },
      "typeVersion": 1
    },
    {
      "id": "9988898b-23ab-4b37-8bc2-76a97f96c669",
      "name": "Select Topic from Trends",
      "type": "n8n-nodes-base.code",
      "position": [
        -4016,
        -2048
      ],
      "parameters": {
        "jsCode": "// Get all trends from the spreadsheet\nconst trends = $('Read Trends Data').all().map(item => item.json.Trend).filter(trend => trend);\n\n// Random selection\nconst randomTopic = trends[Math.floor(Math.random() * trends.length)];\n\n// For cyclic selection, you could implement a counter mechanism\n// This is a simplified version using random selection\n\nreturn {\n  json: {\n    Selected_Topic: randomTopic,\n    Available_Trends: trends,\n    Selection_Method: 'Random'\n  }\n};"
      },
      "typeVersion": 1
    },
    {
      "id": "362b5cd0-5253-4ffe-84dc-d1c286977b7d",
      "name": "Build Newsletter",
      "type": "n8n-nodes-base.code",
      "position": [
        -2608,
        -2512
      ],
      "parameters": {
        "jsCode": "// Get the raw AI output (string with possible markdown)\nlet rawOutput = $node[\"Prepare Newsletter Data\"].json.output;\n\n// Strip markdown code block if present (```json ... ```)\nrawOutput = rawOutput.replace(/```json|```/g, '').trim();\n\n// Parse cleaned JSON string\nconst aiContent = JSON.parse(rawOutput);\n\n// Get template and selected topic\nconst templateContent = $node[\"Extract from Text File\"].json.data;\nconst selectedTopic = $json.Selected_Topic || 'Thema fehlt';\n\n// Helper for safe replacements\nconst getSafe = (obj, key) => obj?.[key] ?? 'undefined';\n\n// Replace placeholders for German content\nlet newsletterContent = templateContent;\nnewsletterContent = newsletterContent.replace(/\\{\\{INTRODUCTION_DE\\}\\}/g, getSafe(aiContent, 'INTRODUCTION_DE'));\nnewsletterContent = newsletterContent.replace(/\\{\\{TOPIC_DE\\}\\}/g, getSafe(aiContent, 'TOPIC_DE'));\nnewsletterContent = newsletterContent.replace(/\\{\\{DESCRIPTION_DE\\}\\}/g, getSafe(aiContent, 'DESCRIPTION_DE'));\nnewsletterContent = newsletterContent.replace(/\\{\\{TEASER1_DE\\}\\}/g, getSafe(aiContent, 'TEASER1_DE'));\nnewsletterContent = newsletterContent.replace(/\\{\\{TEASER2_DE\\}\\}/g, getSafe(aiContent, 'TEASER2_DE'));\nnewsletterContent = newsletterContent.replace(/\\{\\{TEASER3_DE\\}\\}/g, getSafe(aiContent, 'TEASER3_DE'));\nnewsletterContent = newsletterContent.replace(/\\{\\{CTA_DE\\}\\}/g, getSafe(aiContent, 'CTA_DE'));\nnewsletterContent = newsletterContent.replace(/\\{\\{FOOTER_TEXT_DE\\}\\}/g, getSafe(aiContent, 'FOOTER_TEXT_DE'));\nnewsletterContent = newsletterContent.replace(/\\{\\{FOOTER_NAME_DE\\}\\}/g, getSafe(aiContent, 'FOOTER_NAME_DE'));\n\n// Replace placeholders for English content\nnewsletterContent = newsletterContent.replace(/\\{\\{TOPIC_TITLE_EN\\}\\}/g, getSafe(aiContent, 'TOPIC_TITLE_EN'));\nnewsletterContent = newsletterContent.replace(/\\{\\{INTRODUCTION_EN\\}\\}/g, getSafe(aiContent, 'INTRODUCTION_EN'));\nnewsletterContent = newsletterContent.replace(/\\{\\{TOPIC_EN\\}\\}/g, getSafe(aiContent, 'TOPIC_EN'));\nnewsletterContent = newsletterContent.replace(/\\{\\{DESCRIPTION_EN\\}\\}/g, getSafe(aiContent, 'DESCRIPTION_EN'));\nnewsletterContent = newsletterContent.replace(/\\{\\{TEASER1_EN\\}\\}/g, getSafe(aiContent, 'TEASER1_EN'));\nnewsletterContent = newsletterContent.replace(/\\{\\{TEASER2_EN\\}\\}/g, getSafe(aiContent, 'TEASER2_EN'));\nnewsletterContent = newsletterContent.replace(/\\{\\{TEASER3_EN\\}\\}/g, getSafe(aiContent, 'TEASER3_EN'));\nnewsletterContent = newsletterContent.replace(/\\{\\{CTA_EN\\}\\}/g, getSafe(aiContent, 'CTA_EN'));\nnewsletterContent = newsletterContent.replace(/\\{\\{FOOTER_TEXT_EN\\}\\}/g, getSafe(aiContent, 'FOOTER_TEXT_EN'));\nnewsletterContent = newsletterContent.replace(/\\{\\{FOOTER_NAME_EN\\}\\}/g, getSafe(aiContent, 'FOOTER_NAME_EN'));\n\n// Add date if needed (you can add this to template if required)\nnewsletterContent = newsletterContent.replace(/\\{\\{DATE\\}\\}/g, new Date().toLocaleDateString('de-DE'));\n\n// Return final output\nreturn {\n  json: {\n    newsletter_content: newsletterContent,\n    topic: selectedTopic,\n    topic_de: getSafe(aiContent, 'TOPIC_DE'),\n    topic_en: getSafe(aiContent, 'TOPIC_EN'),\n    generated_date: new Date().toISOString(),\n    // Include all generated content for debugging/reference\n    ai_content: aiContent\n  }\n}; "
      },
      "typeVersion": 1
    },
    {
      "id": "7e3d41de-6fdd-4b7d-8e56-2f967108dad2",
      "name": "Check Approval Status",
      "type": "n8n-nodes-base.if",
      "position": [
        624,
        -2144
      ],
      "parameters": {
        "conditions": {
          "string": [
            {
              "value1": "={{ $json.data.approved }}",
              "value2": "true",
              "operation": "contains"
            }
          ]
        }
      },
      "typeVersion": 1
    },
    {
      "id": "85b0946e-4df0-43e5-9615-020b326b85c0",
      "name": "OpenAI 채팅 모델",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        -3424,
        -2320
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4o-mini"
        },
        "options": {}
      },
      "credentials": {
        "openAiApi": {
          "id": "E4PFATctY0kV00hl",
          "name": "OpenAi account"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "dca2ef6d-5179-46a4-b916-5f2bfcf79d1e",
      "name": "Get Trends XLSX",
      "type": "n8n-nodes-base.microsoftSharePoint",
      "position": [
        -4512,
        -2048
      ],
      "parameters": {
        "file": {
          "__rl": true,
          "mode": "list",
          "value": "01M45PWA7UGSM3K5CVPFDYJROPHJOTUYP5",
          "cachedResultName": "social-media-trends.xls"
        },
        "site": {
          "__rl": true,
          "mode": "list",
          "value": "plemeo.sharepoint.com,f304c34c-1252-4b99-a852-059c2036c718,c3bf26ab-bf44-4334-8e5b-e8b680bb9e1d",
          "cachedResultName": "plemeo"
        },
        "folder": {
          "__rl": true,
          "mode": "list",
          "value": "01M45PWAZCILJ3WHMIXBGZA2UP2JMQ5CXO",
          "cachedResultName": "Newsletter Workflow"
        },
        "requestOptions": {}
      },
      "credentials": {
        "microsoftSharePointOAuth2Api": {
          "id": "jZkLTQXyVEzxtmp3",
          "name": "Microsoft SharePoint account"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "c8d706a3-3bad-4686-a712-350b49314935",
      "name": "Get Newsletter Template",
      "type": "n8n-nodes-base.microsoftSharePoint",
      "position": [
        -3024,
        -2512
      ],
      "parameters": {
        "file": {
          "__rl": true,
          "mode": "list",
          "value": "01M45PWAZJXIV2AOHITFCL5DPA4QV764XS",
          "cachedResultName": "newsletter_template.html"
        },
        "site": {
          "__rl": true,
          "mode": "list",
          "value": "plemeo.sharepoint.com,f304c34c-1252-4b99-a852-059c2036c718,c3bf26ab-bf44-4334-8e5b-e8b680bb9e1d",
          "cachedResultName": "plemeo"
        },
        "folder": {
          "__rl": true,
          "mode": "list",
          "value": "01M45PWAZCILJ3WHMIXBGZA2UP2JMQ5CXO",
          "cachedResultName": "Newsletter Workflow"
        },
        "requestOptions": {}
      },
      "credentials": {
        "microsoftSharePointOAuth2Api": {
          "id": "jZkLTQXyVEzxtmp3",
          "name": "Microsoft SharePoint account"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "d1466c51-eb0b-4994-ac1a-e234821de281",
      "name": "스위치",
      "type": "n8n-nodes-base.switch",
      "position": [
        -2688,
        -1760
      ],
      "parameters": {
        "rules": {
          "values": [
            {
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "0de41f03-c4cc-45d8-bb11-0458995cdb2d",
                    "operator": {
                      "type": "boolean",
                      "operation": "true",
                      "singleValue": true
                    },
                    "leftValue": "={{ $('Configuration Settings').first().json.ENV_INCLUDE_VIDEO }}",
                    "rightValue": "true"
                  }
                ]
              }
            },
            {
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "9ebba67d-70fb-4fcd-b62a-5ea6d97a0a3c",
                    "operator": {
                      "type": "boolean",
                      "operation": "false",
                      "singleValue": true
                    },
                    "leftValue": "={{ $('Configuration Settings').first().json.ENV_INCLUDE_VIDEO }}",
                    "rightValue": "false"
                  }
                ]
              }
            }
          ]
        },
        "options": {}
      },
      "typeVersion": 3.2
    },
    {
      "id": "0b9a10a8-c84a-47ba-bd8f-0d01d86f013f",
      "name": "Get Video",
      "type": "n8n-nodes-base.httpRequest",
      "onError": "continueRegularOutput",
      "position": [
        -1824,
        -1824
      ],
      "parameters": {
        "url": "=https://queue.fal.run/fal-ai/kling-video/requests/{{ $('Create FAL Video').item.json.request_id }}",
        "options": {},
        "sendQuery": true,
        "sendHeaders": true,
        "queryParameters": {
          "parameters": [
            {
              "name": "logs",
              "value": "true"
            }
          ]
        },
        "headerParameters": {
          "parameters": [
            {
              "name": "Authorization",
              "value": "=Key {{ $('Configuration Settings').first().json.ENV_FALAI_APIKEY }}"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "db8e8f18-f2d8-476f-ac83-b365aa67451c",
      "name": "Create FAL Video",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -2320,
        -1760
      ],
      "parameters": {
        "url": "https://queue.fal.run/fal-ai/kling-video/v2/master/image-to-video",
        "method": "POST",
        "options": {},
        "sendBody": true,
        "sendHeaders": true,
        "bodyParameters": {
          "parameters": [
            {
              "name": "prompt",
              "value": "={{ $('Parse Fields').item.json.video_prompt }}"
            },
            {
              "name": "image_url",
              "value": "={{ $('Switch').item.json.downloadUrl }}"
            },
            {
              "name": "duration",
              "value": "={{ $('Configuration Settings').first().json.ENV_FALAI_VIDEO_DURATION }}"
            }
          ]
        },
        "headerParameters": {
          "parameters": [
            {
              "name": "Content-Type",
              "value": "application/json"
            },
            {
              "name": "Authorization",
              "value": "=Key {{ $('Configuration Settings').first().json.ENV_FALAI_APIKEY }}"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "2a729954-8812-473e-a0be-0c9399a4c454",
      "name": "Create Audio",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -1376,
        -1760
      ],
      "parameters": {
        "url": "https://queue.fal.run/fal-ai/lyria2",
        "method": "POST",
        "options": {},
        "sendBody": true,
        "sendHeaders": true,
        "bodyParameters": {
          "parameters": [
            {
              "name": "prompt",
              "value": "={{ $('Parse Fields').item.json.audio_prompt }}"
            }
          ]
        },
        "headerParameters": {
          "parameters": [
            {
              "name": "Authorization",
              "value": "=Key {{ $('Configuration Settings').first().json.ENV_FALAI_APIKEY }}"
            },
            {
              "name": "Content-Type",
              "value": "application/json"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "6984c8c5-0f4c-4881-85fd-782b848ca5f6",
      "name": "대기 for Audio",
      "type": "n8n-nodes-base.wait",
      "position": [
        -1152,
        -1760
      ],
      "webhookId": "ddffe40c-99fa-4a7d-a626-902d8dd363d9",
      "parameters": {
        "amount": 59
      },
      "typeVersion": 1.1
    },
    {
      "id": "a172b117-221e-4707-a213-f70397e70418",
      "name": "Get Audio",
      "type": "n8n-nodes-base.httpRequest",
      "onError": "continueRegularOutput",
      "position": [
        -944,
        -1824
      ],
      "parameters": {
        "url": "=https://queue.fal.run/fal-ai/lyria2/requests/{{ $('Create Audio').item.json.request_id }}",
        "options": {},
        "sendHeaders": true,
        "headerParameters": {
          "parameters": [
            {
              "name": "Authorization",
              "value": "=Key {{ $('Configuration Settings').first().json.ENV_FALAI_APIKEY }}"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "f4b95592-3803-4dca-a41d-71bd20746cb4",
      "name": "Create 병합 Request",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -496,
        -1760
      ],
      "parameters": {
        "url": "https://queue.fal.run/fal-ai/ffmpeg-api/merge-audio-video",
        "method": "POST",
        "options": {},
        "sendBody": true,
        "sendHeaders": true,
        "bodyParameters": {
          "parameters": [
            {
              "name": "video_url",
              "value": "={{ $('Get Video').first().json.video.url }}"
            },
            {
              "name": "audio_url",
              "value": "={{ $json.audio.url }}"
            }
          ]
        },
        "headerParameters": {
          "parameters": [
            {
              "name": "Authorization",
              "value": "=Key {{ $('Configuration Settings').first().json.ENV_FALAI_APIKEY }}"
            },
            {
              "name": "Content-Type",
              "value": "application/json"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "f419cf55-ca78-4beb-b62d-910e1db9e841",
      "name": "Wait for 병합",
      "type": "n8n-nodes-base.wait",
      "position": [
        -272,
        -1760
      ],
      "webhookId": "ffb62d76-30ac-49b9-a29e-f2ff100522b9",
      "parameters": {
        "amount": 50
      },
      "typeVersion": 1.1
    },
    {
      "id": "336374fa-8e2d-4402-b152-d68fc407a885",
      "name": "Get 병합d Video",
      "type": "n8n-nodes-base.httpRequest",
      "onError": "continueRegularOutput",
      "position": [
        -64,
        -1760
      ],
      "parameters": {
        "url": "=https://queue.fal.run/fal-ai/ffmpeg-api/requests/{{ $('Create Merge Request').item.json.request_id }}",
        "options": {},
        "sendHeaders": true,
        "headerParameters": {
          "parameters": [
            {
              "name": "Authorization",
              "value": "=Key {{ $('Configuration Settings').first().json.ENV_FALAI_APIKEY }}"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "d4449512-70d3-4856-b5fc-606b7b505ff0",
      "name": "병합1",
      "type": "n8n-nodes-base.merge",
      "position": [
        128,
        -2192
      ],
      "parameters": {
        "mode": "combine",
        "options": {
          "includeUnpaired": true
        },
        "combineBy": "combineByPosition",
        "numberInputs": 5
      },
      "typeVersion": 3
    },
    {
      "id": "90347ce0-1238-448d-abf2-96ecb228b8e0",
      "name": "Configuration 설정tings",
      "type": "n8n-nodes-base.set",
      "position": [
        -4752,
        -2048
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "e7c84a97-6018-4a2d-a4fa-e7565c5cd063",
              "name": "ENV_FALAI_VIDEO_DURATION",
              "type": "string",
              "value": "={{ $json.video_duration }}"
            },
            {
              "id": "431d7768-f55f-4ea8-b5db-0ca5f90b87ae",
              "name": "ENV_APPROVER_EMAIL",
              "type": "string",
              "value": "test@mail.com"
            },
            {
              "id": "5b27d8be-cf58-481d-bf03-7298f532a250",
              "name": "ENV_USECASE",
              "type": "string",
              "value": "={{ $json.usecase }}"
            },
            {
              "id": "f59f8ef5-853f-4457-a3e1-458f270d1955",
              "name": "ENV_INCLUDE_VIDEO",
              "type": "boolean",
              "value": "={{ $json.include_video }}"
            },
            {
              "id": "aef0d1ef-731d-4b18-b144-c810e33295fe",
              "name": "ENV_FALAI_APIKEY",
              "type": "string",
              "value": "<YOUR_API_KEY>"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "5a58eb7e-1993-4a8e-9d66-53b33b3d11de",
      "name": "OpenAI 채팅 모델1",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        -3408,
        -1856
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "chatgpt-4o-latest",
          "cachedResultName": "chatgpt-4o-latest"
        },
        "options": {}
      },
      "credentials": {
        "openAiApi": {
          "id": "E4PFATctY0kV00hl",
          "name": "OpenAi account"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "fdb7ef7c-f900-4374-b65e-eb14f5c9f4a6",
      "name": "Generate Video and Audio Prompt",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        -3392,
        -2064
      ],
      "parameters": {
        "text": "=You are a Social Media Content Creator. The goal is to create a video, audio and image that will get posted along with a blog text as a blog post to the website.\nCreate a Prompt for video generation, audio generation and image generation that is in line with the usecase and the topic. The prompt should be maximum 1 sentence (short to medium length). The image should not contain any text or images that have text in it (i.e. computer screen with text). The image prompt should maximum have 110 characters.\n\n** USE-CASE ***\n{{ $('Configuration Settings').first().json.ENV_USECASE }}\n\n** BLOG POST TOPIC ***\n{{ $('Select Topic from Trends').first().json.Selected_Topic }}\n\nOutput the 3 fields in a json format with \"video_prompt\" and \"audio_prompt\" and \"image _prompt\".",
        "options": {},
        "promptType": "define"
      },
      "typeVersion": 2
    },
    {
      "id": "0639f081-0402-4534-b448-d23e45032037",
      "name": "Determine Intent",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        -5392,
        -2048
      ],
      "parameters": {
        "text": "=Please extract 3 fields out of the following query. Respond with a valid JSON object.\n1) \"usecase\" - string\n2) \"include_video\" - boolean, if not determined \"false\"\n3) \"video_duration\" - string, if not determined \"5\". If user wants more than 5, set it to \"10\". Possible values: either \"5\" or \"10\". If the user wants less than 5, set it to \"5\".\n\n** USER QUERY ***\n{{$('Receive Request').first().json.body.text }}\n",
        "options": {},
        "promptType": "define"
      },
      "typeVersion": 2
    },
    {
      "id": "a6f8688e-95a7-4169-9224-682762a8372b",
      "name": "OpenAI 채팅 모델2",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        -5312,
        -1824
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "chatgpt-4o-latest",
          "cachedResultName": "chatgpt-4o-latest"
        },
        "options": {}
      },
      "credentials": {
        "openAiApi": {
          "id": "E4PFATctY0kV00hl",
          "name": "OpenAi account"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "aa3ab2ba-e08b-49cf-ac57-3789107435c2",
      "name": "Parse Fields",
      "type": "n8n-nodes-base.code",
      "position": [
        -3024,
        -2064
      ],
      "parameters": {
        "jsCode": "const item = $input.first();\nlet raw = item.json.output;\n\n// Remove markdown code block wrapper if present\nraw = raw.replace(/```json\\s*|\\s*```/g, \"\");\n\n// Now parse as JSON\nconst prompts = JSON.parse(raw);\n\n// Assign as fields\nitem.json.video_prompt = prompts.video_prompt;\nitem.json.audio_prompt = prompts.audio_prompt;\nitem.json.image_prompt = prompts.image_prompt;\n// Create random 8-character filename\nitem.json.random_filename = Math.random().toString(36).substring(2, 10);\n\nreturn [item];\n"
      },
      "typeVersion": 2
    },
    {
      "id": "38f5414a-7e8b-4350-8c15-474d44453602",
      "name": "Parse Intent Fields",
      "type": "n8n-nodes-base.code",
      "position": [
        -4992,
        -2048
      ],
      "parameters": {
        "jsCode": "const item = $input.first();\nlet raw = item.json.output;\n\n// Remove markdown code block wrapper if present\nraw = raw.replace(/```json\\s*|\\s*```/g, \"\");\n\n// Now parse as JSON\nconst prompts = JSON.parse(raw);\n\n// Assign as fields\nitem.json.usecase = prompts.usecase;\nitem.json.include_video = prompts.include_video;\nitem.json.video_duration = prompts.video_duration;\n\nreturn [item];\n"
      },
      "typeVersion": 2
    },
    {
      "id": "50c07304-8521-43f7-9e0c-16fe48ed90e2",
      "name": "HTML to Binary",
      "type": "n8n-nodes-base.code",
      "position": [
        832,
        -2144
      ],
      "parameters": {
        "jsCode": "// Convert HTML content into binary buffer\nconst html = $('Build Newsletter').first().json.newsletter_content;\nconst fileName = \"test\"\n\nreturn [{\n  binary: {\n    data: {\n      data: Buffer.from(html, 'utf8'),\n      mimeType: \"text/html\",\n      fileName: `${fileName}.html`\n    }\n  }\n}];\n"
      },
      "typeVersion": 2
    },
    {
      "id": "da4da730-32f9-47e8-92a8-2ad2651376eb",
      "name": "TXT to Binary",
      "type": "n8n-nodes-base.code",
      "position": [
        2048,
        -2144
      ],
      "parameters": {
        "jsCode": "const url = $('Get Merged Video').first().json.video.url;\nconst fileName = \"video_url\";\n\nreturn [{\n  binary: {\n    data: {\n      data: Buffer.from(url, 'utf8'),\n      mimeType: \"text/plain\", // ✅ correct MIME type for .txt\n      fileName: `${fileName}.txt`\n    }\n  }\n}];\n"
      },
      "typeVersion": 2
    },
    {
      "id": "ac207979-019c-47fe-a7a1-d53d70afbb35",
      "name": "JPG to Binary",
      "type": "n8n-nodes-base.code",
      "position": [
        1280,
        -2144
      ],
      "parameters": {
        "jsCode": "const source = $('Generate Image').first();\n\nreturn [{\n  binary: {\n    data: source.binary.data\n  }\n}];\n"
      },
      "typeVersion": 2
    },
    {
      "id": "c8684458-4bb9-45ee-af72-adea5b174168",
      "name": "Save Video URL if exists",
      "type": "n8n-nodes-base.if",
      "position": [
        1760,
        -2128
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "21f6961e-0671-4a85-bddf-939dab2e8cb0",
              "operator": {
                "type": "boolean",
                "operation": "true",
                "singleValue": true
              },
              "leftValue": "={{ $('Configuration Settings').first().json.ENV_INCLUDE_VIDEO }}",
              "rightValue": ""
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "cdbc12f2-d5f3-4236-a136-b8259f3d12ee",
      "name": "Upload HTML",
      "type": "n8n-nodes-base.microsoftSharePoint",
      "position": [
        1056,
        -2144
      ],
      "parameters": {
        "site": {
          "__rl": true,
          "mode": "list",
          "value": "plemeo.sharepoint.com,f304c34c-1252-4b99-a852-059c2036c718,c3bf26ab-bf44-4334-8e5b-e8b680bb9e1d",
          "cachedResultName": "plemeo"
        },
        "folder": {
          "__rl": true,
          "mode": "list",
          "value": "01M45PWA2FV7FHIIDJBFFLKUYMZUSLERBQ",
          "cachedResultName": "SEO Workflow"
        },
        "fileName": "=/{{ $('Parse Fields').first().json.random_filename }}.html",
        "operation": "upload",
        "fileContents": "=data",
        "requestOptions": {}
      },
      "credentials": {
        "microsoftSharePointOAuth2Api": {
          "id": "jZkLTQXyVEzxtmp3",
          "name": "Microsoft SharePoint account"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "270a6ba6-83cd-45fd-a733-7799f787b244",
      "name": "Upload JPG",
      "type": "n8n-nodes-base.microsoftSharePoint",
      "position": [
        1504,
        -2144
      ],
      "parameters": {
        "site": {
          "__rl": true,
          "mode": "list",
          "value": "plemeo.sharepoint.com,f304c34c-1252-4b99-a852-059c2036c718,c3bf26ab-bf44-4334-8e5b-e8b680bb9e1d",
          "cachedResultName": "plemeo"
        },
        "folder": {
          "__rl": true,
          "mode": "list",
          "value": "01M45PWA2FV7FHIIDJBFFLKUYMZUSLERBQ",
          "cachedResultName": "SEO Workflow"
        },
        "fileName": "=/{{ $('Parse Fields').first().json.random_filename }}.jpg",
        "operation": "upload",
        "fileContents": "=data",
        "requestOptions": {}
      },
      "credentials": {
        "microsoftSharePointOAuth2Api": {
          "id": "jZkLTQXyVEzxtmp3",
          "name": "Microsoft SharePoint account"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "61ea58e5-8cf7-40fe-b67b-1f7faa81dcf3",
      "name": "Upload Video URL",
      "type": "n8n-nodes-base.microsoftSharePoint",
      "position": [
        2304,
        -2144
      ],
      "parameters": {
        "site": {
          "__rl": true,
          "mode": "list",
          "value": "plemeo.sharepoint.com,f304c34c-1252-4b99-a852-059c2036c718,c3bf26ab-bf44-4334-8e5b-e8b680bb9e1d",
          "cachedResultName": "plemeo"
        },
        "folder": {
          "__rl": true,
          "mode": "list",
          "value": "01M45PWA2FV7FHIIDJBFFLKUYMZUSLERBQ",
          "cachedResultName": "SEO Workflow"
        },
        "fileName": "={{ $('Parse Fields').first().json.random_filename }}.txt",
        "operation": "upload",
        "fileContents": "=data",
        "requestOptions": {}
      },
      "credentials": {
        "microsoftSharePointOAuth2Api": {
          "id": "jZkLTQXyVEzxtmp3",
          "name": "Microsoft SharePoint account"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "9ae9a529-370b-4d2d-acb8-ad3e3f1d3913",
      "name": "Send message and wait for response",
      "type": "n8n-nodes-base.gmail",
      "position": [
        400,
        -2144
      ],
      "webhookId": "28fef477-06b8-4ddf-b656-23e09ba021f5",
      "parameters": {
        "sendTo": "={{$('Configuration Settings').first().json.ENV_APPROVER_EMAIL}}",
        "message": "={{ $json.newsletter_content }}\n\n<div style=\"margin-top:32px; text-align:center;\">\n  <img src=\"{{ $('Switch').item.json.downloadUrl }}\" style=\"max-width:100%; height:auto;\">\n</div>\n\n\n{{ $json.video?.url ? `\n  <div style=\"margin-top:24px; text-align:center;\">\n    <a href=\"${$json.video.url}\" target=\"_blank\" style=\"font-size:18px; color:#1276d3;\">\n      ▶ Watch Video\n    </a>\n  </div>\n` : '' }}\n",
        "options": {},
        "subject": "SEO Content Approval",
        "operation": "sendAndWait",
        "approvalOptions": {
          "values": {
            "approvalType": "double"
          }
        }
      },
      "credentials": {
        "gmailOAuth2": {
          "id": "fBvSTCpGJatuzJAy",
          "name": "Gmail account"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "c3910d9b-81af-40c2-a0ef-e7953c265d9f",
      "name": "설정 Base64 Field",
      "type": "n8n-nodes-base.set",
      "position": [
        -2512,
        -2064
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "7ba2499f-53d2-4f5c-9a4a-ee8b61a97d5b",
              "name": "base64",
              "type": "string",
              "value": "={{ $('Generate Image').item.binary.data.data }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "efeefb3f-4856-4136-a230-af280b346468",
      "name": "Convert Base64 to File",
      "type": "n8n-nodes-base.convertToFile",
      "position": [
        -2288,
        -2064
      ],
      "parameters": {
        "options": {},
        "operation": "toBinary",
        "sourceProperty": "base64"
      },
      "typeVersion": 1.1
    },
    {
      "id": "e493b67f-360c-464c-a8b7-dae374751da7",
      "name": "Receive Request",
      "type": "n8n-nodes-base.webhook",
      "position": [
        -5616,
        -2048
      ],
      "webhookId": "ff9c853e-f76e-4722-ba37-433ad1750e6b",
      "parameters": {
        "path": "ff9c853e-f76e-4722-ba37-433ad1750e6b",
        "options": {
          "rawBody": true
        },
        "httpMethod": "POST"
      },
      "typeVersion": 2
    },
    {
      "id": "ef936c7c-c40d-450c-9dda-5cf55dac2027",
      "name": "Prepare Newsletter Data",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        -3408,
        -2512
      ],
      "parameters": {
        "text": "=You are a marketing copywriter tasked with creating content for a B2B newsletter on the topic: \"{{ $('Select Topic from Trends').first().json.Selected_Topic }}\".\n\nThe newsletter template uses the following structure for BOTH German and English versions:\n\n**German Content:**\n- {INTRODUCTION_DE}: A 2–3 sentence engaging intro that outlines why the topic is relevant now\n- {TOPIC_DE}: The main topic/headline for the section (max. 8 words)\n- {DESCRIPTION_DE}: A detailed description of what's new or important about this topic (3-4 sentences)\n- {TEASER1_DE}, {TEASER2_DE}, {TEASER3_DE}: Three highlight points showcasing key benefits, insights, or developments (1-2 sentences each)\n- {CTA_DE}: A compelling call-to-action encouraging engagement (max. 20 words)\n- {FOOTER_TEXT_DE}: Professional closing message (1-2 sentences)\n- {FOOTER_NAME_DE}: Sender name/signature\n\n**English Content:**\n- {TOPIC_TITLE_EN}: Main newsletter title in English (max. 8 words)\n- {INTRODUCTION_EN}: English version of the engaging intro (2–3 sentences)\n- {TOPIC_EN}: English version of the main topic/headline (max. 8 words)\n- {DESCRIPTION_EN}: English version of the detailed description (3-4 sentences)\n- {TEASER1_EN}, {TEASER2_EN}, {TEASER3_EN}: English versions of the three highlight points (1-2 sentences each)\n- {CTA_EN}: English version of the call-to-action (max. 20 words)\n- {FOOTER_TEXT_EN}: English version of professional closing message (1-2 sentences)\n- {FOOTER_NAME_EN}: English version sender name/signature\n\nTone: professional but accessible, informative, slightly optimistic  \nAudience: decision-makers and professionals in marketing, tech, and innovation roles  \nCompany Context: plemeo.ai (AI-powered marketing solutions)\n\nPlease return the result as structured JSON in this format:\n\n```json\n{\n  \"INTRODUCTION_DE\": \"\",\n  \"TOPIC_DE\": \"\",\n  \"DESCRIPTION_DE\": \"\",\n  \"TEASER1_DE\": \"\",\n  \"TEASER2_DE\": \"\",\n  \"TEASER3_DE\": \"\",\n  \"CTA_DE\": \"\",\n  \"FOOTER_TEXT_DE\": \"\",\n  \"FOOTER_NAME_DE\": \"\",\n  \"TOPIC_TITLE_EN\": \"\",\n  \"INTRODUCTION_EN\": \"\",\n  \"TOPIC_EN\": \"\",\n  \"DESCRIPTION_EN\": \"\",\n  \"TEASER1_EN\": \"\",\n  \"TEASER2_EN\": \"\",\n  \"TEASER3_EN\": \"\",\n  \"CTA_EN\": \"\",\n  \"FOOTER_TEXT_EN\": \"\",\n  \"FOOTER_NAME_EN\": \"\"\n}\n```",
        "options": {},
        "promptType": "define"
      },
      "typeVersion": 2
    },
    {
      "id": "b20d69ab-97c5-4a2e-9926-77252b735ab3",
      "name": "Extract from Text File",
      "type": "n8n-nodes-base.extractFromFile",
      "position": [
        -2816,
        -2512
      ],
      "parameters": {
        "options": {},
        "operation": "text"
      },
      "typeVersion": 1
    },
    {
      "id": "3a93f461-3ad3-4cd3-923c-4e04e1b8fd92",
      "name": "Generate Image",
      "type": "n8n-nodes-base.httpRequest",
      "onError": "continueErrorOutput",
      "maxTries": 5,
      "position": [
        -2800,
        -2064
      ],
      "parameters": {
        "url": "=https://image.pollinations.ai/prompt/{{ $json.image_prompt.replaceAll(' ','-').replaceAll(',','').replaceAll('.','').slice(0,100) }}?width=1080&height=1350&model=flux&nologo=true",
        "options": {}
      },
      "retryOnFail": true,
      "typeVersion": 4.2
    },
    {
      "id": "5cfef6a7-5f21-4493-89df-c699bf927116",
      "name": "Send Data to Download Service",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -2944,
        -1760
      ],
      "parameters": {
        "url": "https://operator.velvetsyndicate.de:8090/api/upload-image",
        "method": "POST",
        "options": {
          "allowUnauthorizedCerts": true
        },
        "sendBody": true,
        "contentType": "multipart-form-data",
        "bodyParameters": {
          "parameters": [
            {
              "name": "image",
              "parameterType": "formBinaryData",
              "inputDataFieldName": "data"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "83cc9e0a-71cc-43a2-97d2-ecb92aca6fa0",
      "name": "대기 For Video",
      "type": "n8n-nodes-base.wait",
      "position": [
        -2032,
        -1760
      ],
      "webhookId": "153655c9-2cb6-4f82-a497-7233abc21b04",
      "parameters": {
        "amount": 30
      },
      "typeVersion": 1.1
    },
    {
      "id": "a4149035-a9f4-4d19-ac57-49b5bac89ed6",
      "name": "Video Still Processing",
      "type": "n8n-nodes-base.if",
      "position": [
        -1600,
        -1760
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "ab7cdeb1-40bf-4cc0-bfe6-ccf9a7ee1d1d",
              "operator": {
                "type": "boolean",
                "operation": "exists",
                "singleValue": true
              },
              "leftValue": "={{ $json.error.name.toBoolean() }}",
              "rightValue": ""
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "23060783-5d2f-4a2e-89fc-3138f0c8d681",
      "name": "Audio Still Processing",
      "type": "n8n-nodes-base.if",
      "position": [
        -720,
        -1760
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "4369b67d-7975-419a-84b2-acfe4e78bc28",
              "operator": {
                "type": "boolean",
                "operation": "exists",
                "singleValue": true
              },
              "leftValue": "={{ $json.error.name.toBoolean() }}",
              "rightValue": ""
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "8c4e8075-1c2f-4fa2-a1ab-f858ff9bc426",
      "name": "메모",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -4912,
        -2432
      ],
      "parameters": {
        "width": 496,
        "height": 288,
        "content": "### Trends Input Branch  \n**What it does**  \n• Downloads a trends spreadsheet from SharePoint.  \n• Randomly selects one trending topic for content generation.\n\n**Credentials needed**  \nMicrosoft SharePoint OAuth2 (for **Get Trends XLSX**).\n\n**User tweaks**  \n• Change the spreadsheet file location in **Get Trends XLSX**.  \n• Modify selection logic in **Select Topic from Trends** (currently random; could be weighted, chronological, etc.)."
      },
      "typeVersion": 1
    },
    {
      "id": "ff1a4101-c39d-418d-a6e4-9f893dabed74",
      "name": "메모1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -3408,
        -3008
      ],
      "parameters": {
        "width": 592,
        "height": 368,
        "content": "### Newsletter Template Branch  \n**What it does**  \n• Downloads your HTML template from SharePoint.  \n• **Extract from Text File → Build Newsletter** replaces placeholders with AI-generated content.\n\n**Credentials needed**  \nMicrosoft SharePoint OAuth2 (for **Get Newsletter Template**).\n\n**User must provide**  \n• Your own HTML template with these exact placeholders:  \n  `{{INTRODUCTION_DE}} {{TOPIC_DE}} {{DESCRIPTION_DE}} {{TEASER1_DE}} {{TEASER2_DE}} {{TEASER3_DE}} {{CTA_DE}} {{FOOTER_TEXT_DE}} {{FOOTER_NAME_DE}} {{TOPIC_TITLE_EN}} {{INTRODUCTION_EN}} {{TOPIC_EN}} {{DESCRIPTION_EN}} {{TEASER1_EN}} {{TEASER2_EN}} {{TEASER3_EN}} {{CTA_EN}} {{FOOTER_TEXT_EN}} {{FOOTER_NAME_EN}}`  \n• Upload this template to the SharePoint folder referenced in **Get Newsletter Template**."
      },
      "typeVersion": 1
    },
    {
      "id": "a0ac2239-2eae-4100-bb03-99b8365a038e",
      "name": "메모2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -3856,
        -1696
      ],
      "parameters": {
        "width": 688,
        "height": 288,
        "content": "### Image Assets Branch  \n**What it does**  \n• Uses Pollinations AI to create a 1080 × 1350 image from the AI-generated `image_prompt`.  \n• Converts to binary and uploads to Velvet Syndicate (optional CDN).\n\n**Credentials needed**  \nNone (Pollinations & Velvet accept unauthenticated requests).\n\n**User tweaks**  \n• Edit the prompt in **Generate Video and Audio Prompt** to change image style.  \n• Replace Velvet Syndicate URL in **Send Data to Download Service** if using another CDN."
      },
      "typeVersion": 1
    },
    {
      "id": "93b1ab5a-e522-48b0-9208-41bda43cfb7b",
      "name": "메모3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -2688,
        -1488
      ],
      "parameters": {
        "width": 624,
        "height": 304,
        "content": "### Video Assets Branch  \n**What it does**  \n• **FAL AI (kling-video)** creates a short video from the generated image.  \n• **FAL AI (lyria2)** generates background music.  \n• FFmpeg API merges video + audio → returns a public `video.url`.\n\n**Credentials needed**  \n`ENV_FALAI_APIKEY` (stored in **Configuration Settings**).\n\n**User tweaks**  \n• Set `include_video` and `video_duration` via webhook request.  \n• Edit `video_prompt` & `audio_prompt` generation in **Generate Video and Audio Prompt**."
      },
      "typeVersion": 1
    },
    {
      "id": "65ebb1ee-baa2-4dae-a780-f3a0b51836e0",
      "name": "메모4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        832,
        -1952
      ],
      "parameters": {
        "width": 608,
        "height": 272,
        "content": "### Storage Branch  \n**What it does**  \n• Converts newsletter HTML, generated JPG, and video URL into binary files.  \n• Uploads all three files to SharePoint (or your chosen storage).\n\n**Credentials needed**  \nMicrosoft SharePoint OAuth2 (for all three **Upload …** nodes).\n\n**User tweaks**  \n• Change target folder IDs in each upload node.  \n• Replace SharePoint nodes with Google Drive, Dropbox, S3, etc.  \n• Modify filename pattern (currently `${random_filename}.html/.jpg/.txt`)."
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "pinData": {},
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "18a250cb-ac2d-4101-a49a-400be7b37f7f",
  "connections": {
    "Merge1": {
      "main": [
        [
          {
            "node": "9ae9a529-370b-4d2d-acb8-ad3e3f1d3913",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Switch": {
      "main": [
        [
          {
            "node": "db8e8f18-f2d8-476f-ac83-b365aa67451c",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Merge1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "a172b117-221e-4707-a213-f70397e70418": {
      "main": [
        [
          {
            "node": "23060783-5d2f-4a2e-89fc-3138f0c8d681",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "0b9a10a8-c84a-47ba-bd8f-0d01d86f013f": {
      "main": [
        [
          {
            "node": "a4149035-a9f4-4d19-ac57-49b5bac89ed6",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "270a6ba6-83cd-45fd-a733-7799f787b244": {
      "main": [
        [
          {
            "node": "c8684458-4bb9-45ee-af72-adea5b174168",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "cdbc12f2-d5f3-4236-a136-b8259f3d12ee": {
      "main": [
        [
          {
            "node": "ac207979-019c-47fe-a7a1-d53d70afbb35",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "2a729954-8812-473e-a0be-0c9399a4c454": {
      "main": [
        [
          {
            "node": "Wait for Audio",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "aa3ab2ba-e08b-49cf-ac57-3789107435c2": {
      "main": [
        [
          {
            "node": "3a93f461-3ad3-4cd3-923c-4e04e1b8fd92",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "ac207979-019c-47fe-a7a1-d53d70afbb35": {
      "main": [
        [
          {
            "node": "270a6ba6-83cd-45fd-a733-7799f787b244",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "da4da730-32f9-47e8-92a8-2ad2651376eb": {
      "main": [
        [
          {
            "node": "61ea58e5-8cf7-40fe-b67b-1f7faa81dcf3",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "3a93f461-3ad3-4cd3-923c-4e04e1b8fd92": {
      "main": [
        [
          {
            "node": "Set Base64 Field",
            "type": "main",
            "index": 0
          }
        ],
        []
      ]
    },
    "50c07304-8521-43f7-9e0c-16fe48ed90e2": {
      "main": [
        [
          {
            "node": "cdbc12f2-d5f3-4236-a136-b8259f3d12ee",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Wait For Video": {
      "main": [
        [
          {
            "node": "0b9a10a8-c84a-47ba-bd8f-0d01d86f013f",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Wait for Audio": {
      "main": [
        [
          {
            "node": "a172b117-221e-4707-a213-f70397e70418",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Wait for Merge": {
      "main": [
        [
          {
            "node": "Get Merged Video",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "dca2ef6d-5179-46a4-b916-5f2bfcf79d1e": {
      "main": [
        [
          {
            "node": "5a9c11b3-a0d8-419f-a447-828ca7908f0a",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "e493b67f-360c-464c-a8b7-dae374751da7": {
      "main": [
        [
          {
            "node": "0639f081-0402-4534-b448-d23e45032037",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "362b5cd0-5253-4ffe-84dc-d1c286977b7d": {
      "main": [
        [
          {
            "node": "Merge1",
            "type": "main",
            "index": 4
          }
        ]
      ]
    },
    "db8e8f18-f2d8-476f-ac83-b365aa67451c": {
      "main": [
        [
          {
            "node": "Wait For Video",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "0639f081-0402-4534-b448-d23e45032037": {
      "main": [
        [
          {
            "node": "38f5414a-7e8b-4350-8c15-474d44453602",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get Merged Video": {
      "main": [
        [
          {
            "node": "Merge1",
            "type": "main",
            "index": 3
          }
        ]
      ]
    },
    "5a9c11b3-a0d8-419f-a447-828ca7908f0a": {
      "main": [
        [
          {
            "node": "9988898b-23ab-4b37-8bc2-76a97f96c669",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Set Base64 Field": {
      "main": [
        [
          {
            "node": "efeefb3f-4856-4136-a230-af280b346468",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "61ea58e5-8cf7-40fe-b67b-1f7faa81dcf3": {
      "main": [
        []
      ]
    },
    "OpenAI Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "ef936c7c-c40d-450c-9dda-5cf55dac2027",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Chat Model1": {
      "ai_languageModel": [
        [
          {
            "node": "fdb7ef7c-f900-4374-b65e-eb14f5c9f4a6",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Chat Model2": {
      "ai_languageModel": [
        [
          {
            "node": "0639f081-0402-4534-b448-d23e45032037",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "38f5414a-7e8b-4350-8c15-474d44453602": {
      "main": [
        [
          {
            "node": "Configuration Settings",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Create Merge Request": {
      "main": [
        [
          {
            "node": "Wait for Merge",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "7e3d41de-6fdd-4b7d-8e56-2f967108dad2": {
      "main": [
        [
          {
            "node": "50c07304-8521-43f7-9e0c-16fe48ed90e2",
            "type": "main",
            "index": 0
          }
        ],
        []
      ]
    },
    "23060783-5d2f-4a2e-89fc-3138f0c8d681": {
      "main": [
        [
          {
            "node": "Wait for Audio",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Create Merge Request",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Configuration Settings": {
      "main": [
        [
          {
            "node": "dca2ef6d-5179-46a4-b916-5f2bfcf79d1e",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "efeefb3f-4856-4136-a230-af280b346468": {
      "main": [
        [
          {
            "node": "Merge1",
            "type": "main",
            "index": 1
          },
          {
            "node": "Merge1",
            "type": "main",
            "index": 2
          },
          {
            "node": "5cfef6a7-5f21-4493-89df-c699bf927116",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "b20d69ab-97c5-4a2e-9926-77252b735ab3": {
      "main": [
        [
          {
            "node": "362b5cd0-5253-4ffe-84dc-d1c286977b7d",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "a4149035-a9f4-4d19-ac57-49b5bac89ed6": {
      "main": [
        [
          {
            "node": "Wait For Video",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "2a729954-8812-473e-a0be-0c9399a4c454",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "c8d706a3-3bad-4686-a712-350b49314935": {
      "main": [
        [
          {
            "node": "b20d69ab-97c5-4a2e-9926-77252b735ab3",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "ef936c7c-c40d-450c-9dda-5cf55dac2027": {
      "main": [
        [
          {
            "node": "c8d706a3-3bad-4686-a712-350b49314935",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "c8684458-4bb9-45ee-af72-adea5b174168": {
      "main": [
        [
          {
            "node": "da4da730-32f9-47e8-92a8-2ad2651376eb",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "9988898b-23ab-4b37-8bc2-76a97f96c669": {
      "main": [
        [
          {
            "node": "ef936c7c-c40d-450c-9dda-5cf55dac2027",
            "type": "main",
            "index": 0
          },
          {
            "node": "fdb7ef7c-f900-4374-b65e-eb14f5c9f4a6",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "5cfef6a7-5f21-4493-89df-c699bf927116": {
      "main": [
        [
          {
            "node": "Switch",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "fdb7ef7c-f900-4374-b65e-eb14f5c9f4a6": {
      "main": [
        [
          {
            "node": "aa3ab2ba-e08b-49cf-ac57-3789107435c2",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "9ae9a529-370b-4d2d-acb8-ad3e3f1d3913": {
      "main": [
        [
          {
            "node": "7e3d41de-6fdd-4b7d-8e56-2f967108dad2",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
자주 묻는 질문

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

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

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

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

유료인가요?

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

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

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

외부 링크
n8n.io에서 보기

이 워크플로우 공유

카테고리

카테고리: 34