AutomationFlowsAI & RAG › Process & Catalog Dress Images with Gpt-4o, Cloudinary, and Google Sheets

Process & Catalog Dress Images with Gpt-4o, Cloudinary, and Google Sheets

ByRahul Joshi @rahul08 on n8n.io

Automate dress image handling end-to-end: search files, download them, upload to Cloudinary, invoke Azure OpenAI (GPT-4o), parse structured output, and append rows to a sheet. Gain a repeatable, low-touch process for product media and metadata logging. ✨ Searches files and…

Event trigger★★★★☆ complexityAI-powered26 nodesGoogle DriveHTTP RequestGoogle SheetsAgentLm Chat Azure Open AiOutput Parser Structured
AI & RAG Trigger: Event Nodes: 26 Complexity: ★★★★☆ AI nodes: yes Added:

This workflow corresponds to n8n.io template #9312 — we link there as the canonical source.

This workflow follows the Agent → Google Drive recipe pattern — see all workflows that pair these two integrations.

The workflow JSON

Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →

Download .json
{
  "id": "9XevkVCNXgZ53qKq",
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "name": "Upload Dress Images to Cloudinary & Log to Sheet with Azure OpenAI (GPT-4o)",
  "tags": [
    {
      "id": "cshJUy1dOLdeUENB",
      "name": "Fairy Frills",
      "createdAt": "2025-09-12T00:04:07.350Z",
      "updatedAt": "2025-09-12T00:04:07.350Z"
    }
  ],
  "nodes": [
    {
      "id": "2a16a7a4-2385-4186-95a6-93273953fd87",
      "name": "Search files and folders",
      "type": "n8n-nodes-base.googleDrive",
      "position": [
        -2128,
        112
      ],
      "parameters": {},
      "typeVersion": 3
    },
    {
      "id": "2ef1614c-3c49-43f2-bb69-6abd748dec96",
      "name": "Search files and folders1",
      "type": "n8n-nodes-base.googleDrive",
      "position": [
        -1680,
        112
      ],
      "parameters": {},
      "executeOnce": false,
      "typeVersion": 3
    },
    {
      "id": "567bda21-bec7-4372-9b1d-15877fc7b24a",
      "name": "Loop Over Items",
      "type": "n8n-nodes-base.splitInBatches",
      "position": [
        -1904,
        112
      ],
      "parameters": {},
      "typeVersion": 3
    },
    {
      "id": "725719e1-f2d5-4dca-894e-57c2bb39081d",
      "name": "upload frames to cloudinary",
      "type": "n8n-nodes-base.httpRequest",
      "maxTries": 5,
      "position": [
        -1248,
        112
      ],
      "parameters": {},
      "retryOnFail": true,
      "typeVersion": 4.2
    },
    {
      "id": "5c44d9bf-6ac8-4f30-814b-d5f7e202d13f",
      "name": "Download file",
      "type": "n8n-nodes-base.googleDrive",
      "position": [
        -1456,
        112
      ],
      "parameters": {},
      "typeVersion": 3
    },
    {
      "id": "525721b3-5a59-4e9e-8305-454f20b5df29",
      "name": "Append row in sheet",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        0,
        0
      ],
      "parameters": {},
      "typeVersion": 4.6
    },
    {
      "id": "835afee7-3c0a-41ef-8df3-5c2122d272b8",
      "name": "AI Agent",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        -368,
        112
      ],
      "parameters": {},
      "typeVersion": 2
    },
    {
      "id": "19958aaa-ece9-44e9-9fe9-34df96af6f64",
      "name": "Azure OpenAI Chat Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatAzureOpenAi",
      "position": [
        -336,
        320
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "280df4b6-001f-4d78-ade9-eb1b00bcb616",
      "name": "azure openai",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -1024,
        112
      ],
      "parameters": {},
      "typeVersion": 4.2
    },
    {
      "id": "f57a8ef1-9e65-47ed-a709-20f8350aeee9",
      "name": "Structured Output Parser",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        -224,
        320
      ],
      "parameters": {},
      "typeVersion": 1.3
    },
    {
      "id": "a0f3edb5-277d-4045-8a52-190a232288fe",
      "name": "Append row in sheet2",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        0,
        208
      ],
      "parameters": {},
      "typeVersion": 4.6
    },
    {
      "id": "6b28ca78-d7b3-4595-9457-c704c28b412b",
      "name": "When clicking \u2018Execute workflow\u2019",
      "type": "n8n-nodes-base.manualTrigger",
      "position": [
        -2336,
        112
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "9c136050-cef3-4636-99ac-ecefbf991763",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -2192,
        288
      ],
      "parameters": {
        "content": ""
      },
      "typeVersion": 1
    },
    {
      "id": "1a685527-23dd-4b04-ba8a-0bc661dfe400",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1984,
        -96
      ],
      "parameters": {
        "content": ""
      },
      "typeVersion": 1
    },
    {
      "id": "308bff41-a761-4237-b887-d2f2591aea28",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1744,
        304
      ],
      "parameters": {
        "content": ""
      },
      "typeVersion": 1
    },
    {
      "id": "b935e853-e308-4336-b896-e2b13e9677f6",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1536,
        -96
      ],
      "parameters": {
        "content": ""
      },
      "typeVersion": 1
    },
    {
      "id": "203f0cd4-93c9-4ea1-8239-0014fd4687d7",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1328,
        320
      ],
      "parameters": {
        "content": ""
      },
      "typeVersion": 1
    },
    {
      "id": "5048f09a-e3ba-4eb4-8771-fa99fbed2cb4",
      "name": "Sticky Note8",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1120,
        -112
      ],
      "parameters": {
        "content": ""
      },
      "typeVersion": 1
    },
    {
      "id": "4392c8a1-600e-4f8d-9a23-f7571fff99b4",
      "name": "Setting description",
      "type": "n8n-nodes-base.set",
      "position": [
        -800,
        112
      ],
      "parameters": {},
      "typeVersion": 3.4
    },
    {
      "id": "4e022dae-8b75-46ca-a48a-2a8cd64ea787",
      "name": "flattening descriptions",
      "type": "n8n-nodes-base.code",
      "position": [
        -576,
        112
      ],
      "parameters": {},
      "typeVersion": 2
    },
    {
      "id": "e7763711-8ee1-4f77-b03c-4111f219fc2b",
      "name": "Sticky Note9",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -352,
        480
      ],
      "parameters": {
        "content": ""
      },
      "typeVersion": 1
    },
    {
      "id": "d8cda113-6bf5-4a89-bbc8-cdf79f2fad28",
      "name": "Sticky Note10",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -80,
        -224
      ],
      "parameters": {
        "content": ""
      },
      "typeVersion": 1
    },
    {
      "id": "80856104-e323-4963-9ffd-b6a5a23e2595",
      "name": "Sticky Note11",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        464,
        48
      ],
      "parameters": {
        "content": ""
      },
      "typeVersion": 1
    },
    {
      "id": "4bdc8120-b3a7-4865-b3a6-02f29193ffc9",
      "name": "Merge outputs for Logic",
      "type": "n8n-nodes-base.merge",
      "position": [
        272,
        80
      ],
      "parameters": {},
      "typeVersion": 3.2
    },
    {
      "id": "7f4e1076-0f21-47c5-b9a6-f89906427cb2",
      "name": "Sticky Note12",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -656,
        -128
      ],
      "parameters": {
        "content": ""
      },
      "typeVersion": 1
    },
    {
      "id": "72b7ca2a-42ef-4f94-af46-4fbd6542ae61",
      "name": "Sticky Note13",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -880,
        304
      ],
      "parameters": {
        "content": ""
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "88e71406-014f-419b-9a27-f52c553050d5",
  "connections": {
    "AI Agent": {
      "main": [
        [
          {
            "node": "Append row in sheet",
            "type": "main",
            "index": 0
          },
          {
            "node": "Append row in sheet2",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "azure openai": {
      "main": [
        [
          {
            "node": "Setting description",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Download file": {
      "main": [
        [
          {
            "node": "upload frames to cloudinary",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Loop Over Items": {
      "main": [
        [],
        [
          {
            "node": "Search files and folders1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Append row in sheet": {
      "main": [
        [
          {
            "node": "Merge outputs for Logic",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Setting description": {
      "main": [
        [
          {
            "node": "flattening descriptions",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Append row in sheet2": {
      "main": [
        [
          {
            "node": "Merge outputs for Logic",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "Azure OpenAI Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "AI Agent",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Merge outputs for Logic": {
      "main": [
        [
          {
            "node": "Loop Over Items",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "flattening descriptions": {
      "main": [
        [
          {
            "node": "AI Agent",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Search files and folders": {
      "main": [
        [
          {
            "node": "Loop Over Items",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Structured Output Parser": {
      "ai_outputParser": [
        [
          {
            "node": "AI Agent",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "Search files and folders1": {
      "main": [
        [
          {
            "node": "Download file",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "upload frames to cloudinary": {
      "main": [
        [
          {
            "node": "azure openai",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "When clicking \u2018Execute workflow\u2019": {
      "main": [
        [
          {
            "node": "Search files and folders",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
Pro

For the full experience including quality scoring and batch install features for each workflow upgrade to Pro

About this workflow

Automate dress image handling end-to-end: search files, download them, upload to Cloudinary, invoke Azure OpenAI (GPT-4o), parse structured output, and append rows to a sheet. Gain a repeatable, low-touch process for product media and metadata logging. ✨ Searches files and…

Source: https://n8n.io/workflows/9312/ — original creator credit. Request a take-down →

More AI & RAG workflows → · Browse all categories →

Related workflows

Workflows that share integrations, category, or trigger type with this one. All free to copy and import.

AI & RAG

🎯 Create viral TikToks, Shorts, Reels, podcasts, and ASMR videos in minutes — all on autopilot.

OpenAI, HTTP Request, Form Trigger +7
AI & RAG

Generate AI viral videos with NanoBanana & VEO3, shared on socials via Blotato 2. Uses @blotato/n8n-nodes-blotato, googleSheets, lmChatOpenAi, toolThink. Event-driven trigger; 94 nodes.

@Blotato/N8N Nodes Blotato, Google Sheets, OpenAI Chat +9
AI & RAG

This template is designed for marketers, content creators, and e-commerce brands who want to automate the creation of professional ad videos at scale. It’s ideal for teams looking to generate consiste

Telegram, Telegram Trigger, Google Drive +8
AI & RAG

This comprehensive n8n workflow automates the entire Meta (Facebook/Instagram) advertising process, from asset analysis to ad creation. It combines AI-powered content analysis with automated ad deploy

Facebook Graph Api, HTTP Request, Google Drive +5
AI & RAG

This automation is designed to help you generate AI-powered music tracks, cover art, and fully rendered music videos — all triggered from a simple Telegram chat and managed via Google Sheets.

OpenAI Chat, Memory Buffer Window, Output Parser Structured +11