8
n8n 中文网amn8n.com

AI提案生成系统

中级

这是一个AI, Marketing领域的自动化工作流,包含 15 个节点。主要使用 Gmail, FormTrigger, GoogleDrive, HttpRequest, GoogleSlides 等节点,结合人工智能技术实现智能自动化。 AI高级提案生成器:集成OpenAI、Google Slides和PandaDoc

前置要求
  • Google 账号和 Gmail API 凭证
  • Google Drive API 凭证
  • 可能需要目标 API 的认证凭证
  • OpenAI API Key
工作流预览
可视化展示节点连接关系,支持缩放和平移
导出工作流
复制以下 JSON 配置到 n8n 导入,即可使用此工作流
{
  "id": "x6UbWXr0iMgy1TEB",
  "meta": {
    "instanceId": "d7661a849ead114a9aa6d9ceaf4160465aeb79532a35bde62160c840ffba9fc8"
  },
  "name": "AI 提案生成系统",
  "tags": [
    {
      "id": "l8MPK4ZirgwFWMno",
      "name": "N8N Course",
      "createdAt": "2025-01-23T18:12:52.273Z",
      "updatedAt": "2025-01-23T18:12:52.273Z"
    }
  ],
  "nodes": [
    {
      "id": "sticky-note-1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -60,
        -200
      ],
      "parameters": {
        "width": 350,
        "height": 160,
        "content": "## 🚀 步骤 1:销售通话表单"
      },
      "typeVersion": 1
    },
    {
      "id": "sticky-note-2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        120,
        -280
      ],
      "parameters": {
        "width": 380,
        "height": 180,
        "content": "## 🧠 步骤 2:AI 内容生成"
      },
      "typeVersion": 1
    },
    {
      "id": "sticky-note-3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        450,
        -300
      ],
      "parameters": {
        "width": 400,
        "height": 200,
        "content": "## 📄 步骤 3:文档生成"
      },
      "typeVersion": 1
    },
    {
      "id": "sticky-note-4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        800,
        -200
      ],
      "parameters": {
        "width": 350,
        "height": 160,
        "content": "## ⚡ 工作流优势"
      },
      "typeVersion": 1
    },
    {
      "id": "65eec1e0-5e75-4544-b1d2-ee686d419edd",
      "name": "替换文本",
      "type": "n8n-nodes-base.googleSlides",
      "position": [
        700,
        0
      ],
      "parameters": {
        "textUi": {
          "textValues": [
            {
              "text": "{{proposalTitle}}",
              "replaceText": "={{ $('OpenAI').item.json.message.content.proposalTitle }}"
            },
            {
              "text": "{{descriptionName}}",
              "replaceText": "={{ $('OpenAI').item.json.message.content.descriptionName }}"
            },
            {
              "text": "{{oneParagraphProblemSummary}}",
              "replaceText": "={{ $('OpenAI').item.json.message.content.oneParagraphProblemSummary }}"
            },
            {
              "text": "{{solutionHeadingOne}}",
              "replaceText": "={{ $('OpenAI').item.json.message.content.solutionHeadingOne }}"
            },
            {
              "text": "{{solutionHeadingTwo}}",
              "replaceText": "={{ $('OpenAI').item.json.message.content.solutionHeadingTwo }}"
            },
            {
              "text": "{{solutionHeadingThree}}",
              "replaceText": "={{ $('OpenAI').item.json.message.content.solutionHeadingThree }}"
            },
            {
              "text": "{{solutionDescriptionOne}}",
              "replaceText": "={{ $('OpenAI').item.json.message.content.solutionDescriptionOne }}"
            },
            {
              "text": "{{solutionDescriptionTwo}}",
              "replaceText": "={{ $('OpenAI').item.json.message.content.solutionDescriptionTwo }}"
            },
            {
              "text": "{{solutionDescriptionThree}}",
              "replaceText": "={{ $('OpenAI').item.json.message.content.solutionDescriptionThree }}"
            },
            {
              "text": "{{shortScopeTitleOne}}",
              "replaceText": "={{ $('OpenAI').item.json.message.content.shortScopeTitleOne }}"
            },
            {
              "text": "{{shortScopeTitleTwo}}",
              "replaceText": "={{ $('OpenAI').item.json.message.content.shortScopeTitleTwo }}"
            },
            {
              "text": "{{shortScopeTitleThree}}",
              "replaceText": "={{ $('OpenAI').item.json.message.content.shortScopeTitleThree }}"
            },
            {
              "text": "{{shortScopeDescriptionOne}}",
              "replaceText": "={{ $('OpenAI').item.json.message.content.shortScopeDescriptionOne }}"
            },
            {
              "text": "{{shortScopeDescriptionTwo}}",
              "replaceText": "={{ $('OpenAI').item.json.message.content.shortScopeDescriptionTwo }}"
            },
            {
              "text": "{{shortScopeDescriptionThree}}",
              "replaceText": "={{ $('OpenAI').item.json.message.content.shortScopeDescriptionThree }}"
            },
            {
              "text": "{{milestoneOneDay}}",
              "replaceText": "={{ $('OpenAI').item.json.message.content.milestoneOneDay }}"
            },
            {
              "text": "{{milestoneTwoDay}}",
              "replaceText": "={{ $('OpenAI').item.json.message.content.milestoneTwoDay }}"
            },
            {
              "text": "{{milestoneThreeDay}}",
              "replaceText": "={{ $('OpenAI').item.json.message.content.milestoneThreeDay }}"
            },
            {
              "text": "{{milestoneFourDay}}",
              "replaceText": "={{ $('OpenAI').item.json.message.content.milestoneFourDay }}"
            },
            {
              "text": "{{milestoneDescriptionOne}}",
              "replaceText": "={{ $('OpenAI').item.json.message.content.milestoneDescriptionOne }}"
            },
            {
              "text": "{{milestoneDescriptionTwo}}",
              "replaceText": "={{ $('OpenAI').item.json.message.content.milestoneDescriptionTwo }}"
            },
            {
              "text": "{{milestoneDescriptionThree}}",
              "replaceText": "={{ $('OpenAI').item.json.message.content.milestoneDescriptionThree }}"
            },
            {
              "text": "{{milestoneDescriptionFour}}",
              "replaceText": "={{ $('OpenAI').item.json.message.content.milestoneDescriptionFour }}"
            },
            {
              "text": "{{cost}}",
              "replaceText": "$1,850"
            }
          ]
        },
        "options": {},
        "operation": "replaceText",
        "presentationId": "={{ $json.id }}"
      },
      "credentials": {
        "googleSlidesOAuth2Api": {
          "id": "ie4yCWIQ8AYXFVxa",
          "name": "YouTube"
        }
      },
      "typeVersion": 2
    },
    {
      "id": "618c4452-06f4-4f95-8777-a6e6f204bf33",
      "name": "OpenAI",
      "type": "@n8n/n8n-nodes-langchain.openAi",
      "position": [
        160,
        0
      ],
      "parameters": {
        "modelId": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4o",
          "cachedResultName": "GPT-4O"
        },
        "options": {},
        "messages": {
          "values": [
            {
              "role": "system",
              "content": "You are a helpful, intelligent writing assistant."
            },
            {
              "content": "Your task is to generate a proposal using input data from a form. This proposal should be highly customized, specific, and high-quality, considering we're going to be sending it immediately after you're done.\n\nContext: we are an automation/no-code agency that develops systems revolving around growth, revenue ops, etc.\n\nThe proposal template we're using has many fields. You must return these fields in one JSON object.\n\nUse this format:\n\n{\n  \"proposalTitle\": \"\",\n  \"descriptionName\": \"\",\n  \"oneParagraphProblemSummary\": \"\",\n  \"solutionHeadingOne\": \"\",\n  \"solutionDescriptionOne\": \"\",\n  \"solutionHeadingTwo\": \"\",\n  \"solutionDescriptionTwo\": \"\",\n  \"solutionHeadingThree\": \"\",\n  \"solutionDescriptionThree\":\"\",\n  \"shortScopeTitleOne\": \"\",\n  \"shortScopeTitleTwo\": \"\",\n  \"shortScopeTitleThree\": \"\",\n  \"shortScopeDescriptionOne\": \"\",\n  \"shortScopeDescriptionTwo\": \"\",\n  \"shortScopeDescriptionThree\": \"\",\n  \"milestoneOneDay\": \"\",\n  \"milestoneTwoDay\": \"\",\n  \"milestoneThreeDay\": \"\",\n  \"milestoneFourDay\": \"\",\n  \"milestoneDescriptionOne\": \"\",\n  \"milestoneDescriptionTwo\": \"\",\n  \"milestoneDescriptionThree\": \"\",\n  \"milestoneDescriptionFour\": \"\"\n}\n\nRules:\n1. Use a spartan, casual tone of voice.\n2. Be to-the-point but professional—assume you're writing to a sophisticated audience.\n3. Ensure that all fields are filled out. Do not miss a field or leave any variables empty.\n4. Keep things short. If a field contains the term \"Description\" it should be no more than fourteen words. For \"descriptionName\" do not use title case."
            },
            {
              "content": "{\n  \"companyName\":\"1SecondCopy\",\n  \"problem\": \"they can't generate leads. everything is referral based rn.\",\n  \"solution\": \"cold email lead gen system, client reactivation system, and best in class sales training for closing\",\n  \"scope\": \"1k/day cold email infra, 30k email leads, 4 weekly zoom sessions for sales training\",\n  \"currentDate\":\"Feb 4 2025\",\n  \"howSoon\": \"two months\",\n  \"depositCost\": \"$1,845\",\n}"
            },
            {
              "role": "assistant",
              "content": "{\n  \"proposalTitle\": \"Lead Gen System for 1SecondCopy\n\",\n  \"descriptionName\": \"A simple, scalable lead generation system built to help grow your content efforts & connect you with the right people.\n\",\n  \"oneParagraphProblemSummary\": \"Right now, 1SecondCopy is struggling with an inability to generate qualified leads. The majority of your new clients are referral-based, which, while always nice to have, is not scalable nor is it reliable. Building an alternative strategy—one that allows you to take leads from cold -> close—is vital to the health and longevity of the company, and it’s what we’re going to help you with.\n\",\n  \"solutionHeadingOne\": \"Cold Outbound Lead Gen\",\n  \"solutionDescriptionOne\": \"We’ll put in place a robust cold-email-based system for you using best practices.\",\n  \"solutionHeadingTwo\": \"Client Reactivation System\",\n  \"solutionDescriptionTwo\": \"We’ll build a simple, but high-ROI reactivation system to let you extract value from pre-existing clients.\",\n  \"solutionHeadingThree\": \"Best-In-Class Sales Training\",\n  \"solutionDescriptionThree\": \"We’ll train your team with world-class setting & closing mechanisms.\",\n  \"shortScopeTitleOne\": Cold email infrastructure that sends ~1K emails/day\",\n  \"shortScopeTitleTwo\": \"30K high-quality scraped email leads (included)\",\n  \"shortScopeTitleThree\": \"Four weekly one-hour sales training sessions over Zoom\",\n  \"shortScopeDescriptionOne\": \"12 domains, 36 mailboxes, DNS optimization, and warmups included.\",\n  \"shortScopeDescriptionTwo\": \"30,000 leads in your target market, delivered by CSV.\",\n  \"shortScopeDescriptionThree\": \"We’ll take your sales team from 0->1.\",\n  \"milestoneOneDay\": \"February 8th, 2025\",\n  \"milestoneTwoDay\": \"February 28th, 2025\",\n  \"milestoneThreeDay\": \"March 10th, 2025\",\n  \"milestoneFourDay\":\"March 17th-April 1st, 2025\",\n  \"milestoneDescriptionOne\": \"Cold email system done & ready for warmup.\",\n  \"milestoneDescriptionTwo\": \"Cold email system fully warmed up & operational.\",\n  \"milestoneDescriptionThree\": \"10,000 outbound emails sent; analysis & training #1.\"\n  \"milestoneDescriptionFour\":\"One sales training per week alongside iteration & handoff.\"\n}"
            },
            {
              "content": "={\n  \"companyName\":\"{{ $json['Company Name'] }}\",\n  \"problem\": \"{{ $json.Problem }}\",\n  \"solution\": \"{{ $json.Solution}}\",\n  \"scope\": \"{{ $json.Scope }}\",\n  \"currentDate\":\"{{ $now.toLocaleString({ dateStyle: 'medium' }) }}\",\n  \"howSoon\": \"{{ $json['How soon?'] }}\",\n  \"depositCost\": \"{{ $json.Cost }}\",\n}"
            }
          ]
        },
        "jsonOutput": true
      },
      "credentials": {
        "openAiApi": {
          "id": "oLLACDYfGm4C4ouV",
          "name": "YouTube "
        }
      },
      "typeVersion": 1.6
    },
    {
      "id": "850e7d84-2001-421f-a8a2-aa9aa64f06b9",
      "name": "Google Drive",
      "type": "n8n-nodes-base.googleDrive",
      "position": [
        500,
        0
      ],
      "parameters": {
        "name": "={{ $json.message.content.proposalTitle }}",
        "fileId": {
          "__rl": true,
          "mode": "id",
          "value": "1fHzjDQtZouAwfv4kn5uvgpTWqwhTAlPrGkdtkbYBkNE"
        },
        "options": {
          "copyRequiresWriterPermission": false
        },
        "operation": "copy"
      },
      "credentials": {
        "googleDriveOAuth2Api": {
          "id": "8R2NiLt8owCA0E2O",
          "name": "Google Drive account"
        }
      },
      "typeVersion": 3
    },
    {
      "id": "dda7e0fa-e8cc-40a8-8af5-9f22b70f4752",
      "name": "Gmail",
      "type": "n8n-nodes-base.gmail",
      "position": [
        900,
        0
      ],
      "webhookId": "b989215e-e975-44a7-9dc7-fd51e7310cba",
      "parameters": {
        "sendTo": "={{ $('On form submission').item.json.Email }}",
        "message": "=Hey Nick,\n\nThanks for the great call earlier. I had a moment after our chat to put together a detailed proposal for you—please take a look at your earliest convenience and let me know your thoughts.\n\nYou'll find it here: https://docs.google.com/presentation/d/{{ $json.presentationId }}/edit\n\nIf you have any questions, just shout. I've also sent over an invoice for the project (just to keep things convenient) and can get started anytime that's sorted.\n\nThanks,\nNick",
        "options": {
          "appendAttribution": false
        },
        "subject": "Re: Proposal for LeftClick",
        "emailType": "text"
      },
      "credentials": {
        "gmailOAuth2": {
          "id": "YqmvyP5s2u0IHOHB",
          "name": "Gmail account 3"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "2d9e8695-d112-40a7-810a-94f3b3919382",
      "name": "表单提交时",
      "type": "n8n-nodes-base.formTrigger",
      "position": [
        -20,
        0
      ],
      "webhookId": "24fd835d-9132-4faf-b715-755e75aee9be",
      "parameters": {
        "options": {
          "appendAttribution": false
        },
        "formTitle": "Sales Call Logging Form",
        "formFields": {
          "values": [
            {
              "fieldLabel": "First Name",
              "requiredField": true
            },
            {
              "fieldLabel": "Last Name",
              "requiredField": true
            },
            {
              "fieldLabel": "Company Name",
              "requiredField": true
            },
            {
              "fieldType": "email",
              "fieldLabel": "Email"
            },
            {
              "fieldLabel": "Website",
              "requiredField": true
            },
            {
              "fieldType": "textarea",
              "fieldLabel": "Problem",
              "requiredField": true
            },
            {
              "fieldType": "textarea",
              "fieldLabel": "Solution",
              "requiredField": true
            },
            {
              "fieldType": "textarea",
              "fieldLabel": "Scope",
              "requiredField": true
            },
            {
              "fieldLabel": "Cost",
              "requiredField": true
            },
            {
              "fieldLabel": "How soon?",
              "requiredField": true
            }
          ]
        },
        "formDescription": "This form logs a sales call & automatically generates a proposal."
      },
      "typeVersion": 2.2
    },
    {
      "id": "bc1bf3dd-7261-4f56-a71b-236fbde109ff",
      "name": "便签",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -60,
        -100
      ],
      "parameters": {
        "width": 1220,
        "height": 280,
        "content": "## Google Slides AI 提案生成器"
      },
      "typeVersion": 1
    },
    {
      "id": "d59a6b99-e112-424c-b6e5-3eeb92a1c784",
      "name": "OpenAI1",
      "type": "@n8n/n8n-nodes-langchain.openAi",
      "position": [
        160,
        460
      ],
      "parameters": {
        "modelId": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4o",
          "cachedResultName": "GPT-4O"
        },
        "options": {},
        "messages": {
          "values": [
            {
              "role": "system",
              "content": "You are a helpful, intelligent writing assistant."
            },
            {
              "content": "=Your task is to generate a proposal using input data from a form. This proposal should be highly customized, specific, and high-quality, considering we're going to be sending it immediately after you're done.\n\nContext: we are an automation/no-code agency that develops systems revolving around growth, revenue ops, etc.\n\nThe proposal template we're using has many fields. You must return these fields in one JSON object.\n\nUse this format:\n\n{\n  \"proposalTitle\": \"\",\n  \"descriptionName\": \"\",\n  \"problemTitle\": \"\",\n  \"oneParagraphProblemSummary\": \"\",\n  \"solutionTitle\": \"\",\n  \"solutionText\": \"\",\n  \"scopeOne\": \"\",\n  \"scopeTwo\": \"\",\n  \"scopeThree\": \"\",\n  \"scopeFour\": \"\",\n  \"scopeFive\": \"\",\n  \"timelineOne\": \"\",\n  \"timelineTwo\": \"\",\n  \"timelineThree\": \"\",\n  \"timelineFour\": \"\"\n}\n\nRules:\n1. Use a spartan, casual tone of voice.\n2. Be to-the-point but professional—assume you're writing to a sophisticated audience.\n3. Ensure that all fields are filled out. Do not miss a field or leave any variables empty.\n4. For oneParagraphProblemSummary and solutionText, make sure to number the responses (usually 3, make sure they're inside of the string)."
            },
            {
              "content": "={\n  \"companyName\":\"1SecondCopy\",\n  \"problem\": \"they can't generate leads. everything is referral based rn.\",\n  \"solution\": \"cold email lead gen system, client reactivation system, and best in class sales training for closing\",\n  \"scope\": \"1k/day cold email infra, 30k email leads, 4 weekly zoom sessions for sales training\",\n  \"currentDate\":\"Feb 4 2025\",\n  \"howSoon\": \"two months\",\n  \"depositCost\": \"$1,845\",\n}"
            },
            {
              "role": "assistant",
              "content": "={\n  \"proposalTitle\": \"Lead Gen System for 1SecondCopy\n\",\n  \"descriptionName\": \"A simple, scalable lead generation system built to help grow your content efforts & connect you with the right people.\n\",\n  \"problemTitle\":\"Inability to generate leads\"\n  \"oneParagraphProblemSummary\": \"Right now, 1SecondCopy is struggling with:\\n\\n 1. An inability to generate qualified leads.\\nThe majority of your new clients are referral-based, which, while always nice to have, is not scalable nor is it reliable. Building an alternative strategy—one that allows you to take leads from cold -> close—is vital to the health and longevity of the company, and it’s what we’re going to help you with.\\n\\n 2. No standardized followup mechanism.\\nWithout a way to follow up with leads, you're leaving the majority of the money that one of those leads could produce for you on the table.\n\",\n  \"solutionTitle\": \"Sales & Lead Generation Solutions\",\n  \"solutionText\": \"1. Cold Outbound Lead Gen\\nIn order to generate leads efficiently, we’ll put in place a robust cold-email-based system for you using best practices.\\n\\n2. Client Reactivation System\\nIn order to extract value from pre-existing clients, we’ll build a simple but high-ROI reactivation system.\\n\\n3. Best-In-Class Sales Training\\nIn order to improve conversion rates, we’ll train your team with world-class setting & closing mechanisms.\"\n  \"scopeOne\":\"We'll create a database to store both videos and competitors.\",\n  \"scopeTwo\":\"We'll create a simple form to quickly add competitors to your database.\",\n  \"scopeThree\":\"We'll build a daily flow that automatically generates video outlines based on the scrapes.\",\n  \"scopeFour\":\"We'll record documentation showing you how to manage and update the system.\",\n  \"scopeFive\":\"We'll provide one, two-hour team training session to teach your company how to use the system.\",\n  \"timelineOne\": \"Cold email system done & ready for warmup: February 8th, 2025\",\n  \"timelineTwo\": \"Cold email system fully warmed up & operational: February 28th, 2025\",\n  \"timelineThree\": \"10,000 outbound emails sent; analysis & training #1: March 10th, 2025\",\n  \"timelineFour\":\"One sales training per week alongside iteration & handoff: March 17th-April 1st, 2025\",\n}"
            },
            {
              "content": "={\n  \"companyName\":\"{{ $json['Company Name'] }}\",\n  \"problem\": \"{{ $json.Problem }}\",\n  \"solution\": \"{{ $json.Solution}}\",\n  \"scope\": \"{{ $json.Scope }}\",\n  \"currentDate\":\"{{ $now.toLocaleString({ dateStyle: 'medium' }) }}\",\n  \"howSoon\": \"{{ $json['How soon?'] }}\",\n  \"depositCost\": \"{{ $json.Cost }}\",\n}"
            }
          ]
        },
        "jsonOutput": true
      },
      "credentials": {
        "openAiApi": {
          "id": "oLLACDYfGm4C4ouV",
          "name": "YouTube "
        }
      },
      "typeVersion": 1.6
    },
    {
      "id": "66ec15ea-ba46-4aad-993a-e0b9cefde871",
      "name": "Gmail1",
      "type": "n8n-nodes-base.gmail",
      "position": [
        740,
        460
      ],
      "webhookId": "470caaaa-62ff-4468-973d-4b1082cfe57a",
      "parameters": {
        "sendTo": "={{ $('On form submission1').item.json.Email }}",
        "message": "=Hey Nick,\n\nThanks for the great call earlier. I had a moment after our chat to put together a detailed proposal for you—please take a look at your earliest convenience and let me know your thoughts.\n\nYou'll find it here: https://docs.google.com/presentation/d/{{ $json.presentationId }}/edit\n\nIf you have any questions, just shout. I've also sent over an invoice for the project (just to keep things convenient) and can get started anytime that's sorted.\n\nThanks,\nNick",
        "options": {
          "appendAttribution": false
        },
        "subject": "Re: Proposal for LeftClick",
        "emailType": "text"
      },
      "credentials": {
        "gmailOAuth2": {
          "id": "YqmvyP5s2u0IHOHB",
          "name": "Gmail account 3"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "89833949-672b-4120-94fe-2f5b9b8b21de",
      "name": "表单提交时1",
      "type": "n8n-nodes-base.formTrigger",
      "position": [
        -20,
        460
      ],
      "webhookId": "f0e8d4a0-8002-4804-aa90-4566fef26283",
      "parameters": {
        "options": {
          "appendAttribution": false
        },
        "formTitle": "Sales Call Logging Form",
        "formFields": {
          "values": [
            {
              "fieldLabel": "First Name",
              "requiredField": true
            },
            {
              "fieldLabel": "Last Name",
              "requiredField": true
            },
            {
              "fieldLabel": "Company Name",
              "requiredField": true
            },
            {
              "fieldType": "email",
              "fieldLabel": "Email"
            },
            {
              "fieldLabel": "Website",
              "requiredField": true
            },
            {
              "fieldType": "textarea",
              "fieldLabel": "Problem",
              "requiredField": true
            },
            {
              "fieldType": "textarea",
              "fieldLabel": "Solution",
              "requiredField": true
            },
            {
              "fieldType": "textarea",
              "fieldLabel": "Scope",
              "requiredField": true
            },
            {
              "fieldLabel": "Cost",
              "requiredField": true
            },
            {
              "fieldLabel": "How soon?",
              "requiredField": true
            }
          ]
        },
        "formDescription": "This form logs a sales call & automatically generates a proposal."
      },
      "typeVersion": 2.2
    },
    {
      "id": "5cf9ca5e-2ffa-492f-899f-4668786dabbd",
      "name": "便签1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -60,
        360
      ],
      "parameters": {
        "width": 1220,
        "height": 280,
        "content": "## PandaDoc AI 提案生成器"
      },
      "typeVersion": 1
    },
    {
      "id": "6b8e90ef-c520-40b6-9ec6-a7d422763d8a",
      "name": "HTTP 请求",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        520,
        460
      ],
      "parameters": {
        "url": "https://api.pandadoc.com/public/v1/documents/",
        "method": "POST",
        "options": {},
        "jsonBody": "={\n    \"name\": \"{{ $json.message.content.proposalTitle }}\",\n    \"fields\": {\n        \"Initials\": {\n            \"value\": \"EI\"\n        }\n    },\n    \"tokens\": [\n        {\n            \"name\": \"Client.Email\",\n            \"value\": \"{{ $('On form submission1').item.json.Email }}\"\n        },\n        {\n            \"name\": \"Sender.Email\",\n            \"value\": \"nick@leftclick.ai\"\n        },\n        {\n            \"name\": \"Client.Scope1\",\n            \"value\": \"{{ $json.message.content.scopeOne }}\"\n        },\n        {\n            \"name\": \"Client.Scope2\",\n            \"value\": \"{{ $json.message.content.scopeTwo }}\"\n        },\n        {\n            \"name\": \"Client.Scope3\",\n            \"value\": \"{{ $json.message.content.scopeThree }}\"\n        },\n        {\n            \"name\": \"Client.Scope4\",\n            \"value\": \"{{ $json.message.content.scopeFour }}\"\n        },\n        {\n            \"name\": \"Client.Scope5\",\n            \"value\": \"{{ $json.message.content.scopeFive }}\"\n        },\n        {\n            \"name\": \"Client.Company\",\n            \"value\": \"{{ $('On form submission1').item.json['Company Name'] }}\"\n        },\n        {\n            \"name\": \"Sender.Company\",\n            \"value\": \"WorkflowLoop\"\n        },\n        {\n            \"name\": \"Client.LastName\",\n            \"value\": \"{{ $('On form submission1').item.json['Last Name'] }}\"\n        },\n        {\n            \"name\": \"Sender.LastName\",\n            \"value\": \"Saraev\"\n        },\n        {\n            \"name\": \"Client.FirstName\",\n            \"value\": \"{{ $('On form submission1').item.json['First Name'] }}\"\n        },\n        {\n            \"name\": \"Client.Timeline1\",\n            \"value\": \"{{ $json.message.content.timelineOne }}\"\n        },\n        {\n            \"name\": \"Client.Timeline2\",\n            \"value\": \"{{ $json.message.content.timelineTwo }}\"\n        },\n        {\n            \"name\": \"Client.Timeline3\",\n            \"value\": \"{{ $json.message.content.timelineThree }}\"\n        },\n        {\n            \"name\": \"Client.Timeline4\",\n            \"value\": \"{{ $json.message.content.timelineFour }}\"\n        },\n        {\n            \"name\": \"Sender.FirstName\",\n            \"value\": \"Nick\"\n        },\n        {\n            \"name\": \"Client.ProblemText\",\n            \"value\": \"{{ $json.message.content.oneParagraphProblemSummary }}\"\n        },\n        {\n            \"name\": \"Client.ProblemTitle\",\n            \"value\": \"{{ $json.message.content.problemTitle }}\"\n        },\n        {\n            \"name\": \"Client.SolutionText\",\n            \"value\": {{ JSON.stringify($json.message.content.solutionText) }}\n        },\n        {\n            \"name\": \"Client.ProposalTitle\",\n            \"value\": \"{{ $json.message.content.proposalTitle }}\"\n        },\n        {\n            \"name\": \"Client.SolutionTitle\",\n            \"value\": \"{{ $json.message.content.solutionTitle }}\"\n        }\n    ],\n    \"metadata\": {},\n    \"recipients\": [\n        {\n            \"email\": \"{{ $('On form submission1').item.json.Email }}\",\n            \"role\": \"Client\"\n        },\n        {\n            \"email\": \"nick@leftclick.ai\",\n            \"company\": \"WorkflowLoop\",\n            \"last_name\": \"Saraev\",\n            \"first_name\": \"Nick\",\n            \"role\": \"Sender\"\n        }\n    ],\n    \"template_uuid\": \"yxge9HxfgWhvqKjFXwWEpS\",\n    \"pricing_tables\": [\n        {\n            \"name\": \"Pricing Table 1\",\n            \"options\": {\n                \"currency\": \"USD\"\n            },\n            \"sections\": [\n                {\n                    \"rows\": [\n                        {\n                            \"data\": {\n                                \"qty\": 1,\n                                \"name\": \"{{ $json.message.content.proposalTitle }}\",\n                                \"price\": {{ $('On form submission1').item.json.Cost.replace(\"$\",\"\").replace(\",\",\"\").toNumber() }}\n                            },\n                            \"options\": {\n                                \"optional\": false,\n                                \"qty_editable\": false,\n                                \"optional_selected\": false\n                            }\n                        }\n                    ],\n                    \"title\": \"Pricing Section\",\n                    \"default\": true\n                }\n            ]\n        }\n    ]\n}",
        "sendBody": true,
        "sendHeaders": true,
        "specifyBody": "json",
        "headerParameters": {
          "parameters": [
            {
              "name": "Authorization",
              "value": "API-Key {yourApiKeyGoesHere}"
            },
            {
              "name": "accept",
              "value": "application/json"
            }
          ]
        }
      },
      "typeVersion": 4.2
    }
  ],
  "active": false,
  "pinData": {
    "On form submission1": [
      {
        "json": {
          "Cost": "$3,525",
          "Email": "nickolassaraev@gmail.com",
          "Scope": "form you can fill out with competitors, that adds them to a db. once per day db is scraped and you get however many people are in the Sheet x however many vids they put out",
          "Problem": "they're struggling making YouTube vids. Everything is really time intensive rn, mostly because they don't have scripts.",
          "Website": "https://leftclick.ai",
          "Solution": "AI script writing system, scrapes competitor youtube vids for ideas and rephrases best performing titles, then writes outlines",
          "formMode": "test",
          "How soon?": "two weeks",
          "Last Name": "Saraev",
          "First Name": "Peter",
          "submittedAt": "2025-02-04T16:18:45.810-07:00",
          "Company Name": "LeftCLick"
        }
      }
    ]
  },
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "2452f9ed-c796-4e03-89c6-f7c735b77966",
  "connections": {
    "OpenAI": {
      "main": [
        [
          {
            "node": "Google Drive",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI1": {
      "main": [
        [
          {
            "node": "HTTP Request",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Google Drive": {
      "main": [
        [
          {
            "node": "Replace Text",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "HTTP Request": {
      "main": [
        [
          {
            "node": "Gmail1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Replace Text": {
      "main": [
        [
          {
            "node": "Gmail",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "On form submission": {
      "main": [
        []
      ]
    },
    "On form submission1": {
      "main": [
        [
          {
            "node": "OpenAI1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
常见问题

如何使用这个工作流?

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

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

中级 - 人工智能, 营销

需要付费吗?

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

工作流信息
难度等级
中级
节点数量15
分类2
节点类型7
难度说明

适合有一定经验的用户,包含 6-15 个节点的中等复杂度工作流

外部链接
在 n8n.io 查看

分享此工作流