{
  "workflow": {
    "id": 9344,
    "name": "Generate template descriptions from Google Drive with Azure GPT-4",
    "views": 69,
    "recentViews": 0,
    "totalViews": 69,
    "createdAt": "2025-10-07T11:54:55.793Z",
    "description": "## Description\nAutomatically generate polished, n8n-ready template descriptions from your saved JSON workflows in Google Drive. This AI-powered automation processes workflow files, drafts compliant descriptions, and delivers Markdown and HTML outputs directly to your inbox. 🚀💌📊💬\n\n## What This Template Does\n- Manually triggers the workflow to start processing.\n- Searches a specified Google Drive folder for JSON workflow files.\n- Iterates through each JSON file found in that folder.\n- Downloads each file and prepares it for data extraction.\n- Parses workflow data from the downloaded JSON content.\n- Uses Azure OpenAI GPT-4 to generate concise titles and detailed descriptions.\n- Converts the AI output into structured Markdown for n8n template publishing.\n- Creates an HTML version of the description for email delivery.\n- Logs generated details into a Google Sheet for record-keeping.\n- Sends an email containing the Markdown and HTML descriptions to the target recipient.\n\n## Key Benefits\n✅ Fully automates n8n template description creation.\n ✅ Ensures consistency with official n8n publishing guidelines.\n ✅ Saves time while eliminating human writing errors.\n ✅ Provides dual Markdown + HTML outputs for flexibility.\n ✅ Centralizes workflow metadata in Google Sheets.\n ✅ Simplifies collaboration and version tracking via email delivery.\n\n## Features\n- Manual workflow trigger for controlled execution.\n- Integration with Google Drive for locating and downloading JSON files.\n- Intelligent parsing of workflow data from JSON structure.\n- GPT-4-powered AI for title and description generation.\n- Automatic Markdown + HTML formatting for n8n publishing.\n- Google Sheets integration for persistent record-keeping.\n- Automated Gmail delivery of generated documentation.\n\n## Requirements\n- n8n instance (cloud or self-hosted).\n- Google Drive OAuth2 credentials with file read permissions.\n- Google Sheets OAuth2 credentials with edit permissions.\n- Azure OpenAI GPT-4 API key for AI text generation.\n- Gmail OAuth2 credentials for email sending.\n\n## Target Audience\n- n8n content creators documenting workflows. 👩‍💼\n- Automation teams handling multiple template deployments. 🔄\n- Agencies and freelancers managing workflow documentation. 🏢\n- Developers leveraging AI for faster template creation. 🌐\n- Technical writers ensuring polished, standardized outputs. 📊\n\n## Step-by-Step Setup Instructions\n- Connect your Google Drive account and specify the folder containing JSON workflows. 🔑\n- Authorize Google Sheets and confirm access to the tracking spreadsheet. ⚙️\n- Add Azure OpenAI GPT-4 API credentials for AI-powered text generation. 🧠\n- Connect Gmail credentials for automated email delivery. 📧\n- Run the workflow manually using a test JSON file to validate all nodes. ✅\n- Enable the workflow to automatically generate and send descriptions as needed. 🚀\n",
    "workflow": {
      "id": "zX0SNUBqlonCm9UQ",
      "meta": {
        "instanceId": "8443f10082278c46aa5cf3acf8ff0f70061a2c58bce76efac814b16290845177",
        "templateCredsSetupCompleted": true
      },
      "name": "Generate n8n template descriptions from Google Drive",
      "tags": [],
      "nodes": [
        {
          "id": "ddb41538-8446-4938-9233-7475b5a63fbb",
          "name": "When clicking ‘Execute workflow’",
          "type": "n8n-nodes-base.manualTrigger",
          "position": [
            -688,
            -64
          ],
          "parameters": {},
          "typeVersion": 1
        },
        {
          "id": "7c0fd462-7b25-4e1f-852d-5b526f16de0f",
          "name": "Extract from File",
          "type": "n8n-nodes-base.extractFromFile",
          "position": [
            208,
            -192
          ],
          "parameters": {
            "options": {},
            "operation": "fromJson"
          },
          "typeVersion": 1
        },
        {
          "id": "5e02aa21-b341-489c-82fb-feacb0747b13",
          "name": "Download file",
          "type": "n8n-nodes-base.googleDrive",
          "position": [
            -16,
            -192
          ],
          "parameters": {
            "fileId": {
              "__rl": true,
              "mode": "id",
              "value": "={{$json[\"id\"]}}"
            },
            "options": {},
            "operation": "download"
          },
          "credentials": {
            "googleDriveOAuth2Api": {
              "id": "credential-id",
              "name": "googleDriveOAuth2Api Credential"
            }
          },
          "typeVersion": 3
        },
        {
          "id": "016bff72-bd86-4eba-9c10-86853cd102cc",
          "name": "Search files and folders",
          "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": "credential-id",
              "name": "googleDriveOAuth2Api Credential"
            }
          },
          "typeVersion": 3,
          "alwaysOutputData": true
        },
        {
          "id": "eca112e7-3b66-455e-8086-2d3bf701cd3b",
          "name": "Sticky Note",
          "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": "Sticky Note1",
          "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": "Sticky Note2",
          "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": "Sticky Note3",
          "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": "Sticky Note4",
          "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": "Sticky Note5",
          "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": "Sticky Note6",
          "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": "Sticky Note7",
          "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": "Sticky Note8",
          "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": "Sticky Note9",
          "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": "Sticky Note10",
          "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": "Sticky Note11",
          "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": "Sticky Note13",
          "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": "Loop Over JSONS",
          "type": "n8n-nodes-base.splitInBatches",
          "position": [
            -240,
            -64
          ],
          "parameters": {
            "options": {}
          },
          "typeVersion": 3
        },
        {
          "id": "77e3adc9-3c23-4eb8-8c29-0cd630ccb8cc",
          "name": "AI Agent",
          "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": "Format Markdown Description",
          "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": "Format HTML Email",
          "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": "Sticky Note14",
          "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": "Save To Google Sheets",
          "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": "credential-id",
              "name": "googleSheetsOAuth2Api Credential"
            }
          },
          "typeVersion": 4.7
        },
        {
          "id": "d031644e-84ea-4121-84d2-41e9d05207b5",
          "name": "Send Email  With Description",
          "type": "n8n-nodes-base.gmail",
          "position": [
            1568,
            -64
          ],
          "webhookId": "0f500fb4-094e-48b6-a98e-da066652481b",
          "parameters": {
            "sendTo": "user@example.com",
            "message": "={{ $json.html_email }}",
            "options": {},
            "subject": "={{ $json.subject }}"
          },
          "credentials": {
            "gmailOAuth2": {
              "id": "credential-id",
              "name": "gmailOAuth2 Credential"
            }
          },
          "typeVersion": 2.1
        },
        {
          "id": "8d655ca0-13d7-41ab-b3cf-e1387cdb61d0",
          "name": "Store AI Context (LangChain Memory)",
          "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": "Connect to Azure OpenAI GPT Model",
          "type": "@n8n/n8n-nodes-langchain.lmChatAzureOpenAi",
          "position": [
            432,
            32
          ],
          "parameters": {
            "model": "gpt-4o",
            "options": {}
          },
          "credentials": {
            "azureOpenAiApi": {
              "id": "credential-id",
              "name": "azureOpenAiApi Credential"
            }
          },
          "typeVersion": 1
        },
        {
          "id": "ad5ee442-1644-4ab2-bdf9-cbf84447a5ff",
          "name": "Parse AI Response into Structured 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": {
        "AI Agent": {
          "main": [
            [
              {
                "node": "Format Markdown Description",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Download file": {
          "main": [
            [
              {
                "node": "Extract from File",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Loop Over JSONS": {
          "main": [
            [],
            [
              {
                "node": "Download file",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Extract from File": {
          "main": [
            [
              {
                "node": "AI Agent",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Format HTML Email": {
          "main": [
            [
              {
                "node": "Send Email  With Description",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Save To Google Sheets": {
          "main": [
            [
              {
                "node": "Format HTML Email",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Search files and folders": {
          "main": [
            [
              {
                "node": "Loop Over JSONS",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Format Markdown Description": {
          "main": [
            [
              {
                "node": "Save To Google Sheets",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Send Email  With Description": {
          "main": [
            [
              {
                "node": "Loop Over JSONS",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Connect to Azure OpenAI GPT Model": {
          "ai_languageModel": [
            [
              {
                "node": "AI Agent",
                "type": "ai_languageModel",
                "index": 0
              }
            ]
          ]
        },
        "Store AI Context (LangChain Memory)": {
          "ai_memory": [
            [
              {
                "node": "AI Agent",
                "type": "ai_memory",
                "index": 0
              }
            ]
          ]
        },
        "When clicking ‘Execute workflow’": {
          "main": [
            [
              {
                "node": "Search files and folders",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Parse AI Response into Structured JSON": {
          "ai_outputParser": [
            [
              {
                "node": "AI Agent",
                "type": "ai_outputParser",
                "index": 0
              }
            ]
          ]
        }
      }
    },
    "lastUpdatedBy": 1,
    "workflowInfo": {
      "nodeCount": 27,
      "nodeTypes": {
        "n8n-nodes-base.code": {
          "count": 2
        },
        "n8n-nodes-base.gmail": {
          "count": 1
        },
        "n8n-nodes-base.stickyNote": {
          "count": 14
        },
        "n8n-nodes-base.googleDrive": {
          "count": 2
        },
        "n8n-nodes-base.googleSheets": {
          "count": 1
        },
        "n8n-nodes-base.manualTrigger": {
          "count": 1
        },
        "n8n-nodes-base.splitInBatches": {
          "count": 1
        },
        "@n8n/n8n-nodes-langchain.agent": {
          "count": 1
        },
        "n8n-nodes-base.extractFromFile": {
          "count": 1
        },
        "@n8n/n8n-nodes-langchain.lmChatAzureOpenAi": {
          "count": 1
        },
        "@n8n/n8n-nodes-langchain.memoryBufferWindow": {
          "count": 1
        },
        "@n8n/n8n-nodes-langchain.outputParserStructured": {
          "count": 1
        }
      }
    },
    "status": "published",
    "user": {
      "name": "Rahul Joshi",
      "username": "rahul08",
      "bio": "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.\n\n",
      "verified": true,
      "links": [
        "https://www.linkedin.com/in/callrahul/"
      ],
      "avatar": "https://gravatar.com/avatar/b6cf57822463143589b36ada06fbf6cb1509223a740fae3160b28f1ce41ccc12?r=pg&d=retro&size=200"
    },
    "nodes": [
      {
        "id": 18,
        "icon": "file:googleSheets.svg",
        "name": "n8n-nodes-base.googleSheets",
        "codex": {
          "data": {
            "alias": [
              "CSV",
              "Sheet",
              "Spreadsheet",
              "GS"
            ],
            "resources": {
              "generic": [
                {
                  "url": "https://n8n.io/blog/love-at-first-sight-ricardos-n8n-journey/",
                  "icon": "❤️",
                  "label": "Love at first sight: Ricardo’s n8n journey"
                },
                {
                  "url": "https://n8n.io/blog/why-business-process-automation-with-n8n-can-change-your-daily-life/",
                  "icon": "🧬",
                  "label": "Why business process automation with n8n can change your daily life"
                },
                {
                  "url": "https://n8n.io/blog/automatically-adding-expense-receipts-to-google-sheets-with-telegram-mindee-twilio-and-n8n/",
                  "icon": "🧾",
                  "label": "Automatically Adding Expense Receipts to Google Sheets with Telegram, Mindee, Twilio, and n8n"
                },
                {
                  "url": "https://n8n.io/blog/supercharging-your-conference-registration-process-with-n8n/",
                  "icon": "🎫",
                  "label": "Supercharging your conference registration process with n8n"
                },
                {
                  "url": "https://n8n.io/blog/creating-triggers-for-n8n-workflows-using-polling/",
                  "icon": "⏲",
                  "label": "Creating triggers for n8n workflows using polling"
                },
                {
                  "url": "https://n8n.io/blog/no-code-ecommerce-workflow-automations/",
                  "icon": "store",
                  "label": "6 e-commerce workflows to power up your Shopify s"
                },
                {
                  "url": "https://n8n.io/blog/migrating-community-metrics-to-orbit-using-n8n/",
                  "icon": "📈",
                  "label": "Migrating Community Metrics to Orbit using n8n"
                },
                {
                  "url": "https://n8n.io/blog/automate-google-apps-for-productivity/",
                  "icon": "💡",
                  "label": "15 Google apps you can combine and automate to increase productivity"
                },
                {
                  "url": "https://n8n.io/blog/your-business-doesnt-need-you-to-operate/",
                  "icon": " 🖥️",
                  "label": "Hey founders! Your business doesn't need you to operate"
                },
                {
                  "url": "https://n8n.io/blog/how-honest-burgers-use-automation-to-save-100k-per-year/",
                  "icon": "🍔",
                  "label": "How Honest Burgers Use Automation to Save $100k per year"
                },
                {
                  "url": "https://n8n.io/blog/how-a-digital-strategist-uses-n8n-for-online-marketing/",
                  "icon": "💻",
                  "label": "How a digital strategist uses n8n for online marketing"
                },
                {
                  "url": "https://n8n.io/blog/why-this-product-manager-loves-workflow-automation-with-n8n/",
                  "icon": "🧠",
                  "label": "Why this Product Manager loves workflow automation with n8n"
                },
                {
                  "url": "https://n8n.io/blog/sending-automated-congratulations-with-google-sheets-twilio-and-n8n/",
                  "icon": "🙌",
                  "label": "Sending Automated Congratulations with Google Sheets, Twilio, and n8n "
                },
                {
                  "url": "https://n8n.io/blog/how-a-membership-development-manager-automates-his-work-and-investments/",
                  "icon": "📈",
                  "label": "How a Membership Development Manager automates his work and investments"
                },
                {
                  "url": "https://n8n.io/blog/aws-workflow-automation/",
                  "label": "7 no-code workflow automations for Amazon Web Services"
                }
              ],
              "primaryDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.googlesheets/"
                }
              ],
              "credentialDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/credentials/google/oauth-single-service/"
                }
              ]
            },
            "categories": [
              "Data & Storage",
              "Productivity"
            ],
            "nodeVersion": "1.0",
            "codexVersion": "1.0"
          }
        },
        "group": "[\"input\",\"output\"]",
        "defaults": {
          "name": "Google Sheets"
        },
        "iconData": {
          "type": "file",
          "fileBuffer": "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI2MCIgaGVpZ2h0PSI2MCI+PGcgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjxwYXRoIGZpbGw9IiMyOEI0NDYiIGQ9Ik0zNS42OSAxIDUyIDE3LjIyNXYzOS4wODdhMy42NyAzLjY3IDAgMCAxLTEuMDg0IDIuNjFBMy43IDMuNyAwIDAgMSA0OC4yOTMgNjBIMTIuNzA3YTMuNyAzLjcgMCAwIDEtMi42MjMtMS4wNzhBMy42NyAzLjY3IDAgMCAxIDkgNTYuMzEyVjQuNjg4YTMuNjcgMy42NyAwIDAgMSAxLjA4NC0yLjYxQTMuNyAzLjcgMCAwIDEgMTIuNzA3IDF6Ii8+PHBhdGggZmlsbD0iIzZBQ0U3QyIgZD0iTTM1LjY5IDEgNTIgMTcuMjI1SDM5LjM5N2MtMi4wNTQgMC0zLjcwNy0xLjgyOS0zLjcwNy0zLjg3MnoiLz48cGF0aCBmaWxsPSIjMjE5QjM4IiBkPSJNMzkuMjExIDE3LjIyNSA1MiAyMi40OHYtNS4yNTV6Ii8+PHBhdGggZmlsbD0iI0ZGRiIgZD0iTTIwLjEyIDMxLjk3NWMwLS44MTcuNjYyLTEuNDc1IDEuNDgzLTEuNDc1aDE3Ljc5NGMuODIxIDAgMS40ODIuNjU4IDEuNDgyIDEuNDc1djE1LjQ4N2MwIC44MTgtLjY2MSAxLjQ3NS0xLjQ4MiAxLjQ3NUgyMS42MDNhMS40NzYgMS40NzYgMCAwIDEtMS40ODItMS40NzRWMzEuOTc0em0yLjIyNSAxLjQ3NWg2LjY3MnYyLjIxMmgtNi42NzJ6bTAgNS4xNjJoNi42NzJ2Mi4yMTNoLTYuNjcyem0wIDUuMTYzaDYuNjcydjIuMjEyaC02LjY3MnptOS42MzgtMTAuMzI1aDYuNjcydjIuMjEyaC02LjY3MnptMCA1LjE2Mmg2LjY3MnYyLjIxM2gtNi42NzJ6bTAgNS4xNjNoNi42NzJ2Mi4yMTJoLTYuNjcyeiIvPjxwYXRoIGZpbGw9IiMyOEI0NDYiIGQ9Ik0zNC42OSAwIDUxIDE2LjIyNXYzOS4wODdhMy42NyAzLjY3IDAgMCAxLTEuMDg0IDIuNjFBMy43IDMuNyAwIDAgMSA0Ny4yOTMgNTlIMTEuNzA3YTMuNyAzLjcgMCAwIDEtMi42MjMtMS4wNzhBMy42NyAzLjY3IDAgMCAxIDggNTUuMzEyVjMuNjg4YTMuNjcgMy42NyAwIDAgMSAxLjA4NC0yLjYxQTMuNyAzLjcgMCAwIDEgMTEuNzA3IDB6Ii8+PHBhdGggZmlsbD0iIzZBQ0U3QyIgZD0iTTM0LjY5IDAgNTEgMTYuMjI1SDM4LjM5N2MtMi4wNTQgMC0zLjcwNy0xLjgyOS0zLjcwNy0zLjg3MnoiLz48cGF0aCBmaWxsPSIjMjE5QjM4IiBkPSJNMzguMjExIDE2LjIyNSA1MSAyMS40OHYtNS4yNTV6Ii8+PHBhdGggZmlsbD0iI0ZGRiIgZD0iTTE5LjEyIDMwLjk3NWMwLS44MTcuNjYyLTEuNDc1IDEuNDgzLTEuNDc1aDE3Ljc5NGMuODIxIDAgMS40ODIuNjU4IDEuNDgyIDEuNDc1djE1LjQ4N2MwIC44MTgtLjY2MSAxLjQ3NS0xLjQ4MiAxLjQ3NUgyMC42MDNhMS40NzYgMS40NzYgMCAwIDEtMS40ODItMS40NzRWMzAuOTc0em0yLjIyNSAxLjQ3NWg2LjY3MnYyLjIxMmgtNi42NzJ6bTAgNS4xNjJoNi42NzJ2Mi4yMTNoLTYuNjcyem0wIDUuMTYzaDYuNjcydjIuMjEyaC02LjY3MnptOS42MzgtMTAuMzI1aDYuNjcydjIuMjEyaC02LjY3MnptMCA1LjE2Mmg2LjY3MnYyLjIxM2gtNi42NzJ6bTAgNS4xNjNoNi42NzJ2Mi4yMTJoLTYuNjcyeiIvPjwvZz48L3N2Zz4="
        },
        "displayName": "Google Sheets",
        "typeVersion": 5,
        "nodeCategories": [
          {
            "id": 3,
            "name": "Data & Storage"
          },
          {
            "id": 4,
            "name": "Productivity"
          }
        ]
      },
      {
        "id": 39,
        "icon": "fa:sync",
        "name": "n8n-nodes-base.splitInBatches",
        "codex": {
          "data": {
            "alias": [
              "Loop",
              "Concatenate",
              "Batch",
              "Split",
              "Split In Batches"
            ],
            "resources": {
              "generic": [
                {
                  "url": "https://n8n.io/blog/how-uproc-scraped-a-multi-page-website-with-a-low-code-workflow/",
                  "icon": " 🕸️",
                  "label": "How uProc scraped a multi-page website with a low-code workflow"
                },
                {
                  "url": "https://n8n.io/blog/benefits-of-automation-and-n8n-an-interview-with-hubspots-hugh-durkin/",
                  "icon": "🎖",
                  "label": "Benefits of automation and n8n: An interview with HubSpot's Hugh Durkin"
                }
              ],
              "primaryDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.splitinbatches/"
                }
              ]
            },
            "categories": [
              "Core Nodes"
            ],
            "nodeVersion": "1.0",
            "codexVersion": "1.0",
            "subcategories": {
              "Core Nodes": [
                "Flow"
              ]
            }
          }
        },
        "group": "[\"organization\"]",
        "defaults": {
          "name": "Loop Over Items",
          "color": "#007755"
        },
        "iconData": {
          "icon": "sync",
          "type": "icon"
        },
        "displayName": "Loop Over Items (Split in Batches)",
        "typeVersion": 3,
        "nodeCategories": [
          {
            "id": 9,
            "name": "Core Nodes"
          }
        ]
      },
      {
        "id": 58,
        "icon": "file:googleDrive.svg",
        "name": "n8n-nodes-base.googleDrive",
        "codex": {
          "data": {
            "resources": {
              "generic": [
                {
                  "url": "https://n8n.io/blog/your-business-doesnt-need-you-to-operate/",
                  "icon": " 🖥️",
                  "label": "Hey founders! Your business doesn't need you to operate"
                },
                {
                  "url": "https://n8n.io/blog/why-this-product-manager-loves-workflow-automation-with-n8n/",
                  "icon": "🧠",
                  "label": "Why this Product Manager loves workflow automation with n8n"
                },
                {
                  "url": "https://n8n.io/blog/aws-workflow-automation/",
                  "label": "7 no-code workflow automations for Amazon Web Services"
                }
              ],
              "primaryDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.googledrive/"
                }
              ],
              "credentialDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/credentials/google/oauth-single-service/"
                }
              ]
            },
            "categories": [
              "Data & Storage"
            ],
            "nodeVersion": "1.0",
            "codexVersion": "1.0"
          }
        },
        "group": "[\"input\"]",
        "defaults": {
          "name": "Google Drive"
        },
        "iconData": {
          "type": "file",
          "fileBuffer": "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBmaWxsPSIjZmZmIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiB2aWV3Qm94PSIwIDAgODEgNzMiPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9Ii41IiB5PSIuNSIvPjxzeW1ib2wgaWQ9ImEiIG92ZXJmbG93PSJ2aXNpYmxlIj48ZyBmaWxsLXJ1bGU9Im5vbnplcm8iIHN0cm9rZT0ibm9uZSI+PHBhdGggZmlsbD0iIzAwNjZkYSIgZD0ibTYuMDQ4IDYxLjI2IDMuNTI4IDYuMDk0Yy43MzMgMS4yODMgMS43ODcgMi4yOTEgMy4wMjQgMy4wMjRsMTIuNi0yMS44MUgwYTguMyA4LjMgMCAwIDAgMS4xIDQuMTI0eiIvPjxwYXRoIGZpbGw9IiMwMGFjNDciIGQ9Ik00MCAyMi45MSAyNy40IDEuMWMtMS4yMzcuNzMzLTIuMjkxIDEuNzQxLTMuMDI0IDMuMDI0TDEuMSA0NC40NDVBOC4zIDguMyAwIDAgMCAwIDQ4LjU2OGgyNS4yeiIvPjxwYXRoIGZpbGw9IiNlYTQzMzUiIGQ9Ik02Ny40IDcwLjM3OGMxLjIzNy0uNzMzIDIuMjkxLTEuNzQxIDMuMDI0LTMuMDI0bDEuNDY2LTIuNTIgNy4wMS0xMi4xNDJhOC4zIDguMyAwIDAgMCAxLjEtNC4xMjRINTQuNzk4bDUuMzYzIDEwLjUzOHoiLz48cGF0aCBmaWxsPSIjMDA4MzJkIiBkPSJNNDAgMjIuOTEgNTIuNiAxLjFDNTEuMzYzLjM2NyA0OS45NDMgMCA0OC40NzcgMEgzMS41MjRjLTEuNDY2IDAtMi44ODcuNDEyLTQuMTI0IDEuMXoiLz48cGF0aCBmaWxsPSIjMjY4NGZjIiBkPSJNNTQuNzk5IDQ4LjU2OEgyNS4ybC0xMi42IDIxLjgxYzEuMjM3LjczMyAyLjY1NyAxLjEgNC4xMjQgMS4xaDQ2LjU1MmMxLjQ2NiAwIDIuODg3LS40MTIgNC4xMjQtMS4xeiIvPjxwYXRoIGZpbGw9IiNmZmJhMDAiIGQ9Ik02Ny4yNjIgMjQuMjg0IDU1LjYyNCA0LjEyNEM1NC44OTEgMi44NDEgNTMuODM3IDEuODMzIDUyLjYgMS4xTDQwIDIyLjkxbDE0LjggMjUuNjU5aDI1LjE1NWE4LjMgOC4zIDAgMCAwLTEuMS00LjEyNHoiLz48L2c+PC9zeW1ib2w+PC9zdmc+"
        },
        "displayName": "Google Drive",
        "typeVersion": 3,
        "nodeCategories": [
          {
            "id": 3,
            "name": "Data & Storage"
          }
        ]
      },
      {
        "id": 356,
        "icon": "file:gmail.svg",
        "name": "n8n-nodes-base.gmail",
        "codex": {
          "data": {
            "alias": [
              "email",
              "human",
              "form",
              "wait",
              "hitl",
              "approval"
            ],
            "resources": {
              "generic": [
                {
                  "url": "https://n8n.io/blog/why-business-process-automation-with-n8n-can-change-your-daily-life/",
                  "icon": "🧬",
                  "label": "Why business process automation with n8n can change your daily life"
                },
                {
                  "url": "https://n8n.io/blog/supercharging-your-conference-registration-process-with-n8n/",
                  "icon": "🎫",
                  "label": "Supercharging your conference registration process with n8n"
                },
                {
                  "url": "https://n8n.io/blog/no-code-ecommerce-workflow-automations/",
                  "icon": "store",
                  "label": "6 e-commerce workflows to power up your Shopify s"
                },
                {
                  "url": "https://n8n.io/blog/how-to-get-started-with-crm-automation-and-no-code-workflow-ideas/",
                  "icon": "👥",
                  "label": "How to get started with CRM automation (with 3 no-code workflow ideas"
                },
                {
                  "url": "https://n8n.io/blog/automate-google-apps-for-productivity/",
                  "icon": "💡",
                  "label": "15 Google apps you can combine and automate to increase productivity"
                },
                {
                  "url": "https://n8n.io/blog/your-business-doesnt-need-you-to-operate/",
                  "icon": " 🖥️",
                  "label": "Hey founders! Your business doesn't need you to operate"
                },
                {
                  "url": "https://n8n.io/blog/using-automation-to-boost-productivity-in-the-workplace/",
                  "icon": "💪",
                  "label": "Using Automation to Boost Productivity in the Workplace"
                }
              ],
              "primaryDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.gmail/"
                }
              ],
              "credentialDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/credentials/google/oauth-single-service/"
                }
              ]
            },
            "categories": [
              "Communication",
              "HITL"
            ],
            "nodeVersion": "1.0",
            "codexVersion": "1.0",
            "subcategories": {
              "HITL": [
                "Human in the Loop"
              ]
            }
          }
        },
        "group": "[\"transform\"]",
        "defaults": {
          "name": "Gmail"
        },
        "iconData": {
          "type": "file",
          "fileBuffer": "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNTYiIGhlaWdodD0iMTkzIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWlkWU1pZCI+PHBhdGggZmlsbD0iIzQyODVGNCIgZD0iTTU4LjE4MiAxOTIuMDVWOTMuMTRMMjcuNTA3IDY1LjA3NyAwIDQ5LjUwNHYxMjUuMDkxYzAgOS42NTggNy44MjUgMTcuNDU1IDE3LjQ1NSAxNy40NTV6Ii8+PHBhdGggZmlsbD0iIzM0QTg1MyIgZD0iTTE5Ny44MTggMTkyLjA1aDQwLjcyN2M5LjY1OSAwIDE3LjQ1NS03LjgyNiAxNy40NTUtMTcuNDU1VjQ5LjUwNWwtMzEuMTU2IDE3LjgzNy0yNy4wMjYgMjUuNzk4eiIvPjxwYXRoIGZpbGw9IiNFQTQzMzUiIGQ9Im01OC4xODIgOTMuMTQtNC4xNzQtMzguNjQ3IDQuMTc0LTM2Ljk4OUwxMjggNjkuODY4bDY5LjgxOC01Mi4zNjQgNC42NyAzNC45OTItNC42NyA0MC42NDRMMTI4IDE0NS41MDR6Ii8+PHBhdGggZmlsbD0iI0ZCQkMwNCIgZD0iTTE5Ny44MTggMTcuNTA0VjkzLjE0TDI1NiA0OS41MDRWMjYuMjMxYzAtMjEuNTg1LTI0LjY0LTMzLjg5LTQxLjg5LTIwLjk0NXoiLz48cGF0aCBmaWxsPSIjQzUyMjFGIiBkPSJtMCA0OS41MDQgMjYuNzU5IDIwLjA3TDU4LjE4MiA5My4xNFYxNy41MDRMNDEuODkgNS4yODZDMjQuNjEtNy42NiAwIDQuNjQ2IDAgMjYuMjN6Ii8+PC9zdmc+"
        },
        "displayName": "Gmail",
        "typeVersion": 2,
        "nodeCategories": [
          {
            "id": 6,
            "name": "Communication"
          },
          {
            "id": 28,
            "name": "HITL"
          }
        ]
      },
      {
        "id": 565,
        "icon": "fa:sticky-note",
        "name": "n8n-nodes-base.stickyNote",
        "codex": {
          "data": {
            "alias": [
              "Comments",
              "Notes",
              "Sticky"
            ],
            "categories": [
              "Core Nodes"
            ],
            "nodeVersion": "1.0",
            "codexVersion": "1.0",
            "subcategories": {
              "Core Nodes": [
                "Helpers"
              ]
            }
          }
        },
        "group": "[\"input\"]",
        "defaults": {
          "name": "Sticky Note",
          "color": "#FFD233"
        },
        "iconData": {
          "icon": "sticky-note",
          "type": "icon"
        },
        "displayName": "Sticky Note",
        "typeVersion": 1,
        "nodeCategories": [
          {
            "id": 9,
            "name": "Core Nodes"
          }
        ]
      },
      {
        "id": 834,
        "icon": "file:code.svg",
        "name": "n8n-nodes-base.code",
        "codex": {
          "data": {
            "alias": [
              "cpde",
              "Javascript",
              "JS",
              "Python",
              "Script",
              "Custom Code",
              "Function"
            ],
            "details": "The Code node allows you to execute JavaScript in your workflow.",
            "resources": {
              "primaryDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.code/"
                }
              ]
            },
            "categories": [
              "Development",
              "Core Nodes"
            ],
            "nodeVersion": "1.0",
            "codexVersion": "1.0",
            "subcategories": {
              "Core Nodes": [
                "Helpers",
                "Data Transformation"
              ]
            }
          }
        },
        "group": "[\"transform\"]",
        "defaults": {
          "name": "Code"
        },
        "iconData": {
          "type": "file",
          "fileBuffer": "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTEyIiBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMF8xMTcxXzQ0MSkiPgo8cGF0aCBkPSJNMTcwLjI4MyA0OEgxOTYuNUMyMDMuMTI3IDQ4IDIwOC41IDQyLjYyNzQgMjA4LjUgMzZWMTJDMjA4LjUgNS4zNzI1OCAyMDMuMTI3IDAgMTk2LjUgMEgxNzAuMjgzQzEyNi4xIDAgOTAuMjgzIDM1LjgxNzIgOTAuMjgzIDgwVjE3NkM5MC4yODMgMjA2LjkyOCA2NS4yMTA5IDIzMiAzNC4yODMgMjMySDIzQzE2LjM3MjYgMjMyIDExIDIzNy4zNzIgMTEgMjQ0VjI2OEMxMSAyNzQuNjI3IDE2LjM3MjQgMjgwIDIyLjk5OTYgMjgwTDM0LjI4MyAyODBDNjUuMjEwOSAyODAgOTAuMjgzIDMwNS4wNzIgOTAuMjgzIDMzNlY0NDBDOTAuMjgzIDQ3OS43NjQgMTIyLjUxOCA1MTIgMTYyLjI4MyA1MTJIMTk2LjVDMjAzLjEyNyA1MTIgMjA4LjUgNTA2LjYyNyAyMDguNSA1MDBWNDc2QzIwOC41IDQ2OS4zNzMgMjAzLjEyNyA0NjQgMTk2LjUgNDY0SDE2Mi4yODNDMTQ5LjAyOCA0NjQgMTM4LjI4MyA0NTMuMjU1IDEzOC4yODMgNDQwVjMzNkMxMzguMjgzIDMwOS4wMjIgMTI4LjAxMSAyODQuNDQzIDExMS4xNjQgMjY1Ljk2MUMxMDYuMTA5IDI2MC40MTYgMTA2LjEwOSAyNTEuNTg0IDExMS4xNjQgMjQ2LjAzOUMxMjguMDExIDIyNy41NTcgMTM4LjI4MyAyMDIuOTc4IDEzOC4yODMgMTc2VjgwQzEzOC4yODMgNjIuMzI2OSAxNTIuNjEgNDggMTcwLjI4MyA0OFoiIGZpbGw9IiNGRjk5MjIiLz4KPHBhdGggZD0iTTMwNSAzNkMzMDUgNDIuNjI3NCAzMTAuMzczIDQ4IDMxNyA0OEgzNDIuOTc5QzM2MC42NTIgNDggMzc0Ljk3OCA2Mi4zMjY5IDM3NC45NzggODBWMTc2QzM3NC45NzggMjAyLjk3OCAzODUuMjUxIDIyNy41NTcgNDAyLjA5OCAyNDYuMDM5QzQwNy4xNTMgMjUxLjU4NCA0MDcuMTUzIDI2MC40MTYgNDAyLjA5OCAyNjUuOTYxQzM4NS4yNTEgMjg0LjQ0MyAzNzQuOTc4IDMwOS4wMjIgMzc0Ljk3OCAzMzZWNDMyQzM3NC45NzggNDQ5LjY3MyAzNjAuNjUyIDQ2NCAzNDIuOTc5IDQ2NEgzMTdDMzEwLjM3MyA0NjQgMzA1IDQ2OS4zNzMgMzA1IDQ3NlY1MDBDMzA1IDUwNi42MjcgMzEwLjM3MyA1MTIgMzE3IDUxMkgzNDIuOTc5QzM4Ny4xNjEgNTEyIDQyMi45NzggNDc2LjE4MyA0MjIuOTc4IDQzMlYzMzZDNDIyLjk3OCAzMDUuMDcyIDQ0OC4wNTEgMjgwIDQ3OC45NzkgMjgwSDQ5MEM0OTYuNjI3IDI4MCA1MDIgMjc0LjYyOCA1MDIgMjY4VjI0NEM1MDIgMjM3LjM3MyA0OTYuNjI4IDIzMiA0OTAgMjMyTDQ3OC45NzkgMjMyQzQ0OC4wNTEgMjMyIDQyMi45NzggMjA2LjkyOCA0MjIuOTc4IDE3NlY4MEM0MjIuOTc4IDM1LjgxNzIgMzg3LjE2MSAwIDM0Mi45NzkgMEgzMTdDMzEwLjM3MyAwIDMwNSA1LjM3MjU4IDMwNSAxMlYzNloiIGZpbGw9IiNGRjk5MjIiLz4KPC9nPgo8ZGVmcz4KPGNsaXBQYXRoIGlkPSJjbGlwMF8xMTcxXzQ0MSI+CjxyZWN0IHdpZHRoPSI1MTIiIGhlaWdodD0iNTEyIiBmaWxsPSJ3aGl0ZSIvPgo8L2NsaXBQYXRoPgo8L2RlZnM+Cjwvc3ZnPgo="
        },
        "displayName": "Code",
        "typeVersion": 2,
        "nodeCategories": [
          {
            "id": 5,
            "name": "Development"
          },
          {
            "id": 9,
            "name": "Core Nodes"
          }
        ]
      },
      {
        "id": 838,
        "icon": "fa:mouse-pointer",
        "name": "n8n-nodes-base.manualTrigger",
        "codex": {
          "data": {
            "resources": {
              "generic": [],
              "primaryDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.manualworkflowtrigger/"
                }
              ]
            },
            "categories": [
              "Core Nodes"
            ],
            "nodeVersion": "1.0",
            "codexVersion": "1.0"
          }
        },
        "group": "[\"trigger\"]",
        "defaults": {
          "name": "When clicking ‘Execute workflow’",
          "color": "#909298"
        },
        "iconData": {
          "icon": "mouse-pointer",
          "type": "icon"
        },
        "displayName": "Manual Trigger",
        "typeVersion": 1,
        "nodeCategories": [
          {
            "id": 9,
            "name": "Core Nodes"
          }
        ]
      },
      {
        "id": 1119,
        "icon": "fa:robot",
        "name": "@n8n/n8n-nodes-langchain.agent",
        "codex": {
          "data": {
            "alias": [
              "LangChain",
              "Chat",
              "Conversational",
              "Plan and Execute",
              "ReAct",
              "Tools"
            ],
            "resources": {
              "primaryDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.agent/"
                }
              ]
            },
            "categories": [
              "AI",
              "Langchain"
            ],
            "subcategories": {
              "AI": [
                "Agents",
                "Root Nodes"
              ]
            }
          }
        },
        "group": "[\"transform\"]",
        "defaults": {
          "name": "AI Agent",
          "color": "#404040"
        },
        "iconData": {
          "icon": "robot",
          "type": "icon"
        },
        "displayName": "AI Agent",
        "typeVersion": 3,
        "nodeCategories": [
          {
            "id": 25,
            "name": "AI"
          },
          {
            "id": 26,
            "name": "Langchain"
          }
        ]
      },
      {
        "id": 1163,
        "icon": "fa:database",
        "name": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
        "codex": {
          "data": {
            "resources": {
              "primaryDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.memorybufferwindow/"
                }
              ]
            },
            "categories": [
              "AI",
              "Langchain"
            ],
            "subcategories": {
              "AI": [
                "Memory"
              ],
              "Memory": [
                "For beginners"
              ]
            }
          }
        },
        "group": "[\"transform\"]",
        "defaults": {
          "name": "Simple Memory"
        },
        "iconData": {
          "icon": "database",
          "type": "icon"
        },
        "displayName": "Simple Memory",
        "typeVersion": 1,
        "nodeCategories": [
          {
            "id": 25,
            "name": "AI"
          },
          {
            "id": 26,
            "name": "Langchain"
          }
        ]
      },
      {
        "id": 1179,
        "icon": "fa:code",
        "name": "@n8n/n8n-nodes-langchain.outputParserStructured",
        "codex": {
          "data": {
            "alias": [
              "json",
              "zod"
            ],
            "resources": {
              "primaryDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.outputparserstructured/"
                }
              ]
            },
            "categories": [
              "AI",
              "Langchain"
            ],
            "subcategories": {
              "AI": [
                "Output Parsers"
              ]
            }
          }
        },
        "group": "[\"transform\"]",
        "defaults": {
          "name": "Structured Output Parser"
        },
        "iconData": {
          "icon": "code",
          "type": "icon"
        },
        "displayName": "Structured Output Parser",
        "typeVersion": 1,
        "nodeCategories": [
          {
            "id": 25,
            "name": "AI"
          },
          {
            "id": 26,
            "name": "Langchain"
          }
        ]
      },
      {
        "id": 1235,
        "icon": "file:extractFromFile.svg",
        "name": "n8n-nodes-base.extractFromFile",
        "codex": {
          "data": {
            "alias": [
              "CSV",
              "Spreadsheet",
              "Excel",
              "xls",
              "xlsx",
              "ods",
              "tabular",
              "decode",
              "decoding",
              "Move Binary Data",
              "Binary",
              "File",
              "PDF",
              "JSON",
              "HTML",
              "ICS",
              "iCal",
              "txt",
              "Text",
              "RTF",
              "XML",
              "64",
              "Base64",
              "Convert"
            ],
            "resources": {
              "primaryDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.extractfromfile/"
                }
              ]
            },
            "categories": [
              "Core Nodes"
            ],
            "nodeVersion": "1.0",
            "codexVersion": "1.0",
            "subcategories": {
              "Core Nodes": [
                "Files",
                "Data Transformation"
              ]
            }
          }
        },
        "group": "[\"input\"]",
        "defaults": {
          "name": "Extract from File"
        },
        "iconData": {
          "type": "file",
          "fileBuffer": "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIHZpZXdCb3g9IjAgMCA0MCA0MCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTAuOTM3NSAyQzAuNDE5NzMzIDIgMCAyLjQxOTczIDAgMi45Mzc1VjM3LjMyMjFDMCAzNy44Mzk5IDAuNDE5NzMzIDM4LjI1OTYgMC45Mzc1IDM4LjI1OTZIMjYuMjE1NEMyNi43MzMyIDM4LjI1OTYgMjcuMTUyOSAzNy44Mzk5IDI3LjE1MjkgMzcuMzIyMUwyNy4xNTI5IDMwLjY3MTlMMTYuNzk2OSAzMC42NzE5QzE0Ljg5ODQgMzAuNjcxOSAxMy4zNTk0IDI5LjEzMjkgMTMuMzU5NCAyNy4yMzQ0VjI1LjM1OTRDMTMuMzU5NCAyMy40NjA5IDE0Ljg5ODQgMjEuOTIxOSAxNi43OTY5IDIxLjkyMTlIMjcuMTUyOUwyNy4xNTI5IDE1Ljc4MjFIMTQuMzA4M0MxMy43OTA2IDE1Ljc4MjEgMTMuMzcwOCAxNS4zNjI0IDEzLjM3MDggMTQuODQ0NlYySDAuOTM3NVoiIGZpbGw9IiMzNTNGNkUiLz4KPHBhdGggZD0iTTE2LjAyNzEgMkMxNS45NDA4IDIgMTUuODcwOCAyLjA2OTk2IDE1Ljg3MDggMi4xNTYyNVYxMi44MTM0QzE1Ljg3MDggMTMuMDcyMyAxNi4wODA3IDEzLjI4MjEgMTYuMzM5NiAxMy4yODIxSDI2Ljk5NjdDMjcuMDgzIDEzLjI4MjEgMjcuMTUyOSAxMy4yMTIyIDI3LjE1MjkgMTMuMTI1OUwyNy4xNTI5IDEyLjYxNzFDMjcuMTUyOSAxMi4zNjg4IDI3LjA1NDUgMTIuMTMwNyAyNi44NzkxIDExLjk1NUwxNy4yMjI1IDIuMjc1MzhDMTcuMDQ2NiAyLjA5OTA4IDE2LjgwNzkgMiAxNi41NTg4IDJIMTYuMDI3MVoiIGZpbGw9IiMzNTNGNkUiLz4KPHBhdGggZD0iTTI5Ljc2NDIgMzQuNjUwM0MyOS4wMzQgMzMuOTE2IDI5LjAzNzQgMzIuNzI4OCAyOS43NzE2IDMxLjk5ODZMMzMuNjE5NyAyOC4xNzE5TDE2Ljc5NjkgMjguMTcxOUMxNi4yNzkxIDI4LjE3MTkgMTUuODU5NCAyNy43NTIxIDE1Ljg1OTQgMjcuMjM0NFYyNS4zNTk0QzE1Ljg1OTQgMjQuODQxNiAxNi4yNzkxIDI0LjQyMTkgMTYuNzk2OSAyNC40MjE5TDMzLjU0MTIgMjQuNDIxOUwyOS43NzE2IDIwLjY3MzNDMjkuMDM3NCAxOS45NDMxIDI5LjAzNCAxOC43NTU5IDI5Ljc2NDIgMTguMDIxNkMzMC40OTQ0IDE3LjI4NzQgMzEuNjgxNiAxNy4yODQgMzIuNDE1OSAxOC4wMTQyTDM5LjQ0NzEgMjUuMDA2NEMzOS44MDEgMjUuMzU4MyA0MCAyNS44MzY4IDQwIDI2LjMzNTlDNDAgMjYuODM1IDM5LjgwMSAyNy4zMTM1IDM5LjQ0NzEgMjcuNjY1NUwzMi40MTU5IDM0LjY1NzZDMzEuNjgxNiAzNS4zODc4IDMwLjQ5NDQgMzUuMzg0NSAyOS43NjQyIDM0LjY1MDNaIiBmaWxsPSIjMzUzRjZFIi8+Cjwvc3ZnPgo="
        },
        "displayName": "Extract from File",
        "typeVersion": 1,
        "nodeCategories": [
          {
            "id": 9,
            "name": "Core Nodes"
          }
        ]
      },
      {
        "id": 1253,
        "icon": "file:azure.svg",
        "name": "@n8n/n8n-nodes-langchain.lmChatAzureOpenAi",
        "codex": {
          "data": {
            "resources": {
              "primaryDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.lmchatazureopenai/"
                }
              ]
            },
            "categories": [
              "AI",
              "Langchain"
            ],
            "subcategories": {
              "AI": [
                "Language Models",
                "Root Nodes"
              ],
              "Language Models": [
                "Chat Models (Recommended)"
              ]
            }
          }
        },
        "group": "[\"transform\"]",
        "defaults": {
          "name": "Azure OpenAI Chat Model"
        },
        "iconData": {
          "type": "file",
          "fileBuffer": "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNTYiIGhlaWdodD0iMjQyIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWlkWU1pZCI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJhIiB4MT0iNTguOTcyJSIgeDI9IjM3LjE5MSUiIHkxPSI3LjQxMSUiIHkyPSIxMDMuNzYyJSI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iIzExNEE4QiIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iIzA2NjlCQyIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPSJiIiB4MT0iNTkuNzE5JSIgeDI9IjUyLjY5MSUiIHkxPSI1Mi4zMTMlIiB5Mj0iNTQuODY0JSI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1vcGFjaXR5PSIuMyIvPjxzdG9wIG9mZnNldD0iNy4xJSIgc3RvcC1vcGFjaXR5PSIuMiIvPjxzdG9wIG9mZnNldD0iMzIuMSUiIHN0b3Atb3BhY2l0eT0iLjEiLz48c3RvcCBvZmZzZXQ9IjYyLjMlIiBzdG9wLW9wYWNpdHk9Ii4wNSIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1vcGFjaXR5PSIwIi8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9ImMiIHgxPSIzNy4yNzklIiB4Mj0iNjIuNDczJSIgeTE9IjQuNiUiIHkyPSI5OS45NzklIj48c3RvcCBvZmZzZXQ9IjAlIiBzdG9wLWNvbG9yPSIjM0NDQkY0Ii8+PHN0b3Agb2Zmc2V0PSIxMDAlIiBzdG9wLWNvbG9yPSIjMjg5MkRGIi8+PC9saW5lYXJHcmFkaWVudD48L2RlZnM+PHBhdGggZmlsbD0idXJsKCNhKSIgZD0iTTg1LjM0My4wMDNoNzUuNzUzTDgyLjQ1NyAyMzNhMTIuMDggMTIuMDggMCAwIDEtMTEuNDQyIDguMjE2SDEyLjA2QTEyLjA2IDEyLjA2IDAgMCAxIC42MzMgMjI1LjMwM0w3My44OTggOC4yMTlBMTIuMDggMTIuMDggMCAwIDEgODUuMzQzIDB6Ii8+PHBhdGggZmlsbD0iIzAwNzhENCIgZD0iTTE5NS40MjMgMTU2LjI4Mkg3NS4yOTdhNS41NiA1LjU2IDAgMCAwLTMuNzk2IDkuNjI3bDc3LjE5IDcyLjA0N2ExMi4xNCAxMi4xNCAwIDAgMCA4LjI4IDMuMjZoNjguMDJ6Ii8+PHBhdGggZmlsbD0idXJsKCNiKSIgZD0iTTg1LjM0My4wMDNhMTEuOTggMTEuOTggMCAwIDAtMTEuNDcxIDguMzc2TC43MjMgMjI1LjEwNWExMi4wNDUgMTIuMDQ1IDAgMCAwIDExLjM3IDE2LjExMmg2MC40NzVhMTIuOTMgMTIuOTMgMCAwIDAgOS45MjEtOC40MzdsMTQuNTg4LTQyLjk5MSA1Mi4xMDUgNDguNmExMi4zMyAxMi4zMyAwIDAgMCA3Ljc1NyAyLjgyOGg2Ny43NjZsLTI5LjcyMS04NC45MzUtODYuNjQzLjAyTDE2MS4zNy4wMDN6Ii8+PHBhdGggZmlsbD0idXJsKCNjKSIgZD0iTTE4Mi4wOTggOC4yMDdBMTIuMDYgMTIuMDYgMCAwIDAgMTcwLjY3LjAwM0g4Ni4yNDVjNS4xNzUgMCA5Ljc3MyAzLjMwMSAxMS40MjggOC4yMDRMMTcwLjk0IDIyNS4zYTEyLjA2MiAxMi4wNjIgMCAwIDEtMTEuNDI4IDE1LjkyaDg0LjQyOWExMi4wNjIgMTIuMDYyIDAgMCAwIDExLjQyNS0xNS45MnoiLz48L3N2Zz4="
        },
        "displayName": "Azure OpenAI Chat Model",
        "typeVersion": 1,
        "nodeCategories": [
          {
            "id": 25,
            "name": "AI"
          },
          {
            "id": 26,
            "name": "Langchain"
          }
        ]
      }
    ],
    "categories": [
      {
        "id": 35,
        "name": "Document Extraction"
      }
    ],
    "image": []
  }
}