8
n8n 한국어amn8n.com

스크립트에서 AI 음성 생성하고 Google 클라우드 스토리지에 업로드

고급

이것은Content Creation, Multimodal AI분야의자동화 워크플로우로, 20개의 노드를 포함합니다.주로 Set, Code, Filter, GoogleDrive, HttpRequest 등의 노드를 사용하며. Gemini TTS를 사용하여 스크립트에서 AI 오디오 생성하고 Google 클라우드 드라이브에 업로드

사전 요구사항
  • Google Drive API 인증 정보
  • 대상 API의 인증 정보가 필요할 수 있음
  • Google Sheets API 인증 정보
워크플로우 미리보기
노드 연결 관계를 시각적으로 표시하며, 확대/축소 및 이동을 지원합니다
워크플로우 내보내기
다음 JSON 구성을 복사하여 n8n에 가져오면 이 워크플로우를 사용할 수 있습니다
{
  "id": "sJP7yYyMUuFkBxhP",
  "meta": {
    "instanceId": "8506a10572bce7322328454a2dc9c1df792a29ed1e0b40db7be90cf055b03a5a",
    "templateCredsSetupCompleted": true
  },
  "name": "Generate AI Voiceovers from Scripts and Upload to Google Drive",
  "tags": [],
  "nodes": [
    {
      "id": "b77d0479-251b-4dde-a8db-70dd5c1dcde9",
      "name": "워크플로 실행 시",
      "type": "n8n-nodes-base.manualTrigger",
      "position": [
        -656,
        0
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "420b8504-2cc1-4947-b53d-29fd0ae53d4b",
      "name": "파일로 변환",
      "type": "n8n-nodes-base.convertToFile",
      "position": [
        592,
        32
      ],
      "parameters": {
        "options": {
          "fileName": "={{ $('Code1').item.json.safeFilename }}.pcm",
          "mimeType": "={{ $json.candidates[0].content.parts[0].inlineData.mimeType }}"
        },
        "operation": "toBinary",
        "sourceProperty": "candidates[0].content.parts[0].inlineData.data"
      },
      "typeVersion": 1.1
    },
    {
      "id": "3905f225-4b9d-4e47-bda4-b08002ed635b",
      "name": "디스크 파일 읽기/쓰기",
      "type": "n8n-nodes-base.readWriteFile",
      "position": [
        784,
        32
      ],
      "parameters": {
        "options": {},
        "fileName": "=/Users/INSERT_YOUR_LOCAL_STORAGE_HERE/{{ $('Code1').item.json.safeFilename }}.pcm",
        "operation": "write"
      },
      "typeVersion": 1
    },
    {
      "id": "88b59cbf-7949-4fb4-84cb-d36a866bbf43",
      "name": "코드1",
      "type": "n8n-nodes-base.code",
      "position": [
        176,
        32
      ],
      "parameters": {
        "jsCode": "// Get all the items coming into this node\nconst items = $items();\n\n// Loop through each item (this code works even if there's only one)\nfor (const item of items) {\n  \n  // 1. Get the original script text from the 'full_script_text' field.\n  const originalScript = item.json.full_script_text;\n  \n  // Get the row number to make the filename unique\n  const rowNumber = item.json.row_number;\n\n  // 2. Create the clean filename\n  //    - Convert to lowercase for consistency\n  //    - Replace any character that is NOT a letter or number with an underscore\n  //    - Shorten it to the first 60 characters to prevent it from being too long\n  const sanitizedScriptPart = originalScript\n    .toLowerCase()\n    .replace(/[^a-z0-9]/g, '_') \n    .substring(0, 60);\n\n  // 3. Combine the row number and the sanitized text to create a final, unique filename\n  const safeFilename = `${rowNumber}_${sanitizedScriptPart}`;\n\n  // 4. Add the new, safe filename back to the data\n  item.json.safeFilename = safeFilename;\n}\n\n// Return the modified data to the next node\nreturn items;"
      },
      "typeVersion": 2
    },
    {
      "id": "383050a4-5d1a-4f80-9ac3-8ab99dd6c121",
      "name": "항목 반복",
      "type": "n8n-nodes-base.splitInBatches",
      "position": [
        -64,
        0
      ],
      "parameters": {
        "options": {}
      },
      "typeVersion": 3
    },
    {
      "id": "8f194775-656e-4687-afbb-507226a8fdb3",
      "name": "필터",
      "type": "n8n-nodes-base.filter",
      "position": [
        -272,
        0
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "51e34efc-ba22-404f-835a-4324f403bcbe",
              "operator": {
                "type": "string",
                "operation": "notEquals"
              },
              "leftValue": "={{ $json['Voice Generated?'] }}",
              "rightValue": "Yes"
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "be5453fc-c5e8-4591-b7d9-cd5a35b9582a",
      "name": "비디오 스크립트 가져오기",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        -464,
        0
      ],
      "parameters": {
        "options": {},
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": 539540410,
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1tFC1EC863ZwJB0GffCM9BzU5kYo1wITwFoESZ130oP4/edit#gid=539540410",
          "cachedResultName": "Text Overlays"
        },
        "documentId": {
          "__rl": true,
          "mode": "url",
          "value": "https://docs.google.com/spreadsheets/d/1tFC1EC863ZwJB0GffCM9BzU5kYo1wITwFoESZ130oP4/edit?gid=539540410#gid=539540410"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "0XPHdQQ1kHd7hjJ5",
          "name": "thamjiangjun@gmail.com google sheet"
        }
      },
      "typeVersion": 4.6
    },
    {
      "id": "1decede0-d000-4a68-838c-ce708fc49b55",
      "name": "HTTP 음성 생성 요청",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        384,
        32
      ],
      "parameters": {
        "url": "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash-preview-tts:generateContent\n",
        "method": "POST",
        "options": {},
        "jsonBody": "={\n  \"contents\": [\n    {\n      \"parts\": [\n        {\n          \"text\": \"Say this script in a neutral <INSERT YOUR DESIRED ACCENT HERE> professional accent at a face pace enthusiastically: {{ $json.full_script_text }}\"\n        }\n      ]\n    }\n  ],\n  \"generationConfig\": {\n    \"responseModalities\": [\n      \"AUDIO\"\n    ],\n    \"speechConfig\": {\n      \"voiceConfig\": {\n        \"prebuiltVoiceConfig\": {\n          \"voiceName\": \"Kore\"\n        }\n      }\n    }\n  },\n  \"model\": \"gemini-2.5-flash-preview-tts\"\n}",
        "sendBody": true,
        "sendQuery": true,
        "specifyBody": "json",
        "queryParameters": {
          "parameters": [
            {
              "name": "key",
              "value": "INSERT YOUR API KEY HERE"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "3323cc73-9026-48bd-b951-763101a44280",
      "name": "파일명 추출",
      "type": "n8n-nodes-base.set",
      "position": [
        960,
        32
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "fe124702-e115-4be8-b5da-df6d01e1ddbe",
              "name": "fileName",
              "type": "string",
              "value": "={{ $json.fileName }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "648b7a61-af32-43d9-97f1-2189560cc47e",
      "name": "FFMPEG 파일 형식 변환 로컬 코드 실행",
      "type": "n8n-nodes-base.code",
      "position": [
        1152,
        32
      ],
      "parameters": {
        "jsCode": "// Get the input data from the previous node\nconst inputData = $input.all()[0].json;\n\n// Use the EXISTING PCM file path from the input\nconst pcmFilePath = inputData.fileName; // \"/Users/jjtham/3_dream_of_a_marriage_free_from_painful_surprises__imagine_a_f.pcm\"\n\n// Generate the WAV output path by replacing .pcm with .wav\nconst wavFilePath = pcmFilePath.replace('.pcm', '.wav');\n\n// Build the ffmpeg command (quotes handle spaces in paths)\nconst ffmpegCommand = `ffmpeg -y -f s16le -ar 24000 -ac 1 -i \"${pcmFilePath}\" \"${wavFilePath}\"`;\n\nreturn {\n  json: {\n    pcmPath: pcmFilePath,\n    wavPath: wavFilePath,\n    command: ffmpegCommand\n  }\n};"
      },
      "typeVersion": 2
    },
    {
      "id": "da306259-3612-41bd-99b0-91408c63e400",
      "name": "FFMPEG 코드 실행",
      "type": "n8n-nodes-base.executeCommand",
      "position": [
        1328,
        32
      ],
      "parameters": {
        "command": "={{ $json.command }}"
      },
      "typeVersion": 1
    },
    {
      "id": "2fabed55-983e-4420-b16c-f822697cadfa",
      "name": "파일 출력 디스크 기록",
      "type": "n8n-nodes-base.readWriteFile",
      "position": [
        1520,
        32
      ],
      "parameters": {
        "options": {},
        "fileSelector": "={{ $('Running FFMPEG Local Code To Change Format Of File').item.json.wavPath }}"
      },
      "typeVersion": 1
    },
    {
      "id": "bbc88d97-1edb-4430-8749-2df5594c9dcd",
      "name": "Wav 파일 업로드",
      "type": "n8n-nodes-base.googleDrive",
      "position": [
        1712,
        32
      ],
      "parameters": {
        "name": "={{ $('Code1').item.json.safeFilename }}.wav",
        "driveId": {
          "__rl": true,
          "mode": "list",
          "value": "My Drive",
          "cachedResultUrl": "https://drive.google.com/drive/my-drive",
          "cachedResultName": "My Drive"
        },
        "options": {},
        "folderId": {
          "__rl": true,
          "mode": "list",
          "value": "root",
          "cachedResultUrl": "https://drive.google.com/drive",
          "cachedResultName": "/ (Root folder)"
        }
      },
      "credentials": {
        "googleDriveOAuth2Api": {
          "id": "0cagYS3ULKYU3G1N",
          "name": "Quiverx Google Drive Account"
        }
      },
      "typeVersion": 3
    },
    {
      "id": "d38711cb-420b-4a70-8ec5-b6df27207caf",
      "name": "Google 파일의 드라이브 링크를 Google 시트에 업로드",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        1920,
        32
      ],
      "parameters": {
        "columns": {
          "value": {
            "Voice Link": "={{ $json.webViewLink }}",
            "Google Drive ID": "={{ $json.id }}",
            "Voice Generated?": "Yes",
            "full_script_text": "={{ $('Loop Over Items').item.json.full_script_text }}",
            "Computer File Name": "={{ $('Writing File Output Onto Disk').item.json.fileName }}",
            "Google Drive Download Link": "={{ $json.webContentLink }}"
          },
          "schema": [
            {
              "id": "script_name",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "script_name",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "psychological_angle",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "psychological_angle",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "full_script_text",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "full_script_text",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "script_breakdown",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "script_breakdown",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Bucket",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Bucket",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "strategyPillar",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "strategyPillar",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "psychologicalAngle",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "psychologicalAngle",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Voice Generated?",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Voice Generated?",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Voice Link",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Voice Link",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Google Drive ID",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Google Drive ID",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Google Drive Download Link",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Google Drive Download Link",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "File Location",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "File Location",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Computer File Name",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Computer File Name",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Editing Status",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Editing Status",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "full_script_text"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "appendOrUpdate",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": 539540410,
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1tFC1EC863ZwJB0GffCM9BzU5kYo1wITwFoESZ130oP4/edit#gid=539540410",
          "cachedResultName": "Text Overlays"
        },
        "documentId": {
          "__rl": true,
          "mode": "url",
          "value": "https://docs.google.com/spreadsheets/d/1tFC1EC863ZwJB0GffCM9BzU5kYo1wITwFoESZ130oP4/edit?gid=539540410#gid=539540410"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "0XPHdQQ1kHd7hjJ5",
          "name": "thamjiangjun@gmail.com google sheet"
        }
      },
      "typeVersion": 4.6
    },
    {
      "id": "39ec1f9e-a5be-4e9c-b1cf-aa2f958694d7",
      "name": "스티커 노트",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1408,
        -224
      ],
      "parameters": {
        "width": 704,
        "height": 1120,
        "content": "## Generate AI Voiceovers from Scripts and Upload to Google Drive\n\nThis is the final piece of the AI content factory. This workflow takes your text-based video scripts and automatically generates high-quality audio voiceovers for each one, turning your text into ready-to-use audio assets for your video ads.\n\nGo from a spreadsheet of text to a folder of audio files, completely on autopilot.\n\n## ⚠️ CRITICAL REQUIREMENTS (Read First!)\nThis is an advanced, self-hosted workflow that requires specific local setup:\n\n*   **Self-Hosted n8n Only:** This workflow uses the `Execute Command` and `Read/Write Files` nodes, which requires you to run your own instance of n8n. It will not work on n8n Cloud.\n*   **FFmpeg Installation:** You must have [FFmpeg](https://ffmpeg.org/download.html) installed on the same machine where your n8n instance is running. This is used to convert the audio files to a standard format.\n\n## What it does\nThis is Part 3 of the AI marketing series. It connects to the Google Sheet where you generated your video scripts (in Part 2). For each script that hasn't been processed, it:\n\n1.  Uses the Google Gemini Text-to-Speech (TTS) API to generate a voiceover.\n2.  Saves the audio file to your local computer.\n3.  Uses FFmpeg to convert the raw audio into a standard `.wav` file.\n4.  Uploads the final `.wav` file to your Google Drive.\n5.  Updates the original Google Sheet with a link to the audio file in Drive and marks the script as complete.\n\n## How to set up\n**IMPORTANT:** This workflow is Part 3 of a series and requires the output from Part 2 (\"Generate AI Video Ad Scripts\").\n\n**If you need Part 1 or Part 2 of this workflow series, you can find them for free on [my n8n Creator Profile](https://n8n.io/creators/jj-tham/).**\n\n1.  **Connect to Your Scripts Sheet:** In the \"Getting Video Scripts\" node, connect your Google Sheets account and provide the URL to the sheet containing your generated video scripts from Part 2.\n2.  **Configure AI Voice Generation (HTTP Request):**\n    *   In the \"HTTP Request To Generate Voice\" node, go to the **Query Parameters** and replace `INSERT YOUR API KEY HERE` with your Google Gemini API key.\n    *   In the **JSON Body**, you can customize the voice prompt (e.g., change `<INSERT YOUR DESIRED ACCENT HERE>`).\n3.  **Set Your Local File Path:** In the first \"Read/Write Files from Disk\" node, update the **File Name** field to a valid directory on your local machine where n8n has permission to write files. Replace `/Users/INSERT_YOUR_LOCAL_STORAGE_HERE/`.\n4.  **Connect Google Drive:** In the \"Uploading Wav File\" node, connect your Google Drive account and choose the folder where your audio files will be saved.\n5.  **Update Your Tracking Sheet:** In the final \"Uploading Google Drive Link...\" node, ensure it's connected to the same Google Sheet from Step 1. This node will update your sheet with the results."
      },
      "typeVersion": 1
    },
    {
      "id": "1cc5dc7d-55c4-4d0a-b356-a8458169dd96",
      "name": "스티커 노트1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -528,
        -256
      ],
      "parameters": {
        "color": 2,
        "width": 432,
        "height": 240,
        "content": "**👇 STEP 1: CONNECT TO YOUR SCRIPTS**\n\nThis workflow reads the scripts you generated in Part 2.\n\n**Action Required:**\n1. Connect your Google Sheets account.\n2. Paste the URL of the Google Sheet that was the **output** of the \"Generate AI Video Ad Scripts\" workflow.\n\nThe **Filter** node ensures we only process scripts that don't have a voiceover yet."
      },
      "typeVersion": 1
    },
    {
      "id": "a7250930-1359-44ad-865f-48c21f641cf9",
      "name": "스티커 노트2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        176,
        -192
      ],
      "parameters": {
        "color": 4,
        "width": 496,
        "height": 176,
        "content": "**🧠 STEP 2: CONFIGURE AI VOICE**\n\nThis node generates the audio using Google Gemini's TTS API.\n\n**Action Required:**\n1.  Go to **Query Parameters** and insert your Gemini API Key.\n2.  (Optional) In the **JSON Body**, edit the prompt to change the accent or delivery style."
      },
      "typeVersion": 1
    },
    {
      "id": "c53a760c-aaaf-4c39-a564-6b30b8bf52d3",
      "name": "스티커 노트3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        544,
        272
      ],
      "parameters": {
        "color": 5,
        "width": 432,
        "height": 224,
        "content": "**⚠️ STEP 3: CONFIGURE LOCAL FILE PROCESSING**\n\n**This section is for SELF-HOSTED n8n ONLY and requires FFmpeg to be installed on your machine.**\n\n**Action Required:**\n1.  Click the first **Read/Write Files from Disk** node.\n2.  Update the **File Name** with a real folder path on your computer (e.g., `/home/n8n/audio/` or `C:\\n8n\\audio\\`)."
      },
      "typeVersion": 1
    },
    {
      "id": "7b792b51-908d-485e-8b9b-7066bf344898",
      "name": "스티커 노트4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1216,
        -192
      ],
      "parameters": {
        "color": 6,
        "width": 576,
        "height": 192,
        "content": "**✅ STEP 4: SET UPLOAD DESTINATION**\n\nThis node uploads your final `.wav` audio files.\n\n**Action Required:**\n1.  Connect your Google Drive account.\n2.  (Optional) Choose a specific folder to keep your voiceovers organized."
      },
      "typeVersion": 1
    },
    {
      "id": "6ccd0f26-1155-420b-9cad-f140b2d82e13",
      "name": "스티커 노트5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1840,
        240
      ],
      "parameters": {
        "width": 432,
        "height": 128,
        "content": "**🚀 STEP 5: UPDATE TRACKING SHEET**\n\nThis final step updates your script sheet with links to the new audio files in Google Drive and marks them as \"Yes\" so they don't get processed again."
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "pinData": {},
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "8d66a2a2-0e5f-47ba-883d-1a4c6da2d14d",
  "connections": {
    "88b59cbf-7949-4fb4-84cb-d36a866bbf43": {
      "main": [
        [
          {
            "node": "1decede0-d000-4a68-838c-ce708fc49b55",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "8f194775-656e-4687-afbb-507226a8fdb3": {
      "main": [
        [
          {
            "node": "383050a4-5d1a-4f80-9ac3-8ab99dd6c121",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "420b8504-2cc1-4947-b53d-29fd0ae53d4b": {
      "main": [
        [
          {
            "node": "3905f225-4b9d-4e47-bda4-b08002ed635b",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "383050a4-5d1a-4f80-9ac3-8ab99dd6c121": {
      "main": [
        [],
        [
          {
            "node": "88b59cbf-7949-4fb4-84cb-d36a866bbf43",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "bbc88d97-1edb-4430-8749-2df5594c9dcd": {
      "main": [
        [
          {
            "node": "d38711cb-420b-4a70-8ec5-b6df27207caf",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "3323cc73-9026-48bd-b951-763101a44280": {
      "main": [
        [
          {
            "node": "648b7a61-af32-43d9-97f1-2189560cc47e",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "da306259-3612-41bd-99b0-91408c63e400": {
      "main": [
        [
          {
            "node": "2fabed55-983e-4420-b16c-f822697cadfa",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "be5453fc-c5e8-4591-b7d9-cd5a35b9582a": {
      "main": [
        [
          {
            "node": "8f194775-656e-4687-afbb-507226a8fdb3",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "3905f225-4b9d-4e47-bda4-b08002ed635b": {
      "main": [
        [
          {
            "node": "3323cc73-9026-48bd-b951-763101a44280",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "2fabed55-983e-4420-b16c-f822697cadfa": {
      "main": [
        [
          {
            "node": "bbc88d97-1edb-4430-8749-2df5594c9dcd",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "1decede0-d000-4a68-838c-ce708fc49b55": {
      "main": [
        [
          {
            "node": "420b8504-2cc1-4947-b53d-29fd0ae53d4b",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "b77d0479-251b-4dde-a8db-70dd5c1dcde9": {
      "main": [
        [
          {
            "node": "be5453fc-c5e8-4591-b7d9-cd5a35b9582a",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "648b7a61-af32-43d9-97f1-2189560cc47e": {
      "main": [
        [
          {
            "node": "da306259-3612-41bd-99b0-91408c63e400",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "d38711cb-420b-4a70-8ec5-b6df27207caf": {
      "main": [
        [
          {
            "node": "383050a4-5d1a-4f80-9ac3-8ab99dd6c121",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
자주 묻는 질문

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

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

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

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

유료인가요?

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

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

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

저자
JJ Tham

JJ Tham

@jj-tham

Founder of Osinity. I build AI-powered n8n automations that save businesses 10+ hours a week and grow their revenue. We guarantee results with a 30-day risk-free trial—you only pay when we hit your targets.

외부 링크
n8n.io에서 보기

이 워크플로우 공유

카테고리

카테고리: 34