8
n8n 한국어amn8n.com

Google Drive에서 n8n 템플릿 설명을 생성

고급

이것은Content Creation, Multimodal AI분야의자동화 워크플로우로, 27개의 노드를 포함합니다.주로 Code, Gmail, GoogleDrive, GoogleSheets, ManualTrigger 등의 노드를 사용하며. Azure GPT-4를 사용하여 Google Drive에서 템플릿 설명 생성

사전 요구사항
  • Google 계정 및 Gmail API 인증 정보
  • Google Drive API 인증 정보
  • Google Sheets API 인증 정보
  • OpenAI API Key
워크플로우 미리보기
노드 연결 관계를 시각적으로 표시하며, 확대/축소 및 이동을 지원합니다
워크플로우 내보내기
다음 JSON 구성을 복사하여 n8n에 가져오면 이 워크플로우를 사용할 수 있습니다
{
  "id": "zX0SNUBqlonCm9UQ",
  "meta": {
    "instanceId": "8443f10082278c46aa5cf3acf8ff0f70061a2c58bce76efac814b16290845177",
    "templateCredsSetupCompleted": true
  },
  "name": "Generate n8n template descriptions from Google Drive",
  "tags": [],
  "nodes": [
    {
      "id": "ddb41538-8446-4938-9233-7475b5a63fbb",
      "name": "'워크플로 실행' 클릭 시",
      "type": "n8n-nodes-base.manualTrigger",
      "position": [
        -688,
        -64
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "7c0fd462-7b25-4e1f-852d-5b526f16de0f",
      "name": "파일에서 추출",
      "type": "n8n-nodes-base.extractFromFile",
      "position": [
        208,
        -192
      ],
      "parameters": {
        "options": {},
        "operation": "fromJson"
      },
      "typeVersion": 1
    },
    {
      "id": "5e02aa21-b341-489c-82fb-feacb0747b13",
      "name": "파일 다운로드",
      "type": "n8n-nodes-base.googleDrive",
      "position": [
        -16,
        -192
      ],
      "parameters": {
        "fileId": {
          "__rl": true,
          "mode": "id",
          "value": "={{$json[\"id\"]}}"
        },
        "options": {},
        "operation": "download"
      },
      "credentials": {
        "googleDriveOAuth2Api": {
          "id": "E7nEqUL27GUx1xHa",
          "name": "Techdome Account"
        }
      },
      "typeVersion": 3
    },
    {
      "id": "016bff72-bd86-4eba-9c10-86853cd102cc",
      "name": "파일 및 폴더 검색",
      "type": "n8n-nodes-base.googleDrive",
      "position": [
        -464,
        -64
      ],
      "parameters": {
        "filter": {
          "folderId": {
            "__rl": true,
            "mode": "list",
            "value": "1HP3LnTPLwe81xUrp0P6aV2nJKdX6BIcM",
            "cachedResultUrl": "https://drive.google.com/drive/folders/1HP3LnTPLwe81xUrp0P6aV2nJKdX6BIcM",
            "cachedResultName": "n8n json checker"
          }
        },
        "options": {},
        "resource": "fileFolder",
        "returnAll": true
      },
      "credentials": {
        "googleDriveOAuth2Api": {
          "id": "E7nEqUL27GUx1xHa",
          "name": "Techdome Account"
        }
      },
      "typeVersion": 3,
      "alwaysOutputData": true
    },
    {
      "id": "eca112e7-3b66-455e-8086-2d3bf701cd3b",
      "name": "스티커 노트",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -832,
        -320
      ],
      "parameters": {
        "height": 192,
        "content": "## ⚙️ Step 1: Manual Trigger  \nUse this to manually start the workflow when testing or batch-processing workflow descriptions.  \n➡️ No setup required.\n"
      },
      "typeVersion": 1
    },
    {
      "id": "7e6d213b-112d-4759-bc8d-2d5f675a1098",
      "name": "스티커 노트1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -544,
        96
      ],
      "parameters": {
        "width": 288,
        "height": 320,
        "content": "## 📂 Step 2: Search Files and Folders  \nThis node searches a specific Google Drive folder for JSON workflow files to process.  \n\n**Setup Instructions:**  \n- Connect your own Google Drive OAuth2 credentials.  \n- Replace any hardcoded folder ID with a variable or reference to your Drive.  \n\n\n"
      },
      "typeVersion": 1
    },
    {
      "id": "e51a77b0-95e8-418a-89d3-2e610c6cac7d",
      "name": "스티커 노트2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        496,
        208
      ],
      "parameters": {
        "height": 304,
        "content": "## 🧠 Step 8:Store AI Context (LangChain Memory)\nStores short-term AI context to improve continuity during prompt execution.  \nNo credentials required.  \n💡 Keep context window small (7–10) to avoid large memory overhead.\n"
      },
      "typeVersion": 1
    },
    {
      "id": "8ff67280-778b-4de1-86d2-82905c3ed3e4",
      "name": "스티커 노트3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1184,
        -496
      ],
      "parameters": {
        "height": 288,
        "content": "## ✨ Step 11: Format HTML Email   \nCreates clean HTML and plain-text versions of the generated description for email + Google Sheet logging.  \n\n✅ No credentials here.  \n💡 You may adjust the CSS styling within the HTML block.\n"
      },
      "typeVersion": 1
    },
    {
      "id": "e8695343-49c0-4cf3-b0b0-305b36c5a450",
      "name": "스티커 노트4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        816,
        -592
      ],
      "parameters": {
        "height": 368,
        "content": "## 🧾 Step 10: Format Markdown Description  \nTakes the AI output and converts it into structured Markdown text suitable for n8n template publishing.  \n\n**Setup Instructions:**  \n- Ensure each section (Overview, Benefits, etc.) is returned properly.  \n- You can tweak emoji styles or section titles here.  \n✅ No credentials required.\n"
      },
      "typeVersion": 1
    },
    {
      "id": "453d0845-afca-4018-a7be-b464150598d9",
      "name": "스티커 노트5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        800,
        160
      ],
      "parameters": {
        "height": 288,
        "content": "## 🧩 Step 9: Parse AI Response into Structured JSON\nEnsures AI response is parsed into clean JSON format for the next node.  \n✅ No sensitive data.  \n💡 You can adjust the schema if adding more description sections.\n"
      },
      "typeVersion": 1
    },
    {
      "id": "af7d1723-3163-4083-857a-d3367b9cbd79",
      "name": "스티커 노트6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        192,
        176
      ],
      "parameters": {
        "height": 320,
        "content": "## 💬 Step 7: Connect to Azure OpenAI GPT Model\n\n**Setup Instructions:**  \n- Use your own `azureOpenAiApi` credential .  \n- Verify the model name (gpt-4o or equivalent).  \n\n"
      },
      "typeVersion": 1
    },
    {
      "id": "205d405d-85ff-4ee8-be90-31df1da4f56a",
      "name": "스티커 노트7",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        512,
        -688
      ],
      "parameters": {
        "height": 448,
        "content": "## 🤖 Step 6: AI Agent  \nUses a LangChain agent + Azure OpenAI model to generate workflow titles and structured descriptions.  \n\n**Setup Instructions:**  \n- Connect the AI Language Model and Output Parser as shown.  \n- This node defines the prompt and ensures the response follows n8n Template Guidelines.  \n\n✅ No sensitive info here — well-structured system prompt!  \n OpenAI.\n"
      },
      "typeVersion": 1
    },
    {
      "id": "6181afda-2715-438e-8a4a-4233ef3b824b",
      "name": "스티커 노트8",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        176,
        -400
      ],
      "parameters": {
        "height": 192,
        "content": "## 📦 Step 5: Extract JSON Data  \nParses the downloaded file to extract workflow JSON data before AI processing.  \nNo credentials needed here.\n"
      },
      "typeVersion": 1
    },
    {
      "id": "da26533d-f55d-4e7c-b97a-1d7be91897f8",
      "name": "스티커 노트9",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -80,
        -528
      ],
      "parameters": {
        "height": 320,
        "content": "## ⬇️ Step 4: Download File  \nDownloads the JSON file contents for each matched Drive item.  \n\n**Setup Instructions:**  \n- Connect to your Google Drive OAuth2 credentials .  \n- Ensure file access permissions allow downloads.  \n\n\n"
      },
      "typeVersion": 1
    },
    {
      "id": "129b4156-d3ec-4528-9be9-743dc3371fc1",
      "name": "스티커 노트10",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -352,
        -352
      ],
      "parameters": {
        "height": 240,
        "content": "## 🔁 Step 3: Loop Over JSONS  \nProcesses each found file individually to ensure the workflow handles large folders efficiently.  \nNo credential changes required.  \n➡️ You can adjust batch size in the node options.\n"
      },
      "typeVersion": 1
    },
    {
      "id": "c51e2df4-3e5a-4f65-b77f-24d6ce7dcec2",
      "name": "스티커 노트11",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1728,
        -240
      ],
      "parameters": {
        "height": 368,
        "content": "## 📧 Step 13: Send Email with Description  \nSends a formatted HTML email with the generated template description.  \n\n  \n\n**Setup:**  \n- Use your Gmail OAuth2 credentials (`gmailOAuth2`).  \n- Test with a non-personal account if publishing publicly.\n"
      },
      "typeVersion": 1
    },
    {
      "id": "68f7f509-ebe2-45f1-a4d7-a3f306222dc4",
      "name": "스티커 노트13",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1360,
        -352
      ],
      "parameters": {
        "width": 384,
        "height": 448,
        "content": "## 🟨 Workflow Overview  \nThis workflow automates the creation of structured n8n template descriptions.  \nIt fetches JSON workflow files from Google Drive, uses an AI agent (Azure OpenAI + LangChain) to analyze them, and then formats detailed descriptions for publishing.  \n\n### ⚙️ Flow Summary  \n1. Trigger workflow manually.  \n2. Search workflow files in Google Drive.  \n3. Download and extract JSON data.  \n4. Use AI Agent to generate title + description.  \n5. Format Markdown and HTML outputs.  \n6. Append results to Google Sheets.  \n7. Send formatted description via Gmail.  \n\n**Use Case:** Ideal for automating n8n template documentation and content generation.\n"
      },
      "typeVersion": 1
    },
    {
      "id": "35a62d62-6ede-4b06-8d04-a4d3760e220f",
      "name": "JSONS 루프 처리",
      "type": "n8n-nodes-base.splitInBatches",
      "position": [
        -240,
        -64
      ],
      "parameters": {
        "options": {}
      },
      "typeVersion": 3
    },
    {
      "id": "77e3adc9-3c23-4eb8-8c29-0cd630ccb8cc",
      "name": "AI 에이전트",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        496,
        -192
      ],
      "parameters": {
        "text": "=You are given this n8n workflow JSON:\n\n{{ JSON.stringify($json) }}\n\nGenerate the **best possible template title** and a **structured description** following the rules.  \nMake sure the title matches the format (Action verb + thing being manipulated + to/on/in/from + where).  \nThe description must follow the defined section structure and highlight actual logic from the workflow.\n",
        "options": {
          "systemMessage": "=You are an **expert n8n template description generator**.  \nYour role is to analyze a provided workflow JSON and generate both a **precise template title** and a **structured description** suitable for n8n’s Template Publishing Guidelines.  \n\n---\n\n### 🔑 Title Rules\n- Format: **Action verb** + **thing being manipulated** + **to/on/in/from** + **where**  \n  - Example: “One-way contact sync from Pipedrive to HubSpot”  \n- The title must:  \n  - Be **short (≤10 words)**, with no filler.  \n  - Use **active verbs** (Automate, Sync, Track, Re-engage, Generate, etc.).  \n  - Clearly name the **services, apps, or data being connected**.  \n  - Indicate **directionality** where applicable (from → to).  \n\n---\n\n### 📝 Description Style Guidelines\n- Write in **professional, user-friendly language**.  \n- Use **light emoji markers** (📊, ⚡, 🚀, 📧) to improve readability.  \n- Avoid generic filler — **every point must reflect actual workflow logic**.  \n- Keep explanations **short, direct, and clear**.  \n- Structure content in **bulleted lists** under clear section headers.  \n- Ensure **accuracy to the JSON nodes and connections**.  \n- Use an **automation-savvy tone** (confident, helpful, concise).  \n\n---\n\n### 📦 Output Sections (Always in This Order)\n\n1. **title**  \n   - A concise workflow title that follows the naming convention above.  \n\n2. **overview**  \n   - A one-line, catchy summary of the workflow’s purpose.  \n\n3. **what_this_template_does**  \n   - Step-by-step, **chronological explanation** of the workflow.  \n   - Mention triggers, actions, and end results in plain English.  \n\n4. **key_benefits**  \n   - 4–6 **outcome-focused benefits** (time saved, efficiency, error reduction).  \n\n5. **features**  \n   - Breakdown of **nodes, triggers, filters, and integrations**.  \n\n6. **requirements**  \n   - List of **services, credentials, or accounts** needed.  \n\n7. **target_audience**  \n   - Who the workflow is most useful for (teams, roles, industries).  \n\n8. **setup_instructions**  \n   - Practical, **step-by-step setup guidance** (credentials, environment variables, import, testing, activation).  \n\n---\n\n### ⚠️ Critical Rules\n- Do **not** invent steps or tools not present in the JSON.  \n- If a section has no applicable content, **omit gracefully** (do not fill with placeholders).  \n- Ensure consistency: every bullet point must tie back to actual workflow logic.  \n- Avoid redundancy — keep the flow **concise but complete**.  \n\n---\n\n### ✅ Example Output Format (for clarity)\n\n**title:**  \nOne-way contact sync from Pipedrive to HubSpot  \n\n**overview:**  \nAutomatically sync new contacts from Pipedrive into HubSpot CRM to keep sales and marketing aligned. 🔄  \n\n**what_this_template_does:**  \n- Runs every hour via schedule trigger ⏰  \n- Fetches new contacts from Pipedrive 📥  \n- Creates or updates matching contacts in HubSpot CRM 📊  \n\n**key_benefits:**  \n- ✅ No more manual contact transfers  \n- ✅ Keeps CRM records consistent  \n- ✅ Saves time for sales teams  \n\n**features:**  \n- Hourly schedule trigger  \n- Pipedrive API integration  \n- HubSpot CRM integration  \n\n**requirements:**  \n- Pipedrive OAuth2 credentials  \n- HubSpot OAuth2 credentials  \n\n**target_audience:**  \n- Sales teams managing dual CRMs  \n- Agencies working with multiple clients  \n\n**setup_instructions:**  \n- Connect Pipedrive and HubSpot accounts 🔑  \n- Import the workflow JSON 📦  \n- Adjust sync interval if needed 🕒  \n- Activate workflow 🚀  \n"
        },
        "promptType": "define",
        "hasOutputParser": true
      },
      "typeVersion": 2.1
    },
    {
      "id": "c3f2e1e9-69db-4ccb-9022-2ebc4b45e88d",
      "name": "Markdown 설명 형식화",
      "type": "n8n-nodes-base.code",
      "position": [
        896,
        -192
      ],
      "parameters": {
        "jsCode": "// Get input data\nconst inputData = $input.all();\n\n// Function to convert array to numbered list with emojis\nfunction formatList(items, emoji = '') {\n  return items.map((item, index) => `${index + 1}. ${item} ${emoji}`).join('\\n');\n}\n\n// Function to convert array to bullet list with checkmarks\nfunction formatBenefits(items) {\n  return items.map(item => `✅ ${item}`).join('\\n');\n}\n\n// Function to convert array to bullet list with asterisks\nfunction formatFeatures(items) {\n  return items.map(item => `* ${item}`).join('\\n');\n}\n\n// Function to convert array to bullet list with emojis\nfunction formatAudience(items) {\n  const emojis = ['👩‍💼', '🔄', '🏢', '🌐', '📊'];\n  return items.map((item, index) => `* ${item} ${emojis[index] || '✨'}`).join('\\n');\n}\n\n// Function to convert setup instructions\nfunction formatSetup(items) {\n  const emojis = ['🔑', '⚙️', '🕒', '📦', '✅', '🚀'];\n  return items.map((item, index) => `${index + 1}. ${item} ${emojis[index] || '📌'}`).join('\\n');\n}\n\n// Process each item in the input\nconst results = inputData.map(item => {\n  const data = item.json.output;\n  \n  // Build the formatted output\n  let formattedOutput = `**Description**\\n`;\n  formattedOutput += `${data.overview} 💌📊💬\\n\\n`;\n  \n  formattedOutput += `**What This Template Does**\\n`;\n  formattedOutput += formatList(data.what_this_template_does, '') + '\\n\\n';\n  \n  formattedOutput += `**Key Benefits**\\n`;\n  formattedOutput += formatBenefits(data.key_benefits) + '\\n\\n';\n  \n  formattedOutput += `**Features**\\n`;\n  formattedOutput += formatFeatures(data.features) + '\\n\\n';\n  \n  formattedOutput += `**Requirements**\\n`;\n  formattedOutput += data.requirements.map(item => `* ${item}`).join('\\n') + '\\n\\n';\n  \n  formattedOutput += `**Target Audience**\\n`;\n  formattedOutput += formatAudience(data.target_audience) + '\\n\\n';\n  \n  formattedOutput += `**Step-by-Step Setup Instructions**\\n`;\n  formattedOutput += formatSetup(data.setup_instructions);\n  \n  return {\n    json: {\n      title: data.title,\n      formatted_description: formattedOutput\n    }\n  };\n});\n\nreturn results;"
      },
      "typeVersion": 2
    },
    {
      "id": "11f7b052-0cb4-4cfe-8aae-bf933d797a5a",
      "name": "HTML 이메일 형식화",
      "type": "n8n-nodes-base.code",
      "position": [
        1344,
        -192
      ],
      "parameters": {
        "jsCode": "// Get input data\nconst inputData = $input.all();\n\nconst results = inputData.map(item => {\n  const data = item.json;\n  const description = data.formatted_description || '';\n\n  // Parse sections\n  const sections = {\n    overview: description.match(/\\*\\*Description\\*\\*\\n(.*?)\\n\\n/s)?.[1]?.trim() || '',\n    what_does: description.match(/\\*\\*What This Template Does\\*\\*\\n(.*?)\\n\\n/s)?.[1]?.trim() || '',\n    benefits: description.match(/\\*\\*Key Benefits\\*\\*\\n(.*?)\\n\\n/s)?.[1]?.trim() || '',\n    features: description.match(/\\*\\*Features\\*\\*\\n(.*?)\\n\\n/s)?.[1]?.trim() || '',\n    requirements: description.match(/\\*\\*Requirements\\*\\*\\n(.*?)\\n\\n/s)?.[1]?.trim() || '',\n    audience: description.match(/\\*\\*Target Audience\\*\\*\\n(.*?)\\n\\n/s)?.[1]?.trim() || '',\n    setup: description.match(/\\*\\*Step-by-Step Setup Instructions\\*\\*\\n(.*?)$/s)?.[1]?.trim() || ''\n  };\n\n  // 🧾 Plain text version for Google Sheets logging\n  const plainText = `\n${data.title}\n\n📋 Overview:\n${sections.overview}\n\n⚙️ What This Template Does:\n${sections.what_does}\n\n🚀 Key Benefits:\n${sections.benefits}\n\n✨ Features:\n${sections.features}\n\n🔐 Requirements:\n${sections.requirements}\n\n🎯 Target Audience:\n${sections.audience}\n\n📝 Step-by-Step Setup Instructions:\n${sections.setup}\n\n🎯 Ready to automate? Import this template into your n8n instance and get started!\n  `.trim();\n\n  // 💌 HTML version for Email\n  const htmlEmail = `\n<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n<meta charset=\"UTF-8\">\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n<title>${data.title}</title>\n<style>\n  body {font-family: 'Segoe UI', Arial, sans-serif; line-height:1.6; color:#333; background:#f5f5f5; padding:30px;}\n  .container {background:#fff; border-radius:10px; padding:40px; max-width:800px; margin:auto; box-shadow:0 2px 8px rgba(0,0,0,0.1);}\n  h1 {color:#1f2937;}\n  h2 {color:#4f46e5; border-bottom:2px solid #eee; padding-bottom:6px;}\n  .section {margin-bottom:30px;}\n  .highlight {background:#eef2ff; padding:15px; border-radius:6px;}\n  .benefit {background:#ecfdf5; padding:10px; border-left:4px solid #22c55e; margin-bottom:10px;}\n  .feature {background:#eff6ff; padding:10px; border-left:4px solid #3b82f6; margin-bottom:10px;}\n  .requirement {background:#fef3c7; padding:10px; border-left:4px solid #f59e0b; margin-bottom:10px;}\n  .audience {background:#fce7f3; padding:10px; border-left:4px solid #ec4899; margin-bottom:10px;}\n  .setup {background:#f9fafb; padding:10px; border-left:4px solid #6366f1; margin-bottom:10px;}\n  .footer {text-align:center; color:#888; font-size:14px; margin-top:30px;}\n</style>\n</head>\n<body>\n  <div class=\"container\">\n    <h1>${data.title}</h1>\n    <div class=\"section\"><h2>📋 Overview</h2><div class=\"highlight\">${sections.overview}</div></div>\n    <div class=\"section\"><h2>⚙️ What This Template Does</h2>${sections.what_does.split('\\n').map(l => `<div class=\"setup\">${l}</div>`).join('')}</div>\n    <div class=\"section\"><h2>🚀 Key Benefits</h2>${sections.benefits.split('\\n').map(l => `<div class=\"benefit\">${l}</div>`).join('')}</div>\n    <div class=\"section\"><h2>✨ Features</h2>${sections.features.split('\\n').map(l => `<div class=\"feature\">${l}</div>`).join('')}</div>\n    <div class=\"section\"><h2>🔐 Requirements</h2>${sections.requirements.split('\\n').map(l => `<div class=\"requirement\">${l}</div>`).join('')}</div>\n    <div class=\"section\"><h2>🎯 Target Audience</h2>${sections.audience.split('\\n').map(l => `<div class=\"audience\">${l}</div>`).join('')}</div>\n    <div class=\"section\"><h2>📝 Step-by-Step Setup Instructions</h2>${sections.setup.split('\\n').map(l => `<div class=\"setup\">${l}</div>`).join('')}</div>\n    <div class=\"footer\">🎯 Ready to automate? Import this template into your n8n instance and start building magic!</div>\n  </div>\n</body>\n</html>\n  `.trim();\n\n  // Return both\n  return {\n    json: {\n      title: data.title,\n      formatted_description: data.formatted_description,\n      html_email: htmlEmail,     // for Gmail\n      plain_text_email: plainText, // for Sheets\n      subject: `n8n Template: ${data.title}`,\n      preview_text: sections.overview.substring(0, 100) + '...'\n    }\n  };\n});\n\nreturn results;\n"
      },
      "typeVersion": 2
    },
    {
      "id": "36faaf0f-90a2-42c8-909a-8544a48d621b",
      "name": "스티커 노트14",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1088,
        -16
      ],
      "parameters": {
        "height": 192,
        "content": "## 🧾 Step 12: Save to Google Sheets  \nStores the generated template title and formatted description in a spreadsheet for record-keeping.  \n\n\n"
      },
      "typeVersion": 1
    },
    {
      "id": "61d49f4e-e961-4359-8735-925a55eaa7f8",
      "name": "Google 시트에 저장",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        1120,
        -192
      ],
      "parameters": {
        "columns": {
          "value": {},
          "schema": [
            {
              "id": "title",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "title",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "formatted_description",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "formatted_description",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "autoMapInputData",
          "matchingColumns": [],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "appendOrUpdate",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "gid=0",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1u_PoDeJHJnMyocSXmGH0sO9ybo5LrUszTkU6p3KzYAg/edit#gid=0",
          "cachedResultName": "Sheet1"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1u_PoDeJHJnMyocSXmGH0sO9ybo5LrUszTkU6p3KzYAg",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1u_PoDeJHJnMyocSXmGH0sO9ybo5LrUszTkU6p3KzYAg/edit?usp=drivesdk",
          "cachedResultName": "JSON Data with Description"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "kpPEOLCGn963qpoh",
          "name": "automations@techdome.ai"
        }
      },
      "typeVersion": 4.7
    },
    {
      "id": "d031644e-84ea-4121-84d2-41e9d05207b5",
      "name": "설명 포함 이메일 전송",
      "type": "n8n-nodes-base.gmail",
      "position": [
        1568,
        -64
      ],
      "webhookId": "0f500fb4-094e-48b6-a98e-da066652481b",
      "parameters": {
        "sendTo": "your-email@example.com",
        "message": "={{ $json.html_email }}",
        "options": {},
        "subject": "={{ $json.subject }}"
      },
      "credentials": {
        "gmailOAuth2": {
          "id": "gEIaWCTvGfYjMSb3",
          "name": "Gmail credentials"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "8d655ca0-13d7-41ab-b3cf-e1387cdb61d0",
      "name": "AI 컨텍스트 저장 (LangChain 메모리)",
      "type": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
      "position": [
        560,
        32
      ],
      "parameters": {
        "sessionKey": "\"json_review\"",
        "sessionIdType": "customKey",
        "contextWindowLength": 7
      },
      "typeVersion": 1.3
    },
    {
      "id": "3064a4d2-4329-4371-bc5d-47ee568205ef",
      "name": "Azure OpenAI GPT 모델 연결",
      "type": "@n8n/n8n-nodes-langchain.lmChatAzureOpenAi",
      "position": [
        432,
        32
      ],
      "parameters": {
        "model": "gpt-4o",
        "options": {}
      },
      "credentials": {
        "azureOpenAiApi": {
          "id": "C3WzT18XqF8OdVM6",
          "name": "Azure Open AI account"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "ad5ee442-1644-4ab2-bdf9-cbf84447a5ff",
      "name": "AI 응답을 구조화된 JSON로 파싱",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        688,
        32
      ],
      "parameters": {
        "jsonSchemaExample": "{\n  \"title\": \"string\",\n  \"overview\": \"string\",\n  \"what_this_template_does\": [\"step1\", \"step2\", \"step3\"],\n  \"key_benefits\": [\"benefit1\", \"benefit2\", \"benefit3\"],\n  \"features\": [\"feature1\", \"feature2\", \"feature3\"],\n  \"requirements\": [\"requirement1\", \"requirement2\"],\n  \"target_audience\": [\"audience1\", \"audience2\"],\n  \"setup_instructions\": [\"instruction1\", \"instruction2\", \"instruction3\"]\n}\n"
      },
      "typeVersion": 1.3
    }
  ],
  "active": false,
  "pinData": {},
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "f22edb61-a906-4778-9a79-8d50a8fb1b2d",
  "connections": {
    "77e3adc9-3c23-4eb8-8c29-0cd630ccb8cc": {
      "main": [
        [
          {
            "node": "c3f2e1e9-69db-4ccb-9022-2ebc4b45e88d",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "5e02aa21-b341-489c-82fb-feacb0747b13": {
      "main": [
        [
          {
            "node": "7c0fd462-7b25-4e1f-852d-5b526f16de0f",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "35a62d62-6ede-4b06-8d04-a4d3760e220f": {
      "main": [
        [],
        [
          {
            "node": "5e02aa21-b341-489c-82fb-feacb0747b13",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "7c0fd462-7b25-4e1f-852d-5b526f16de0f": {
      "main": [
        [
          {
            "node": "77e3adc9-3c23-4eb8-8c29-0cd630ccb8cc",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "11f7b052-0cb4-4cfe-8aae-bf933d797a5a": {
      "main": [
        [
          {
            "node": "d031644e-84ea-4121-84d2-41e9d05207b5",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "61d49f4e-e961-4359-8735-925a55eaa7f8": {
      "main": [
        [
          {
            "node": "11f7b052-0cb4-4cfe-8aae-bf933d797a5a",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "016bff72-bd86-4eba-9c10-86853cd102cc": {
      "main": [
        [
          {
            "node": "35a62d62-6ede-4b06-8d04-a4d3760e220f",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "c3f2e1e9-69db-4ccb-9022-2ebc4b45e88d": {
      "main": [
        [
          {
            "node": "61d49f4e-e961-4359-8735-925a55eaa7f8",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "d031644e-84ea-4121-84d2-41e9d05207b5": {
      "main": [
        [
          {
            "node": "35a62d62-6ede-4b06-8d04-a4d3760e220f",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "3064a4d2-4329-4371-bc5d-47ee568205ef": {
      "ai_languageModel": [
        [
          {
            "node": "77e3adc9-3c23-4eb8-8c29-0cd630ccb8cc",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "8d655ca0-13d7-41ab-b3cf-e1387cdb61d0": {
      "ai_memory": [
        [
          {
            "node": "77e3adc9-3c23-4eb8-8c29-0cd630ccb8cc",
            "type": "ai_memory",
            "index": 0
          }
        ]
      ]
    },
    "ddb41538-8446-4938-9233-7475b5a63fbb": {
      "main": [
        [
          {
            "node": "016bff72-bd86-4eba-9c10-86853cd102cc",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "ad5ee442-1644-4ab2-bdf9-cbf84447a5ff": {
      "ai_outputParser": [
        [
          {
            "node": "77e3adc9-3c23-4eb8-8c29-0cd630ccb8cc",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    }
  }
}
자주 묻는 질문

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

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

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

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

유료인가요?

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

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

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

저자
Rahul Joshi

Rahul Joshi

@rahul08

Rahul Joshi is a seasoned technology leader specializing in the n8n automation tool and AI-driven workflow automation. With deep expertise in building open-source workflow automation and self-hosted automation platforms, he helps organizations eliminate manual processes through intelligent n8n ai agent automation solutions.

외부 링크
n8n.io에서 보기

이 워크플로우 공유

카테고리

카테고리: 34