8
n8n 中文网amn8n.com

高级WooCommerce产品对账与同步

高级

这是一个CRM, Multimodal AI领域的自动化工作流,包含 31 个节点。主要使用 If, Code, Merge, Slack, WooCommerce 等节点。 使用Google Gemini AI和BrowserAct同步WooCommerce库存并创建产品

前置要求
  • Slack Bot Token 或 Webhook URL
  • Google Sheets API 凭证
  • Google Gemini API Key
工作流预览
可视化展示节点连接关系,支持缩放和平移
导出工作流
复制以下 JSON 配置到 n8n 导入,即可使用此工作流
{
  "id": "xWJadnVEYEmfvsH5",
  "meta": {
    "instanceId": "88804d8e264d231c18413147cc92e4245b20ae7b97d774bad847556f645c8192",
    "templateCredsSetupCompleted": true
  },
  "name": "高级 WooCommerce 产品对账与同步",
  "tags": [],
  "nodes": [
    {
      "id": "359efd1f-8b53-4856-aa26-48103897473d",
      "name": "获取多个产品",
      "type": "n8n-nodes-base.wooCommerce",
      "position": [
        256,
        -144
      ],
      "parameters": {
        "options": {
          "search": "={{ $json.Name }}"
        },
        "operation": "getAll"
      },
      "credentials": {
        "wooCommerceApi": {
          "id": "LwI8wvOrr3sPSHLk",
          "name": "WooCommerce account"
        }
      },
      "typeVersion": 1,
      "alwaysOutputData": true
    },
    {
      "id": "5d014a7c-5952-41de-8be2-08435144fab4",
      "name": "更新产品",
      "type": "n8n-nodes-base.wooCommerce",
      "onError": "continueErrorOutput",
      "position": [
        944,
        -160
      ],
      "parameters": {
        "imagesUi": {},
        "resource": "product",
        "operation": "update",
        "productId": "={{ $json.id }}",
        "metadataUi": {},
        "dimensionsUi": {},
        "updateFields": {
          "regularPrice": "={{ $('BrowserAct JSON Breakdown').item.json.Price }}",
          "stockQuantity": "={{ $('BrowserAct JSON Breakdown').item.json.Quantity }}"
        }
      },
      "credentials": {
        "wooCommerceApi": {
          "id": "LwI8wvOrr3sPSHLk",
          "name": "WooCommerce account"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "f3091026-476d-48e7-8768-0015c03564a1",
      "name": "获取产品库存数据",
      "type": "n8n-nodes-browseract-workflows.browserAct",
      "onError": "continueErrorOutput",
      "position": [
        -512,
        -80
      ],
      "parameters": {
        "workflowId": "58839712632662919",
        "runMaxWaitTime": 900,
        "inputParameters": {
          "parameters": [
            {
              "name": "Target_Url",
              "value": "={{ $json[\"Inventory page\"] }}"
            }
          ]
        },
        "additionalFields": {
          "saveBrowserData": true
        },
        "runPollingInterval": 30
      },
      "credentials": {
        "browserActApi": {
          "id": "AzKMhR2eAlOjzDiJ",
          "name": "BrowserAct account"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "16539d4b-2817-4dc2-abac-2c58bc3ad5d8",
      "name": "Google Gemini 聊天模型",
      "type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
      "position": [
        736,
        240
      ],
      "parameters": {
        "options": {}
      },
      "credentials": {
        "googlePalmApi": {
          "id": "U1olizkBYhp4g9AB",
          "name": "Google Gemini(PaLM) Api account"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "e7b713db-9a9b-41e1-accd-2c7a3fe6b737",
      "name": "发送消息",
      "type": "n8n-nodes-base.slack",
      "position": [
        -512,
        -240
      ],
      "webhookId": "650d7b5e-b7d3-4df3-b5dd-01471dd0a6de",
      "parameters": {
        "text": "The product syncing process finished.",
        "select": "channel",
        "channelId": {
          "__rl": true,
          "mode": "list",
          "value": "C09LWT82KHN",
          "cachedResultName": "new_product_added"
        },
        "otherOptions": {},
        "authentication": "oAuth2"
      },
      "credentials": {
        "slackOAuth2Api": {
          "id": "5rQCkyObBqbHIbZA",
          "name": "Slack account"
        }
      },
      "typeVersion": 2.3
    },
    {
      "id": "60842653-3eec-4b3f-a80a-cf8cf3da97d7",
      "name": "创建产品",
      "type": "n8n-nodes-base.wooCommerce",
      "onError": "continueErrorOutput",
      "position": [
        960,
        48
      ],
      "parameters": {
        "name": "={{ $('BrowserAct Json Breakdown').item.json.Name }}",
        "imagesUi": {},
        "resource": "product",
        "operation": "create",
        "metadataUi": {},
        "dimensionsUi": {},
        "additionalFields": {
          "sku": "=SKU_{{ $('BrowserAct Json Breakdown').item.json.Name }}",
          "description": "={{ $json.output }}",
          "manageStock": true,
          "regularPrice": "={{ $('BrowserAct Json Breakdown').item.json.Price}}",
          "stockQuantity": "={{ $('BrowserAct Json Breakdown').item.json.Quantity }}"
        }
      },
      "credentials": {
        "wooCommerceApi": {
          "id": "LwI8wvOrr3sPSHLk",
          "name": "WooCommerce account"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "8b95853a-0792-4c73-bbfe-07c8921844e5",
      "name": "合并",
      "type": "n8n-nodes-base.merge",
      "position": [
        1392,
        16
      ],
      "parameters": {
        "numberInputs": 3
      },
      "typeVersion": 3.2
    },
    {
      "id": "358f3506-7b05-48e8-9e75-d9315c22b90e",
      "name": "添加缺失产品",
      "type": "n8n-nodes-browseract-workflows.browserAct",
      "onError": "continueErrorOutput",
      "position": [
        336,
        64
      ],
      "parameters": {
        "workflowId": "58839211174254215",
        "runMaxWaitTime": 900,
        "inputParameters": {
          "parameters": [
            {
              "name": "Product_Name",
              "value": "={{ $('BrowserAct JSON Breakdown').item.json.Name }}"
            },
            {
              "name": "Supplier_Link",
              "value": "https://www.digikey.co.uk/en/"
            }
          ]
        },
        "additionalFields": {},
        "runPollingInterval": 30
      },
      "credentials": {
        "browserActApi": {
          "id": "AzKMhR2eAlOjzDiJ",
          "name": "BrowserAct account"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "7de632a3-0a8e-483e-95b0-5751bb738968",
      "name": "当点击\"执行工作流\"时",
      "type": "n8n-nodes-base.manualTrigger",
      "position": [
        -1088,
        -96
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "1384104c-8f59-459a-a563-f814fa395e91",
      "name": "便签 - 介绍",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1136,
        96
      ],
      "parameters": {
        "width": 672,
        "height": 560,
        "content": "## 立即试用!"
      },
      "typeVersion": 1
    },
    {
      "id": "6e2da3a0-7637-427e-9b54-c2c30032cc91",
      "name": "便签 - 使用方法",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -448,
        384
      ],
      "parameters": {
        "width": 528,
        "height": 264,
        "content": "## 使用方法"
      },
      "typeVersion": 1
    },
    {
      "id": "82e23aaf-ceca-4015-9136-bf23ff035997",
      "name": "便签 - 需要帮助",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -448,
        224
      ],
      "parameters": {
        "width": 336,
        "height": 152,
        "content": "### 需要帮助?"
      },
      "typeVersion": 1
    },
    {
      "id": "9d902298-8b60-4646-abaf-e7383878b6ff",
      "name": "便签 - 输入与抓取循环",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -848,
        -432
      ],
      "parameters": {
        "color": 6,
        "width": 624,
        "height": 176,
        "content": "### 📋 1. 输入与抓取循环"
      },
      "typeVersion": 1
    },
    {
      "id": "14b77e15-d220-4687-b260-1679b1d7649f",
      "name": "便签 - 产品处理循环",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        304,
        -400
      ],
      "parameters": {
        "color": 5,
        "width": 560,
        "height": 200,
        "content": "### 🔄 2. 产品处理循环与更新现有产品"
      },
      "typeVersion": 1
    },
    {
      "id": "7b291eaf-c4a1-46fd-9083-cf7e81a57ff0",
      "name": "便签 - 创建新产品",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        384,
        368
      ],
      "parameters": {
        "color": 4,
        "width": 480,
        "height": 216,
        "content": "### ✨ 4. 创建新产品(如果缺失)"
      },
      "typeVersion": 1
    },
    {
      "id": "bd5c0de3-4b7a-4f31-9d78-3dda3bcd1c2b",
      "name": "便签",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -80,
        -176
      ],
      "parameters": {
        "color": 5,
        "width": 1184,
        "height": 208,
        "content": ""
      },
      "typeVersion": 1
    },
    {
      "id": "f75b433a-1c8c-458b-aecf-879a6881f23d",
      "name": "便签1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        112,
        48
      ],
      "parameters": {
        "color": 4,
        "width": 976,
        "height": 304,
        "content": ""
      },
      "typeVersion": 1
    },
    {
      "id": "06d9505d-d672-469e-b0d0-36fdf1a5abd9",
      "name": "便签2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -960,
        -240
      ],
      "parameters": {
        "color": 6,
        "width": 848,
        "height": 320,
        "content": ""
      },
      "typeVersion": 1
    },
    {
      "id": "7535c929-96b9-451e-bf9e-c6a6b440d6b3",
      "name": "便签3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1104,
        48
      ],
      "parameters": {
        "color": 3,
        "height": 208,
        "content": ""
      },
      "typeVersion": 1
    },
    {
      "id": "98d804e1-f59d-4020-844c-d7e04b86a57c",
      "name": "便签 - 创建新产品1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1104,
        272
      ],
      "parameters": {
        "color": 3,
        "height": 104,
        "content": "✅ 4. 错误处理"
      },
      "typeVersion": 1
    },
    {
      "id": "b5cb6c9a-edc9-4aef-9750-e95985d80e34",
      "name": "发送错误 2",
      "type": "n8n-nodes-base.slack",
      "position": [
        544,
        224
      ],
      "webhookId": "650d7b5e-b7d3-4df3-b5dd-01471dd0a6de",
      "parameters": {
        "text": "An error has occurred inside the Second BrowserAct node.",
        "select": "channel",
        "channelId": {
          "__rl": true,
          "mode": "list",
          "value": "C09LWT82KHN",
          "cachedResultName": "new_product_added"
        },
        "otherOptions": {},
        "authentication": "oAuth2"
      },
      "credentials": {
        "slackOAuth2Api": {
          "id": "5rQCkyObBqbHIbZA",
          "name": "Slack account"
        }
      },
      "typeVersion": 2.3
    },
    {
      "id": "b5d687e7-5781-4b29-b96e-a1cff88d6dea",
      "name": "发送错误",
      "type": "n8n-nodes-base.slack",
      "position": [
        1184,
        96
      ],
      "webhookId": "650d7b5e-b7d3-4df3-b5dd-01471dd0a6de",
      "parameters": {
        "text": "Error Occur on Updating Or Creating Data",
        "select": "channel",
        "channelId": {
          "__rl": true,
          "mode": "list",
          "value": "C09LWT82KHN",
          "cachedResultName": "new_product_added"
        },
        "otherOptions": {},
        "authentication": "oAuth2"
      },
      "credentials": {
        "slackOAuth2Api": {
          "id": "5rQCkyObBqbHIbZA",
          "name": "Slack account"
        }
      },
      "typeVersion": 2.3
    },
    {
      "id": "d4812931-1bca-4892-9133-88c36e1558e5",
      "name": "循环处理供应商",
      "type": "n8n-nodes-base.splitInBatches",
      "position": [
        -720,
        -96
      ],
      "parameters": {
        "options": {}
      },
      "typeVersion": 3
    },
    {
      "id": "703e314d-8e2a-4bec-90ee-76397090591e",
      "name": "循环处理产品",
      "type": "n8n-nodes-base.splitInBatches",
      "position": [
        -64,
        -96
      ],
      "parameters": {
        "options": {}
      },
      "typeVersion": 3
    },
    {
      "id": "b6239845-f5f7-4bfa-9c69-89508b96793c",
      "name": "发送 BrowserAct 错误",
      "type": "n8n-nodes-base.slack",
      "position": [
        -288,
        80
      ],
      "webhookId": "650d7b5e-b7d3-4df3-b5dd-01471dd0a6de",
      "parameters": {
        "text": "An error has occurred inside the first BrowserAct node.",
        "select": "channel",
        "channelId": {
          "__rl": true,
          "mode": "list",
          "value": "C09LWT82KHN",
          "cachedResultName": "new_product_added"
        },
        "otherOptions": {},
        "authentication": "oAuth2"
      },
      "credentials": {
        "slackOAuth2Api": {
          "id": "5rQCkyObBqbHIbZA",
          "name": "Slack account"
        }
      },
      "typeVersion": 2.3
    },
    {
      "id": "e7b9c737-521c-4b52-bc41-7bb63b92a3eb",
      "name": "检查类别",
      "type": "n8n-nodes-base.if",
      "position": [
        160,
        80
      ],
      "parameters": {
        "options": {
          "ignoreCase": true
        },
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": false,
            "typeValidation": "loose"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "013b4904-dd59-4fe7-90c9-a1fbbd3cab83",
              "operator": {
                "name": "filter.operator.equals",
                "type": "string",
                "operation": "equals"
              },
              "leftValue": "={{ $('Loop Over Products').item.json.Category }}",
              "rightValue": "={{ $item(\"0\").$node[\"Get Suppliers & Links\"].json[\"Product Type\"] }}"
            }
          ]
        },
        "looseTypeValidation": true
      },
      "typeVersion": 2.2
    },
    {
      "id": "59f6c99e-fffc-48d6-beb2-8c08c34d40e3",
      "name": "检查产品可用性",
      "type": "n8n-nodes-base.if",
      "position": [
        544,
        -144
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "loose"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "657542ba-f1ec-43ef-be60-9c3600b0dd99",
              "operator": {
                "type": "object",
                "operation": "notEmpty",
                "singleValue": true
              },
              "leftValue": "={{ $json }}",
              "rightValue": ""
            }
          ]
        },
        "looseTypeValidation": true
      },
      "typeVersion": 2.2
    },
    {
      "id": "fdbbae9a-fad8-4180-9e8b-b3a9013eace9",
      "name": "BrowserAct JSON 解析",
      "type": "n8n-nodes-base.code",
      "position": [
        -288,
        -96
      ],
      "parameters": {
        "jsCode": "// Get the JSON string using the exact path provided by the user.\nconst jsonString = $input.first().json.output.string;\n\nlet parsedData;\n\n// Check if the string exists before attempting to parse\nif (!jsonString) {\n    // Return an empty array or throw an error if no string is found\n    // Throwing an error is usually better to stop the workflow if data is missing.\n    throw new Error(\"Input string is empty or missing at the specified path: $input.first().json.output.string\");\n}\n\ntry {\n    // 1. Parse the JSON string into a JavaScript array of objects\n    parsedData = JSON.parse(jsonString);\n} catch (error) {\n    // Handle JSON parsing errors (e.g., if the string is malformed)\n    throw new Error(`Failed to parse JSON string: ${error.message}`);\n}\n\n// 2. Ensure the parsed data is an array\nif (!Array.isArray(parsedData)) {\n    throw new Error('Parsed data is not an array. It cannot be split into multiple items.');\n}\n\n// 3. Map the array of objects into the n8n item format { json: object }\n// Each element in this array will be treated as a new item by n8n, achieving the split.\nconst outputItems = parsedData.map(item => ({\n    json: item,\n}));\n\n// 4. Return the new array of items\nreturn outputItems;"
      },
      "typeVersion": 2
    },
    {
      "id": "68ac7520-266b-45d1-b4ef-888cde19c635",
      "name": "BrowserAct JSON 解析",
      "type": "n8n-nodes-base.code",
      "position": [
        512,
        48
      ],
      "parameters": {
        "jsCode": "// Get the JSON string using the exact path provided by the user.\nconst jsonString = $input.first().json.output.string;\n\nlet parsedData;\n\n// Check if the string exists before attempting to parse\nif (!jsonString) {\n    // Return an empty array or throw an error if no string is found\n    // Throwing an error is usually better to stop the workflow if data is missing.\n    throw new Error(\"Input string is empty or missing at the specified path: $input.first().json.output.string\");\n}\n\ntry {\n    // 1. Parse the JSON string into a JavaScript array of objects\n    parsedData = JSON.parse(jsonString);\n} catch (error) {\n    // Handle JSON parsing errors (e.g., if the string is malformed)\n    throw new Error(`Failed to parse JSON string: ${error.message}`);\n}\n\n// 2. Ensure the parsed data is an array\nif (!Array.isArray(parsedData)) {\n    throw new Error('Parsed data is not an array. It cannot be split into multiple items.');\n}\n\n// 3. Map the array of objects into the n8n item format { json: object }\n// Each element in this array will be treated as a new item by n8n, achieving the split.\nconst outputItems = parsedData.map(item => ({\n    json: item,\n}));\n\n// 4. Return the new array of items\nreturn outputItems;"
      },
      "typeVersion": 2
    },
    {
      "id": "5b2bbcd8-551a-4ad5-bd8a-c8c9a08cd4f8",
      "name": "创建 HTML 数据表",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        688,
        48
      ],
      "parameters": {
        "text": "=input :  {{ $json.Product_Attributes }}\n\nsend data to ouput like this \n\n\"Output\": \"data\"\n",
        "options": {
          "systemMessage": "You are an AI assistant specialized in data transformation. Your task is to convert input text containing product specifications into a specific HTML `<table>` format. You must follow the instructions precisely to replicate the target HTML structure.\n\n**Task:**\nConvert the provided key-value text into an HTML table, matching the exact structure, tags, and CSS classes from the target specification.\n\n**Instructions:**\n\n1.  **Parse Input:** The input is a block of plain text with key-value pairs separated by a colon (`:`) and a newline.\n\n2.  **Generate Table:**\n\n      * Start with `<table id=\"product-attributes\" class=\"MuiTable-root mui-css-1ssfo\">`.\n      * Add a `<tbody class=\"MuiTableBody-root mui-css-1xnox0e\">`.\n\n3.  **Generate Rows (`<tr>`):**\n\n      * Create a `<tr class=\"MuiTableRow-root mui-css-c9pui3\">` for each of the attributes listed above, in that order.\n      * Each row must contain specific `<td>` cells as defined below.\n\n4.  **Generate Cells (`<td>`):**\n\n      * **Cell 1: Attribute Name (Key)**\n\n          * Wrap the key (e.g., \"Mfr\", \"Series\") in this structure:\n\n        <!-- end list -->\n\n        ```html\n        <td class=\"MuiTableCell-root MuiTableCell-body MuiTableCell-sizeMedium tss-css-my7fuh-tableCellBold mui-css-4ro0k3\">\n        <div class=\"tss-css-8y8kah-tableCellBreak\">[ATTRIBUTE_NAME]</div></td>\n        ```\n\n      * **Cell 2: Attribute Value**\n\n          * Start with this structure:\n\n        <!-- end list -->\n\n        ```html\n        <td class=\"MuiTableCell-root MuiTableCell-body MuiTableCell-sizeMedium tss-css-110lnqa-tableCell mui-css-4ro0k3\">\n        <div class=\"tss-css-1agxsdl-tableCellDescription\">\n        </div></td>\n        ```\n\n          * **Value Formatting (Content):**\n              * **For `Category`:** If the value contains a comma (`,`), split the value by the comma. Wrap each part in its own `<div>` and `<a>` tag like this (using `#` for `href`):\n                ```html\n                <div><a class=\"tss-css-yusyu7-anchor\" href=\"#\" rel=\"opener\">[Part 1]</a></div>\n                <div><a class=\"tss-css-yusyu7-anchor\" href=\"#\" rel=\"opener\">[Part 2]</a></div>\n                ```\n              * **For `Mfr`, `Series`, `Power (Watts)`, `Base Product Number`:** Wrap the value in an `<a>` tag like this (using `#` for `href`):\n                ```html\n                <a class=\"tss-css-yusyu7-anchor\" href=\"#\" rel=\"opener\" data-testid=\"product-attributes-link\">[VALUE]</a>\n                ```\n              * **For ALL OTHER attributes:** Wrap the value in a `<div>` tag like this:\n                ```html\n                <div class=\"tss-css-tsu9t4-packageName\">[VALUE]</div>\n                ```\n\n      * **Cell 3: Empty/Action Cell**\n\n          * **For the `Category` row:** Use this *exact* cell:\n            ```html\n            <td class=\"MuiTableCell-root MuiTableCell-body MuiTableCell-alignRight MuiTableCell-sizeMedium tss-css-my7fuh-tableCellBold print-hide mui-css-115xzy4\" data-testid=\"attributes-table-search-column\"><div class=\"MuiFormGroup-root tss-css-1kh0d0a-tableCellHeadDescription mui-css-1h7anqn\" role=\"radiogroup\"></div></td>\n            ```\n          * **For the `Base Product Number` row:** **DO NOT** add this third cell. This row only has two `<td>` cells.\n          * **For ALL OTHER rows:** Use this *exact* cell:\n            ```html\n            <td class=\"MuiTableCell-root MuiTableCell-body MuiTableCell-alignRight MuiTableCell-sizeMedium tss-css-1vs9p76-tableCellCheckBox print-hide mui-css-115xzy4\" data-testid=\"attributes-table-search-column\"><div class=\"tss-css-8y8kah-tableCellBreak\"><div></div></div></td>\n            ```\n\n5.  **Finalize:**\n\n      * Close the table with `</tbody>` and `</table>`.\n      * **Crucially: Only output the final HTML code.** \nDo not include any other text, explanations, or markdown formatting (like \\`\\`\\`html) around your response.\n\nremove any \"\\n\" before sending to output\n"
        },
        "promptType": "define"
      },
      "typeVersion": 2.2
    },
    {
      "id": "fde001d3-f383-47ea-a38c-3f86ebb1a886",
      "name": "获取供应商和链接",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        -928,
        -96
      ],
      "parameters": {
        "options": {},
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "gid=0",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1TeICFGUZisbOwkrOiDzObI2nW5smNErlmK5ncGER1wY/edit#gid=0",
          "cachedResultName": "Sheet1"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1TeICFGUZisbOwkrOiDzObI2nW5smNErlmK5ncGER1wY",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1TeICFGUZisbOwkrOiDzObI2nW5smNErlmK5ncGER1wY/edit?usp=drivesdk",
          "cachedResultName": "Product Suppliers"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "wAMAqU43zjVjlpuA",
          "name": "Google Sheets account"
        }
      },
      "typeVersion": 4.7
    }
  ],
  "active": false,
  "pinData": {},
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "4733f40a-31cf-4065-85e4-b79b2336d974",
  "connections": {
    "Merge": {
      "main": [
        [
          {
            "node": "Loop Over Products",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Send Error": {
      "main": [
        [
          {
            "node": "Merge",
            "type": "main",
            "index": 2
          }
        ]
      ]
    },
    "Create a product": {
      "main": [
        [
          {
            "node": "Merge",
            "type": "main",
            "index": 1
          }
        ],
        [
          {
            "node": "Send Error",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Update a product": {
      "main": [
        [
          {
            "node": "Merge",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Send Error",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get many products": {
      "main": [
        [
          {
            "node": "Check for Product availability",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Check the Category": {
      "main": [
        [
          {
            "node": "Add Missing Product",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Loop Over Products",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Loop Over Products": {
      "main": [
        [
          {
            "node": "Loop Over Suppliers",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Get many products",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Add Missing Product": {
      "main": [
        [
          {
            "node": "BrowserAct Json Breakdown",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Send Error 2",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Loop Over Suppliers": {
      "main": [
        [
          {
            "node": "Send a message",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Get Product Stock Data",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get Suppliers & Links": {
      "main": [
        [
          {
            "node": "Loop Over Suppliers",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get Product Stock Data": {
      "main": [
        [
          {
            "node": "BrowserAct JSON Breakdown",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Send BrowserAct Error",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Google Gemini Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "Create the HTML Data Table",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "BrowserAct JSON Breakdown": {
      "main": [
        [
          {
            "node": "Loop Over Products",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "BrowserAct Json Breakdown": {
      "main": [
        [
          {
            "node": "Create the HTML Data Table",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Create the HTML Data Table": {
      "main": [
        [
          {
            "node": "Create a product",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Check for Product availability": {
      "main": [
        [
          {
            "node": "Update a product",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Check the Category",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "When clicking ‘Execute workflow’": {
      "main": [
        [
          {
            "node": "Get Suppliers & Links",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
常见问题

如何使用这个工作流?

复制上方的 JSON 配置代码,在您的 n8n 实例中创建新工作流并选择「从 JSON 导入」,粘贴配置后根据需要修改凭证设置即可。

这个工作流适合什么场景?

高级 - 客户关系管理, 多模态 AI

需要付费吗?

本工作流完全免费,您可以直接导入使用。但请注意,工作流中使用的第三方服务(如 OpenAI API)可能需要您自行付费。

工作流信息
难度等级
高级
节点数量31
分类2
节点类型12
难度说明

适合高级用户,包含 16+ 个节点的复杂工作流

作者
Madame AI Team | Kai

Madame AI Team | Kai

@madame-ai

I’m a PhD in Physics turned AI enthusiast, passionate about uncovering how AI is transforming content creation, business, and daily life.

外部链接
在 n8n.io 查看

分享此工作流