8
n8n 中文网amn8n.com

使用Mistral AI OCR和JigsawStack分类和提取平面图数据

高级

这是一个Miscellaneous, AI Summarization, Multimodal AI领域的自动化工作流,包含 24 个节点。主要使用 If, Code, Switch, Webhook, HttpRequest 等节点。 使用Mistral AI OCR和JigsawStack分类和提取平面图数据

前置要求
  • HTTP Webhook 端点(n8n 会自动生成)
  • 可能需要目标 API 的认证凭证
工作流预览
可视化展示节点连接关系,支持缩放和平移
导出工作流
复制以下 JSON 配置到 n8n 导入,即可使用此工作流
{
  "meta": {
    "instanceId": "834bc6c387a1c56d0622a24b912577f9e6d66c5873f4e6426166054eb488d8fc",
    "templateCredsSetupCompleted": true
  },
  "nodes": [
    {
      "id": "120c98f6-17fd-46e7-b449-539cf0e6eccd",
      "name": "低质量端点说明",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        4500,
        -300
      ],
      "parameters": {
        "width": 400,
        "height": 440,
        "content": "## 🚫 低质量 / 丢弃"
      },
      "typeVersion": 1
    },
    {
      "id": "fa9dc8cf-6eaa-4a65-b6d0-27d8da7b1a59",
      "name": "人工审核说明",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        4820,
        520
      ],
      "parameters": {
        "color": 3,
        "width": 400,
        "height": 480,
        "content": "## ⚠️ 需要人工审核"
      },
      "typeVersion": 1
    },
    {
      "id": "65ded5cd-8648-4eaa-a230-b5eb562df429",
      "name": "继续到 JIG 说明",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        5140,
        20
      ],
      "parameters": {
        "color": 4,
        "width": 380,
        "height": 460,
        "content": "## ✅ 继续到步骤 2"
      },
      "typeVersion": 1
    },
    {
      "id": "0016e3f6-0552-4cee-b59a-445129a3236a",
      "name": "分类成功说明",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        3280,
        -520
      ],
      "parameters": {
        "color": 5,
        "width": 580,
        "height": 540,
        "content": "## 图像分类"
      },
      "typeVersion": 1
    },
    {
      "id": "c96745c9-5646-423a-98e9-239df792662e",
      "name": "流程摘要说明",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2340,
        -340
      ],
      "parameters": {
        "color": 6,
        "width": 400,
        "height": 360,
        "content": "## 📊 流程摘要"
      },
      "typeVersion": 1
    },
    {
      "id": "e0bcf1b8-ee8e-4a88-afe8-23b9a7b7c4ac",
      "name": "文件限制说明",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        3700,
        480
      ],
      "parameters": {
        "color": 2,
        "width": 440,
        "height": 460,
        "content": "## 📏 文件大小/页数限制"
      },
      "typeVersion": 1
    },
    {
      "id": "67704d28-dbab-4e48-b0b6-1643e0dadc7e",
      "name": "📘 工作流文档",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1620,
        -340
      ],
      "parameters": {
        "width": 600,
        "height": 1560,
        "content": "# 🏠 平面图分类器与测量提取器"
      },
      "typeVersion": 1
    },
    {
      "id": "30aee9c1-02f8-40b4-b431-8bc122bb08d6",
      "name": "检查 – GDPR 同意",
      "type": "n8n-nodes-base.if",
      "position": [
        2560,
        80
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "loose"
          },
          "combinator": "or",
          "conditions": [
            {
              "id": "1e3d1d01-1b9e-45b5-9616-93335d2bc270",
              "operator": {
                "type": "boolean",
                "operation": "true",
                "singleValue": true
              },
              "leftValue": "={{ $json.body.GDPR_check || $json.body.GDPR_check2}}",
              "rightValue": ""
            }
          ]
        },
        "looseTypeValidation": true
      },
      "typeVersion": 2.2
    },
    {
      "id": "2e9797b2-9ce9-4628-b049-95b28bd43e4e",
      "name": "Webhook – 接收上传",
      "type": "n8n-nodes-base.webhook",
      "position": [
        2320,
        80
      ],
      "webhookId": "fb607944-5e45-4dab-b805-7d0701e5eaa9",
      "parameters": {
        "path": "fp-mvp",
        "options": {
          "ignoreBots": true,
          "allowedOrigins": "*"
        },
        "httpMethod": "POST",
        "responseMode": "responseNode",
        "authentication": "basicAuth"
      },
      "credentials": {
        "httpBasicAuth": {
          "id": "cBS3tiMMVMINcjbT",
          "name": "stucstunter.nl"
        }
      },
      "typeVersion": 2
    },
    {
      "id": "c2de825d-fd9b-4e42-a43c-ff570ea90068",
      "name": "响应 – 需要同意",
      "type": "n8n-nodes-base.respondToWebhook",
      "position": [
        2860,
        300
      ],
      "parameters": {
        "options": {},
        "respondWith": "json",
        "responseBody": "={\n  \"thankYouMessage\": \"<div style='text-align:center; padding:40px 20px; font-family:system-ui;'><h2 style='color:#FF5252;'>⚠️ Consent Required</h2><p>We need your permission to process your floorplan. Please check the privacy consent box and try again.</p><p style='font-size:12px; color:#999; margin-top:20px;'>Your data is deleted within 10 minutes • GDPR compliant</p></div>\"\n}"
      },
      "typeVersion": 1.1
    },
    {
      "id": "d48a571b-0dac-48b2-b60e-d8485ad9f980",
      "name": "处理 – 多文件上传",
      "type": "n8n-nodes-base.code",
      "position": [
        2820,
        60
      ],
      "parameters": {
        "jsCode": "const results = [];\n\nfor (const item of items) {\n  if (!item.binary) continue;\n\n  for (const [key, value] of Object.entries(item.binary)) {\n    results.push({\n      json: {\n        fileKey: key,\n        fileName: value.fileName,\n        mimeType: value.mimeType,\n        fileExtension: value.fileExtension,\n        fileSize: value.fileSize\n      },\n      binary: {\n        [key]: value   // behoud originele binary key naam!\n      }\n    });\n  }\n}\n\nreturn results;"
      },
      "typeVersion": 2
    },
    {
      "id": "cb575124-245b-4d34-aa23-1d04fddfeea3",
      "name": "检查 – 文件类型(PDF/图像)",
      "type": "n8n-nodes-base.if",
      "position": [
        3040,
        60
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "or",
          "conditions": [
            {
              "id": "837a00af-0c9d-4dde-a184-4d4c2d918005",
              "operator": {
                "type": "boolean",
                "operation": "true",
                "singleValue": true
              },
              "leftValue": "={{ [\"png\",\"jpg\",\"jpeg\",\"bmp\",\"tiff\",\"webp\",\"gif\"]\n   .includes($json.fileExtension.toLowerCase()) }}",
              "rightValue": ""
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "28353d44-0328-4407-b942-0a87b44c244f",
      "name": "提取 – PDF 元数据/文本",
      "type": "n8n-nodes-base.extractFromFile",
      "position": [
        3300,
        80
      ],
      "parameters": {
        "options": {
          "keepSource": "both"
        },
        "operation": "pdf",
        "binaryPropertyName": "={{ $json.fileKey }}"
      },
      "typeVersion": 1
    },
    {
      "id": "4023d030-c089-413a-864d-7a467ce63232",
      "name": "检查 – 文件大小和页数",
      "type": "n8n-nodes-base.if",
      "position": [
        3500,
        80
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "d94826b9-a2fe-4af2-9c76-0d76fdb0c0d8",
              "operator": {
                "type": "boolean",
                "operation": "true",
                "singleValue": true
              },
              "leftValue": "={{ \n  (() => {\n    const raw = $json.fileSize || \"\";\n    const val = parseFloat(raw);\n    if (raw.toLowerCase().includes(\"mb\")) return val < 10;\n    if (raw.toLowerCase().includes(\"kb\")) return val < 10000; // 10 MB = 10,000 KB\n    if (raw.toLowerCase().includes(\"bytes\")) return val < 10485760; // 10 MB in bytes\n    return false; // if unknown format\n  })()\n}}",
              "rightValue": ""
            },
            {
              "id": "b58f8207-18c9-4e0a-a52d-6a3151f6ee57",
              "operator": {
                "type": "boolean",
                "operation": "true",
                "singleValue": true
              },
              "leftValue": "={{$json.fileExtension.toLowerCase() !== \"pdf\"\n  ? true \n  : ($json.numpages && $json.numpages < 10)}}",
              "rightValue": ""
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "25d2a512-494a-4552-a6c6-e68714fd522d",
      "name": "分析 – 置信度评分(启发式)",
      "type": "n8n-nodes-base.code",
      "position": [
        3740,
        60
      ],
      "parameters": {
        "mode": "runOnceForEachItem",
        "jsCode": "// --- SAFER INPUT HANDLING ---\nconst text = ($json.text || \"\").toLowerCase();\nconst numpages = $json.numpages || 1;\n\nlet score = 0;\nlet reasons = []; \n\n// --- KEYWORD LISTS ---\nconst nlSpaces = [\"woonkamer\", \"keuken\", \"slaapkamer\", \"badkamer\", \"overloop\", \"entree\", \"hal\", \"toilet\", \"berging\", \"techniek\", \"meterkast\", \"mk\"];\nconst enSpaces = [\"living room\", \"kitchen\", \"bedroom\", \"bathroom\", \"landing\", \"entrance\", \"hall\", \"toilet\", \"storage\", \"utility room\"];\nconst floorWords = [\"verdieping\", \"begane grond\", \"zolder\", \"kelder\", \"vliering\", \"doorsnede\", \"gevel\", \"plattegrond\"];\nconst enFloorWords = [\"floor\", \"ground floor\", \"attic\", \"basement\", \"cross-section\", \"facade\", \"floor plan\"];\nconst symbols = [\"wcd\", \"th\", \"wp\", \"v.v.\", \"wm\", \"wd\", \"wtw\", \"pv\", \"rad.\", \"rm\", \"gr\"];\nconst projectWords = [\"bouwnummer\", \"opdrachtgever\", \"project\", \"schaal\", \"datum\", \"bladnummer\", \"formaat\"];\n\n// --- CHECKS ---\n// 1. Spaces\nconst foundNlSpaces = nlSpaces.filter(w => text.includes(w));\nconst foundEnSpaces = enSpaces.filter(w => text.includes(w));\nif ((foundNlSpaces.length + foundEnSpaces.length) >= 3) {\n  score += 0.35;\n  reasons.push(`Found ${foundNlSpaces.length + foundEnSpaces.length} room names`);\n}\n\n// 2. m² matches\nconst m2Matches = text.match(/\\d+(?:[.,]\\d+)?\\s*m(?:²|2)/g) || [];\nif (m2Matches.length >= 3) {\n  score += 0.25;\n  reasons.push(`Found ${m2Matches.length} m² measurements`);\n}\n\n// 3. mm matches (dimensions)\nconst mmMatches = text.match(/\\d{3,}\\s*mm/g) || [];\nif (mmMatches.length >= 3) {\n  score += 0.15;\n  reasons.push(`Found ${mmMatches.length} mm measurements`);\n}\n\n// 4. Symbols\nconst foundSymbols = symbols.filter(s => text.includes(s.toLowerCase()));\nif (foundSymbols.length >= 3) {\n  score += 0.15;\n  reasons.push(`Found ${foundSymbols.length} technical symbols`);\n}\n\n// 5. Floor/plan words\nconst foundFloors = [...floorWords, ...enFloorWords].filter(w => text.includes(w));\nif (foundFloors.length >= 2) {\n  score += 0.10;\n  reasons.push(`Found ${foundFloors.length} floor/drawing parts`);\n}\n\n// 6. Project words\nconst foundProjectWords = projectWords.filter(w => text.includes(w));\nif (foundProjectWords.length >= 3) {\n  score += 0.10;\n  reasons.push(`Found ${foundProjectWords.length} project info words`);\n}\n\n// --- NORMALIZE SCORE ---\nif (score > 1) score = 1;\n\n// ✅ Return one item with JSON + preserve binary\nreturn {\n  json: {\n    ...$json,\n    confidence: parseFloat(score.toFixed(2)),\n    analysis: {\n      reasons,\n      foundNlSpaces,\n      foundEnSpaces,\n      m2Matches,\n      mmMatches,\n      foundSymbols,\n      foundFloors,\n      foundProjectWords,\n      pages: numpages\n    }\n  },\n   binary: item.binary // pass binary unchanged\n};"
      },
      "typeVersion": 2
    },
    {
      "id": "87868e3c-e4eb-47ff-acf0-bb4072d38bbc",
      "name": "路由 – 置信度级别",
      "type": "n8n-nodes-base.switch",
      "position": [
        4020,
        0
      ],
      "parameters": {
        "rules": {
          "values": [
            {
              "outputKey": "very_likely_not_floorplan",
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "operator": {
                      "type": "number",
                      "operation": "lt"
                    },
                    "leftValue": "={{ $json.confidence }}",
                    "rightValue": 0.2
                  }
                ]
              },
              "renameOutput": true
            },
            {
              "outputKey": "likely_not_floorplan",
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "operator": {
                      "type": "number",
                      "operation": "lt"
                    },
                    "leftValue": "={{ $json.confidence }}",
                    "rightValue": 0.4
                  },
                  {
                    "operator": {
                      "type": "number",
                      "operation": "gte"
                    },
                    "leftValue": "={{ $json.confidence }}",
                    "rightValue": 0.2
                  }
                ]
              },
              "renameOutput": true
            },
            {
              "outputKey": "uncertain_low_confidence",
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "operator": {
                      "type": "number",
                      "operation": "lt"
                    },
                    "leftValue": "={{ $json.confidence }}",
                    "rightValue": 0.6
                  },
                  {
                    "operator": {
                      "type": "number",
                      "operation": "gte"
                    },
                    "leftValue": "={{ $json.confidence }}",
                    "rightValue": 0.4
                  }
                ]
              },
              "renameOutput": true
            },
            {
              "outputKey": "=uncertain_high_confidence",
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "operator": {
                      "type": "number",
                      "operation": "lt"
                    },
                    "leftValue": "={{ $json.confidence }}",
                    "rightValue": 0.85
                  },
                  {
                    "operator": {
                      "type": "number",
                      "operation": "gte"
                    },
                    "leftValue": "={{ $json.confidence }}",
                    "rightValue": 0.6
                  }
                ]
              },
              "renameOutput": true
            },
            {
              "outputKey": "very_likely_floorplan",
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "operator": {
                      "type": "number",
                      "operation": "gte"
                    },
                    "leftValue": "={{ $json.confidence }}",
                    "rightValue": 0.85
                  }
                ]
              },
              "renameOutput": true
            }
          ]
        },
        "options": {
          "fallbackOutput": "extra",
          "allMatchingOutputs": true,
          "renameFallbackOutput": "needs_review"
        }
      },
      "typeVersion": 3.2
    },
    {
      "id": "0a0bf7f3-0eb5-457a-b445-48111e7ac7d3",
      "name": "响应 – 低质量/丢弃",
      "type": "n8n-nodes-base.respondToWebhook",
      "position": [
        4640,
        -20
      ],
      "parameters": {
        "options": {},
        "respondWith": "json",
        "responseBody": "={{\n  {\n    \"thankYouMessage\":\n      $json.confidence && $json.confidence[0] < 0.4\n        ? \"🚫 Unable to Process Your Floorplan. The image quality is too low or unclear. Please upload an architectural blueprint or CAD drawing instead. Accepted formats: JPG, PNG, PDF.\"\n        : (\n            $json.predictions[0] === \"floorplan\"\n              ? \"SUCCESS: Floorplan detected! Processing your measurements now. This will take 15-30 seconds.\"\n              : \"ERROR: Not a floorplan detected. Please upload an architectural blueprint or technical floor layout instead.\"\n          )\n  }\n}}"
      },
      "typeVersion": 1.1
    },
    {
      "id": "cee2d67e-f07c-49b8-9018-e0753ff16d76",
      "name": "分类 – 图像文件",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        3560,
        -200
      ],
      "parameters": {
        "url": "https://api.jigsawstack.com/v1/classification",
        "method": "POST",
        "options": {},
        "jsonBody": "={\n  \"dataset\": [\n    {\n      \"type\": \"image\",\n      \"value\": \"{{ $json.temp_public_url }}\"\n    }\n  ],\n  \"labels\": [\n    {\n      \"type\": \"text\",\n      \"value\": \"floorplan\"\n    },\n    {\n      \"type\": \"text\",\n      \"value\": \"not floorplan\"\n    }\n  ]\n}",
        "sendBody": true,
        "sendHeaders": true,
        "specifyBody": "json",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth",
        "headerParameters": {
          "parameters": [
            {}
          ]
        }
      },
      "credentials": {
        "httpHeaderAuth": {
          "id": "A2GUIb1l3Nybba3k",
          "name": "jigsaw"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "14201ed6-6613-4bfc-b8bd-d7434507036c",
      "name": "分类 – PDF 文本",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        4880,
        820
      ],
      "parameters": {
        "url": "https://api.jigsawstack.com/v1/classification",
        "method": "POST",
        "options": {},
        "jsonBody": "={\n  \"dataset\": [\n    {\n      \"type\": \"text\",\n      \"value\": {{ JSON.stringify ($json.text) }}\n    }\n  ],\n  \"labels\": [\n    {\n      \"type\": \"text\",\n      \"value\": \"floorplan\"\n    },\n    {\n      \"type\": \"text\",\n      \"value\": \"not floorplan\"\n    }\n  ]\n}",
        "sendBody": true,
        "sendHeaders": true,
        "specifyBody": "json",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth"
      },
      "credentials": {
        "httpHeaderAuth": {
          "id": "A2GUIb1l3Nybba3k",
          "name": "jigsaw"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "13aa840e-eb2c-42c5-a344-a1aab65d89d2",
      "name": "响应 – 分类结果(图像)",
      "type": "n8n-nodes-base.respondToWebhook",
      "position": [
        3720,
        -200
      ],
      "parameters": {
        "options": {},
        "respondWith": "json",
        "responseBody": "={{\n  {\n    \"thankYouMessage\": $json.predictions[0] === \"floorplan\" \n      ? \"SUCCESS: Floorplan detected! Processing your measurements now. This will take 15-30 seconds.\"\n      : \"ERROR: Not a floorplan detected. Please upload an architectural blueprint or technical floor layout instead.\"\n  }\n}}"
      },
      "typeVersion": 1.1
    },
    {
      "id": "988144cc-e416-440c-8fb6-2b445c0b398b",
      "name": "响应 – 分类结果(PDF)",
      "type": "n8n-nodes-base.respondToWebhook",
      "position": [
        5040,
        820
      ],
      "parameters": {
        "options": {},
        "respondWith": "json",
        "responseBody": "={{\n  {\n    \"thankYouMessage\": $json.predictions[0] === \"floorplan\" \n      ? \"SUCCESS: Floorplan detected! Processing your measurements now. This will take 15-30 seconds.\"\n      : \"ERROR: Not a floorplan detected. Please upload an architectural blueprint or technical floor layout instead.\"\n  }\n}}"
      },
      "typeVersion": 1.1
    },
    {
      "id": "38a92798-d6c2-4d46-b069-069c46ee6de4",
      "name": "响应 – 文件过大",
      "type": "n8n-nodes-base.respondToWebhook",
      "position": [
        3740,
        780
      ],
      "parameters": {
        "options": {},
        "respondWith": "json",
        "responseBody": "={{ {\n  \"thankYouMessage\": \"📏 File Too Large. The uploaded file exceeds our limits (max 10MB or PDFs with more than 20 pages). Please split multi‑floor plans into separate files or extract only the relevant pages, then try again.\"\n} }}"
      },
      "typeVersion": 1.1
    },
    {
      "id": "2c4d4e53-59dd-4b47-8213-e86ff873d874",
      "name": "上传 – JigsawStack(存储)",
      "type": "n8n-nodes-base.httpRequest",
      "onError": "continueErrorOutput",
      "maxTries": 2,
      "position": [
        3340,
        -180
      ],
      "parameters": {
        "url": "https://api.jigsawstack.com/v1/store/file",
        "method": "POST",
        "options": {},
        "sendBody": true,
        "sendQuery": true,
        "contentType": "binaryData",
        "sendHeaders": true,
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth",
        "queryParameters": {
          "parameters": [
            {
              "name": "key",
              "value": "={{ $json.fileName }}"
            },
            {
              "name": "overwrite",
              "value": "true"
            },
            {
              "name": "temp_public_url",
              "value": "true"
            }
          ]
        },
        "headerParameters": {
          "parameters": [
            {
              "name": "Content-Type",
              "value": "={{ $json.mimeType }}"
            }
          ]
        },
        "inputDataFieldName": "={{ $json.fileKey }}"
      },
      "credentials": {
        "httpHeaderAuth": {
          "id": "A2GUIb1l3Nybba3k",
          "name": "jigsaw"
        }
      },
      "retryOnFail": true,
      "typeVersion": 4.2,
      "waitBetweenTries": 3000
    },
    {
      "id": "0b6380ad-d3e7-499d-a097-f5cde6031129",
      "name": "无操作,不执行任何操作",
      "type": "n8n-nodes-base.noOp",
      "position": [
        5260,
        340
      ],
      "parameters": {},
      "typeVersion": 1
    }
  ],
  "pinData": {},
  "connections": {
    "14201ed6-6613-4bfc-b8bd-d7434507036c": {
      "main": [
        [
          {
            "node": "988144cc-e416-440c-8fb6-2b445c0b398b",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "30aee9c1-02f8-40b4-b431-8bc122bb08d6": {
      "main": [
        [
          {
            "node": "d48a571b-0dac-48b2-b60e-d8485ad9f980",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "c2de825d-fd9b-4e42-a43c-ff570ea90068",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "cee2d67e-f07c-49b8-9018-e0753ff16d76": {
      "main": [
        [
          {
            "node": "13aa840e-eb2c-42c5-a344-a1aab65d89d2",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "0b6380ad-d3e7-499d-a097-f5cde6031129": {
      "main": [
        []
      ]
    },
    "2e9797b2-9ce9-4628-b049-95b28bd43e4e": {
      "main": [
        [
          {
            "node": "30aee9c1-02f8-40b4-b431-8bc122bb08d6",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "4023d030-c089-413a-864d-7a467ce63232": {
      "main": [
        [
          {
            "node": "25d2a512-494a-4552-a6c6-e68714fd522d",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "38a92798-d6c2-4d46-b069-069c46ee6de4",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "87868e3c-e4eb-47ff-acf0-bb4072d38bbc": {
      "main": [
        [
          {
            "node": "0a0bf7f3-0eb5-457a-b445-48111e7ac7d3",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "0a0bf7f3-0eb5-457a-b445-48111e7ac7d3",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "14201ed6-6613-4bfc-b8bd-d7434507036c",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "14201ed6-6613-4bfc-b8bd-d7434507036c",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "0b6380ad-d3e7-499d-a097-f5cde6031129",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "28353d44-0328-4407-b942-0a87b44c244f": {
      "main": [
        [
          {
            "node": "4023d030-c089-413a-864d-7a467ce63232",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "cb575124-245b-4d34-aa23-1d04fddfeea3": {
      "main": [
        [
          {
            "node": "2c4d4e53-59dd-4b47-8213-e86ff873d874",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "28353d44-0328-4407-b942-0a87b44c244f",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "2c4d4e53-59dd-4b47-8213-e86ff873d874": {
      "main": [
        [
          {
            "node": "cee2d67e-f07c-49b8-9018-e0753ff16d76",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "d48a571b-0dac-48b2-b60e-d8485ad9f980": {
      "main": [
        [
          {
            "node": "cb575124-245b-4d34-aa23-1d04fddfeea3",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "25d2a512-494a-4552-a6c6-e68714fd522d": {
      "main": [
        [
          {
            "node": "87868e3c-e4eb-47ff-acf0-bb4072d38bbc",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "13aa840e-eb2c-42c5-a344-a1aab65d89d2": {
      "main": [
        []
      ]
    }
  }
}
常见问题

如何使用这个工作流?

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

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

高级 - 杂项, AI 摘要总结, 多模态 AI

需要付费吗?

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

工作流信息
难度等级
高级
节点数量24
分类3
节点类型9
难度说明

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

作者
Stephan Koning

Stephan Koning

@reklaim

Account Executive by day , Noco builder for fun at night and always a proud dad of Togo the Samoyed.

外部链接
在 n8n.io 查看

分享此工作流

分类

分类: 34