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 Proposal Generator System",
"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": "## 🚀 STEP 1: Sales Call Form\n\nCaptures essential deal information in under 30 seconds:\n\n**Form Fields:** Company details, problem description, proposed solution, project scope, timeline, and budget\n\n**Use Case:** Fill out during live sales calls for instant proposal generation\n\n**Result:** Structured data ready for AI processing"
},
"typeVersion": 1,
"name": "node-0"
},
{
"id": "sticky-note-2",
"type": "n8n-nodes-base.stickyNote",
"position": [
120,
-280
],
"parameters": {
"width": 380,
"height": 180,
"content": "## 🧠 STEP 2: AI Content Generation\n\nTransforms basic form inputs into professional proposal content:\n\n**OpenAI Processing:** Uses sophisticated GPT-4 prompting with example-based training\n**Output:** 20+ proposal sections including titles, problem analysis, solutions, scope, and timelines\n**Quality:** Professional business language with consistent tone and formatting\n\n**Key:** AI converts 30-second inputs into comprehensive proposals"
},
"typeVersion": 1,
"name": "node-1"
},
{
"id": "sticky-note-3",
"type": "n8n-nodes-base.stickyNote",
"position": [
450,
-300
],
"parameters": {
"width": 400,
"height": 200,
"content": "## 📄 STEP 3: Document Generation\n\n**Google Slides Path (Free):**\n1. **Google Drive:** Copies proposal template\n2. **Replace Text:** Populates template with AI-generated content\n3. **Gmail:** Sends proposal link via email\n\n**PandaDoc Path (Premium):**\n1. **HTTP Request:** Creates PandaDoc with payment integration\n2. **Gmail:** Sends proposal with signature + payment capabilities\n\n**Result:** Professional proposals ready for client review"
},
"typeVersion": 1,
"name": "node-2"
},
{
"id": "sticky-note-4",
"type": "n8n-nodes-base.stickyNote",
"position": [
800,
-200
],
"parameters": {
"width": 350,
"height": 160,
"content": "## ⚡ WORKFLOW ADVANTAGES\n\n**Speed:** Generate proposals in under 30 seconds during live calls\n**Quality:** AI ensures consistent, professional presentation\n**Dual Options:** Free Google Slides or premium PandaDoc with payments\n**Revenue:** Proven $1,500-$5,000 per implementation\n\n**Business Impact:** Send proposals before competitors even schedule follow-ups"
},
"typeVersion": 1,
"name": "node-3"
},
{
"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 Proposal Generator\n**This flow generates proposals using the free Google Slides solution**."
},
"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 Proposal Generator\n**This flow generates proposals using the paid PandaDoc solution, and also sends an invoice alongside it**."
},
"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": {
"618c4452-06f4-4f95-8777-a6e6f204bf33": {
"main": [
[
{
"node": "850e7d84-2001-421f-a8a2-aa9aa64f06b9",
"type": "main",
"index": 0
}
]
]
},
"d59a6b99-e112-424c-b6e5-3eeb92a1c784": {
"main": [
[
{
"node": "6b8e90ef-c520-40b6-9ec6-a7d422763d8a",
"type": "main",
"index": 0
}
]
]
},
"850e7d84-2001-421f-a8a2-aa9aa64f06b9": {
"main": [
[
{
"node": "65eec1e0-5e75-4544-b1d2-ee686d419edd",
"type": "main",
"index": 0
}
]
]
},
"6b8e90ef-c520-40b6-9ec6-a7d422763d8a": {
"main": [
[
{
"node": "66ec15ea-ba46-4aad-993a-e0b9cefde871",
"type": "main",
"index": 0
}
]
]
},
"65eec1e0-5e75-4544-b1d2-ee686d419edd": {
"main": [
[
{
"node": "dda7e0fa-e8cc-40a8-8af5-9f22b70f4752",
"type": "main",
"index": 0
}
]
]
},
"2d9e8695-d112-40a7-810a-94f3b3919382": {
"main": [
[]
]
},
"89833949-672b-4120-94fe-2f5b9b8b21de": {
"main": [
[
{
"node": "d59a6b99-e112-424c-b6e5-3eeb92a1c784",
"type": "main",
"index": 0
}
]
]
}
}
}자주 묻는 질문
이 워크플로우를 어떻게 사용하나요?
위의 JSON 구성 코드를 복사하여 n8n 인스턴스에서 새 워크플로우를 생성하고 "JSON에서 가져오기"를 선택한 후, 구성을 붙여넣고 필요에 따라 인증 설정을 수정하세요.
이 워크플로우는 어떤 시나리오에 적합한가요?
중급 - 인공지능, 마케팅
유료인가요?
이 워크플로우는 완전히 무료이며 직접 가져와 사용할 수 있습니다. 다만, 워크플로우에서 사용하는 타사 서비스(예: OpenAI API)는 사용자 직접 비용을 지불해야 할 수 있습니다.
관련 워크플로우 추천
Apify로 새로운 Instagram Reels 스크래핑 -> 트랜스크립션 -> 스프레드시트 추가
Apify, GPT-4o 및 Perplexity를 활용한 Instagram 콘텐츠 발견 및 재활용 자동화
Limit
Merge
Http Request
+
Limit
Merge
Http Request
16 노드Nick Saraev
인공지능
Facebook 광고 경쟁사 크리에이티브 분석 및 자동 이메일 보고서
AI(GPT-4 및 Gemini)를 사용한 경쟁사 Facebook 광고 분석 및 이메일 보고서 생성
Set
Wait
Gmail
+
Set
Wait
Gmail
31 노드SamirLiu
인공지능
AI, ElevenLabs, 다중 플랫폼을 사용하여 POV 비디오를 생성하고 승인
AI, ElevenLabs, 및 다중 플랫폼에서 POV 비디오를 생성하고 승인하기 (TikTok/IG/YT)
If
Set
Code
+
If
Set
Code
60 노드Immanuel
디자인
✨🤖 X + Facebook + Instagram + LinkedIn에 적합한 자동화 AI 추동 소셜 미디어 콘텐츠 공장
✨🤖 AI를 사용하여 다중 플랫폼 소셜 미디어 콘텐츠 생성 자동화
If
Set
Code
+
If
Set
Code
57 노드Joseph LePage
인공지능
AI 제안서 생성 시스템
영업 후 통화를 기반으로 한 AI 기반 자동 제안서 생성기
Gmail
Form Trigger
Google Drive
+
Gmail
Form Trigger
Google Drive
6 노드Gerald Denor
영업
자동화 제안서 생성기
Google Slides 기반 AI 구동 제안서 자동화
Gmail
Form Trigger
Google Drive
+
Gmail
Form Trigger
Google Drive
6 노드David Olusola
인공지능