8
n8n 中文网amn8n.com

VDS工作流公开版

高级

这是一个DevOps, Multimodal AI领域的自动化工作流,包含 54 个节点。主要使用 If, Code, Wait, Merge, Github 等节点。 使用AI、GitHub和Vercel从文本提示构建和部署MVP

前置要求
  • GitHub Personal Access Token
  • 可能需要目标 API 的认证凭证
  • HTTP Webhook 端点(n8n 会自动生成)
  • OpenAI API Key
工作流预览
可视化展示节点连接关系,支持缩放和平移
导出工作流
复制以下 JSON 配置到 n8n 导入,即可使用此工作流
{
  "id": "qbuSXPwnq7cyw2tB",
  "meta": {
    "instanceId": "6bcff5ef8a06e8086902526a05c2a4c7bf5da8101f89e582301ed78094606f40"
  },
  "name": "VDS工作流公开版",
  "tags": [],
  "nodes": [
    {
      "id": "17bf6fd1-2942-4c54-bff7-0ebefb56620e",
      "name": "当收到聊天消息时",
      "type": "@n8n/n8n-nodes-langchain.chatTrigger",
      "position": [
        320,
        1380
      ],
      "webhookId": "933c4d58-549f-4224-9201-5d2145931584",
      "parameters": {},
      "typeVersion": 1.1
    },
    {
      "id": "6916ffa4-3330-4c33-b6be-3905dad8c15a",
      "name": "聊天代理",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        580,
        1280
      ],
      "parameters": {},
      "typeVersion": 1.6
    },
    {
      "id": "2b2c6117-daf1-42b6-844f-d2c65af049cb",
      "name": "OpenAI 聊天模型",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        540,
        1500
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "2b5af958-a0d5-4c85-b585-0dd8787e4740",
      "name": "窗口缓冲记忆",
      "type": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
      "position": [
        660,
        1500
      ],
      "parameters": {},
      "typeVersion": 1.2
    },
    {
      "id": "3984355a-2f8f-45a2-bf58-9dc55ca976a6",
      "name": "响应 Webhook",
      "type": "n8n-nodes-base.respondToWebhook",
      "position": [
        980,
        1380
      ],
      "parameters": {},
      "typeVersion": 1.1
    },
    {
      "id": "6bec7f13-7ec8-4f3f-96d5-32b8e4136fff",
      "name": "从MVP模板生成",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        840,
        780
      ],
      "parameters": {},
      "typeVersion": 4.2
    },
    {
      "id": "19dc9ac7-a185-410f-b7be-6ffd7c7fa725",
      "name": "创建MVP",
      "type": "@n8n/n8n-nodes-langchain.toolWorkflow",
      "position": [
        780,
        1500
      ],
      "parameters": {},
      "typeVersion": 2.1
    },
    {
      "id": "58da369e-a5c1-46d3-9856-14dd154d8d64",
      "name": "创建MVP触发器",
      "type": "n8n-nodes-base.executeWorkflowTrigger",
      "position": [
        340,
        780
      ],
      "parameters": {},
      "typeVersion": 1.1
    },
    {
      "id": "c9294e36-b140-4a7f-8ed6-79bd829caa7d",
      "name": "解析输入",
      "type": "n8n-nodes-base.code",
      "position": [
        560,
        780
      ],
      "parameters": {},
      "typeVersion": 2
    },
    {
      "id": "8c474366-4b65-4a89-8217-137557dc850d",
      "name": "点击“测试工作流”时",
      "type": "n8n-nodes-base.manualTrigger",
      "position": [
        100,
        540
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "2b67c12c-b62b-445c-9509-c86c0fcaa615",
      "name": "测试输入",
      "type": "n8n-nodes-base.code",
      "position": [
        400,
        2120
      ],
      "parameters": {},
      "typeVersion": 2
    },
    {
      "id": "082c5409-6642-4053-8384-ef06524127f1",
      "name": "测试后创建",
      "type": "n8n-nodes-base.code",
      "position": [
        620,
        2120
      ],
      "parameters": {},
      "typeVersion": 2
    },
    {
      "id": "0bd2d5b2-212e-447d-b47c-ae0946bb6df2",
      "name": "TDD代码生成器",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        1580,
        780
      ],
      "parameters": {},
      "typeVersion": 1.8
    },
    {
      "id": "8eb49a95-ea99-4a01-8cd4-ad46487f84dd",
      "name": "OpenAI 聊天模型1",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        1380,
        980
      ],
      "parameters": {},
      "typeVersion": 1.2
    },
    {
      "id": "56b096e8-0063-4ba9-bebb-2cc753c160be",
      "name": "结构化输出代码",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        2100,
        1340
      ],
      "parameters": {},
      "typeVersion": 1.2
    },
    {
      "id": "87ba4740-4e25-40ea-ac68-304e6df63203",
      "name": "获取文件",
      "type": "n8n-nodes-base.githubTool",
      "position": [
        1840,
        980
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "0210733c-aae2-420a-96cf-d4cb35b801cb",
      "name": "变量",
      "type": "n8n-nodes-base.code",
      "position": [
        1280,
        780
      ],
      "parameters": {},
      "typeVersion": 2
    },
    {
      "id": "5b98d74b-10c8-4731-92a6-1e134591cadb",
      "name": "解析输出",
      "type": "n8n-nodes-base.code",
      "position": [
        2000,
        780
      ],
      "parameters": {},
      "typeVersion": 2
    },
    {
      "id": "33e26542-9fdc-4742-a83e-93389de9f9bb",
      "name": "GitHub",
      "type": "n8n-nodes-base.github",
      "position": [
        3140,
        780
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "509887cc-d4bd-4ee0-8330-1f2dcc4a52e0",
      "name": "HTTP请求1",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        620,
        1860
      ],
      "parameters": {},
      "typeVersion": 4.2
    },
    {
      "id": "c25e3103-2f8b-4964-8cb6-ce83662ceb37",
      "name": "获取图像",
      "type": "@n8n/n8n-nodes-langchain.toolHttpRequest",
      "position": [
        1580,
        1000
      ],
      "parameters": {},
      "typeVersion": 1.1
    },
    {
      "id": "986e7d56-5deb-4ddc-80fd-91b5fd4236af",
      "name": "代码",
      "type": "n8n-nodes-base.code",
      "position": [
        2420,
        1860
      ],
      "parameters": {},
      "typeVersion": 2
    },
    {
      "id": "5a1ced1b-aba8-45ed-a370-944f1b6a4e0e",
      "name": "Vercel部署",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        3360,
        780
      ],
      "parameters": {},
      "executeOnce": true,
      "typeVersion": 4.2
    },
    {
      "id": "9ba93ff2-073b-4535-80b5-b7365779e41f",
      "name": "返回URL",
      "type": "n8n-nodes-base.code",
      "position": [
        3840,
        780
      ],
      "parameters": {},
      "typeVersion": 2
    },
    {
      "id": "ca9f90b3-c818-4b7a-9d31-ce3ab7028ff6",
      "name": "等待",
      "type": "n8n-nodes-base.wait",
      "position": [
        3580,
        780
      ],
      "webhookId": "40915edc-adfa-4ba5-a24b-2e61b029c2d6",
      "parameters": {},
      "typeVersion": 1.1
    },
    {
      "id": "fb981281-ad51-4263-bb43-7f00376fd534",
      "name": "OpenAI聊天模型2",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        2240,
        1000
      ],
      "parameters": {},
      "typeVersion": 1.2
    },
    {
      "id": "8a50fb84-6483-4324-909a-1bd003f60ec2",
      "name": "代码审查器",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        2280,
        780
      ],
      "parameters": {},
      "typeVersion": 1.8
    },
    {
      "id": "2707a5de-a1c2-4e8d-8102-d38c6b38e2b9",
      "name": "解析输出1",
      "type": "n8n-nodes-base.code",
      "position": [
        2700,
        780
      ],
      "parameters": {},
      "typeVersion": 2
    },
    {
      "id": "66c9d7de-7058-45dc-9af1-501e56bd1f68",
      "name": "Vercel检查",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        3360,
        1000
      ],
      "parameters": {},
      "executeOnce": true,
      "typeVersion": 4.2
    },
    {
      "id": "18522031-4d86-4b21-b0a7-52a4f1a214d8",
      "name": "Vercel日志",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        3840,
        1000
      ],
      "parameters": {},
      "executeOnce": true,
      "typeVersion": 4.2
    },
    {
      "id": "6590430e-aa50-4267-b65a-2fd8859ea687",
      "name": "合并",
      "type": "n8n-nodes-base.merge",
      "position": [
        3400,
        1240
      ],
      "parameters": {},
      "typeVersion": 3.1
    },
    {
      "id": "9d9c2759-d162-4e5a-a828-e6f9a3111573",
      "name": "代码2",
      "type": "n8n-nodes-base.code",
      "position": [
        2420,
        2040
      ],
      "parameters": {},
      "typeVersion": 2
    },
    {
      "id": "7b899d93-4e06-41db-9d61-b233872a86c5",
      "name": "错误日志",
      "type": "n8n-nodes-base.code",
      "position": [
        4060,
        1000
      ],
      "parameters": {},
      "typeVersion": 2
    },
    {
      "id": "c4f8c1ef-ac31-493a-aadf-78bf762c078f",
      "name": "OpenAI Chat Model3",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        3620,
        1460
      ],
      "parameters": {},
      "typeVersion": 1.2
    },
    {
      "id": "57ff7b19-8239-4b64-93f3-64bdff468aef",
      "name": "Vercel修复器",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        3580,
        1240
      ],
      "parameters": {},
      "typeVersion": 1.8
    },
    {
      "id": "e992fd91-2b27-4344-b22e-b5857433a486",
      "name": "GitHub提交修复",
      "type": "n8n-nodes-base.github",
      "position": [
        4160,
        1240
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "b8f2d1fa-ef2b-4ad5-b097-b260a3109713",
      "name": "等待1",
      "type": "n8n-nodes-base.wait",
      "position": [
        4380,
        1480
      ],
      "webhookId": "40915edc-adfa-4ba5-a24b-2e61b029c2d6",
      "parameters": {},
      "typeVersion": 1.1
    },
    {
      "id": "458ec8ee-a8be-499b-8d63-aa758b3ca31d",
      "name": "获取最新部署",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        4540,
        1900
      ],
      "parameters": {},
      "typeVersion": 4.2
    },
    {
      "id": "063fe4d4-2bb0-4aa9-af56-69badac2a984",
      "name": "代码1",
      "type": "n8n-nodes-base.code",
      "position": [
        4760,
        1900
      ],
      "parameters": {},
      "typeVersion": 2
    },
    {
      "id": "d5e980c7-1898-4fa0-82e1-0dc08fe96c18",
      "name": "解析代码修复",
      "type": "n8n-nodes-base.code",
      "position": [
        3940,
        1240
      ],
      "parameters": {},
      "typeVersion": 2
    },
    {
      "id": "53701dee-5560-418f-8761-10565fcebeff",
      "name": "循环代码",
      "type": "n8n-nodes-base.code",
      "position": [
        3140,
        1240
      ],
      "parameters": {},
      "typeVersion": 2
    },
    {
      "id": "6afc4c8d-cd6e-4f2e-aac3-b4c3cebebd82",
      "name": "如果就绪",
      "type": "n8n-nodes-base.if",
      "position": [
        3580,
        1000
      ],
      "parameters": {},
      "typeVersion": 2.2
    },
    {
      "id": "c28b663e-5407-45db-bd25-5dd028c4e9d3",
      "name": "Vercel部署1",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        4600,
        1240
      ],
      "parameters": {},
      "executeOnce": true,
      "typeVersion": 4.2
    },
    {
      "id": "960f6518-fc99-4ac7-9d8d-a211bae6a45b",
      "name": "等待2",
      "type": "n8n-nodes-base.wait",
      "position": [
        4380,
        1240
      ],
      "webhookId": "637fbf87-42c7-4dc8-8b48-6f79c61bae03",
      "parameters": {},
      "typeVersion": 1.1
    },
    {
      "id": "7b33b9af-a8f6-4c35-819c-1b27e7041c6e",
      "name": "响应 Webhook1",
      "type": "n8n-nodes-base.respondToWebhook",
      "position": [
        4060,
        780
      ],
      "parameters": {},
      "typeVersion": 1.1
    },
    {
      "id": "cb025143-1948-4a61-a0b4-f4b8301280cf",
      "name": "生成图片",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        1280,
        560
      ],
      "parameters": {},
      "typeVersion": 4.2
    },
    {
      "id": "e6288e78-10d9-40bf-b0be-2606fa775614",
      "name": "HTTP 请求",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        1680,
        480
      ],
      "parameters": {},
      "typeVersion": 4.2
    },
    {
      "id": "dcb17434-2cfb-472d-bac0-4eaab80a57e2",
      "name": "GitHub上传文件",
      "type": "n8n-nodes-base.github",
      "position": [
        2120,
        460
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "dafdb0cb-7773-4e12-9e2c-f296f0e79774",
      "name": "如果200",
      "type": "n8n-nodes-base.if",
      "position": [
        1840,
        480
      ],
      "parameters": {},
      "typeVersion": 2.2
    },
    {
      "id": "1400c850-6327-4ab4-a154-a6e0f0927475",
      "name": "如果",
      "type": "n8n-nodes-base.if",
      "position": [
        1500,
        560
      ],
      "parameters": {},
      "typeVersion": 2.2
    },
    {
      "id": "353094c8-5f35-48e2-be17-72734bba76c6",
      "name": "代码3",
      "type": "n8n-nodes-base.code",
      "position": [
        340,
        540
      ],
      "parameters": {},
      "typeVersion": 2
    },
    {
      "id": "a28fdd70-aaf3-4059-9e42-a793f27634cd",
      "name": "要生成的图像",
      "type": "n8n-nodes-base.code",
      "position": [
        1060,
        560
      ],
      "parameters": {},
      "typeVersion": 2
    },
    {
      "id": "e80eb593-c08a-4695-9498-ecfaf11b9945",
      "name": "便签 1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        4460,
        440
      ],
      "parameters": {
        "content": ""
      },
      "typeVersion": 1
    },
    {
      "id": "b966ff9c-7b15-40ca-9814-98cec5c42ad1",
      "name": "便签",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -120,
        260
      ],
      "parameters": {
        "content": ""
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "pinData": {},
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "d5f2a157-2e3e-4dc6-89ac-54d6606637bc",
  "connections": {
    "If ": {
      "main": [
        [
          {
            "node": "HTTP Request",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Wait": {
      "main": [
        [
          {
            "node": "Vercel Check",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Merge": {
      "main": [
        [
          {
            "node": "Vercel Fixer",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Wait1": {
      "main": [
        [
          {
            "node": "Vercel Check",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Wait2": {
      "main": [
        [
          {
            "node": "Vercel Deploy1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "GitHub": {
      "main": [
        [
          {
            "node": "Vercel Deploy",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "If 200": {
      "main": [
        [
          {
            "node": "GH Upload File",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "If READY": {
      "main": [
        [
          {
            "node": "return URL",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Vercel Logs",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "get_file": {
      "ai_tool": [
        [
          {
            "node": "TDD Code Maker",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Loop-Code": {
      "main": [
        [
          {
            "node": "Merge",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Variables": {
      "main": [
        [
          {
            "node": "TDD Code Maker",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "get_image": {
      "ai_tool": [
        [
          {
            "node": "TDD Code Maker",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Chat Agent": {
      "main": [
        [
          {
            "node": "Respond to Webhook",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Error Logs": {
      "main": [
        [
          {
            "node": "Merge",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "create_mvp": {
      "ai_tool": [
        [
          {
            "node": "Chat Agent",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "return URL": {
      "main": [
        [
          {
            "node": "Respond to Webhook1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "test input": {
      "main": [
        [
          {
            "node": "test pos-creaetion",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Parse Input": {
      "main": [
        [
          {
            "node": "Generate From MVP Template",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Vercel Logs": {
      "main": [
        [
          {
            "node": "Error Logs",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "HTTP Request": {
      "main": [
        [
          {
            "node": "If 200",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Parse Output": {
      "main": [
        [
          {
            "node": "Code Reviewer",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Vercel Check": {
      "main": [
        [
          {
            "node": "If READY",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Vercel Fixer": {
      "main": [
        [
          {
            "node": "Parse Code-Fix",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Code Reviewer": {
      "main": [
        [
          {
            "node": "Parse Output1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Parse Output1": {
      "main": [
        [
          {
            "node": "GitHub",
            "type": "main",
            "index": 0
          },
          {
            "node": "Loop-Code",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Vercel Deploy": {
      "main": [
        [
          {
            "node": "Wait",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Generate Image": {
      "main": [
        [
          {
            "node": "If ",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Parse Code-Fix": {
      "main": [
        [
          {
            "node": "GitHub Commit Fix",
            "type": "main",
            "index": 0
          },
          {
            "node": "Loop-Code",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "TDD Code Maker": {
      "main": [
        [
          {
            "node": "Parse Output",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Vercel Deploy1": {
      "main": [
        [
          {
            "node": "Wait1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "GitHub Commit Fix": {
      "main": [
        [
          {
            "node": "Wait2",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "Chat Agent",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Images to generate": {
      "main": [
        [
          {
            "node": "Generate Image",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Chat Model1": {
      "ai_languageModel": [
        [
          {
            "node": "TDD Code Maker",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Chat Model2": {
      "ai_languageModel": [
        [
          {
            "node": "Code Reviewer",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Chat Model3": {
      "ai_languageModel": [
        [
          {
            "node": "Vercel Fixer",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "create_mvp trigger": {
      "main": [
        [
          {
            "node": "Parse Input",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Window Buffer Memory": {
      "ai_memory": [
        [
          {
            "node": "Chat Agent",
            "type": "ai_memory",
            "index": 0
          }
        ]
      ]
    },
    "Structured Output Code": {
      "ai_outputParser": [
        [
          {
            "node": "TDD Code Maker",
            "type": "ai_outputParser",
            "index": 0
          },
          {
            "node": "Code Reviewer",
            "type": "ai_outputParser",
            "index": 0
          },
          {
            "node": "Vercel Fixer",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "Fetch Latest Deployment": {
      "main": [
        [
          {
            "node": "Code1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Generate From MVP Template": {
      "main": [
        [
          {
            "node": "Variables",
            "type": "main",
            "index": 0
          },
          {
            "node": "Images to generate",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "When chat message received": {
      "main": [
        [
          {
            "node": "Chat Agent",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "When clicking ‘Test workflow’": {
      "main": [
        [
          {
            "node": "Code3",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
常见问题

如何使用这个工作流?

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

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

高级 - 开发运维, 多模态 AI

需要付费吗?

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

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

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

作者
Varritech

Varritech

@varritech

Build your next app 500% faster with the latest AI-powered development

外部链接
在 n8n.io 查看

分享此工作流