2026-09-19 · 原文发布日
表单填需求,自动产出品牌PDF提案并存为Gmail草稿
通过n8n表单收集客户公司情况、拟提供服务、报价、工期和品牌色,Gemini按预定义schema生成结构化提案内容,校验章节和条目数后合并进固定版式HTML,调用APITemplate.io转成A4 PDF,再以客户邮箱为收件人创建带附件的Gmail草稿;PDF生成失败则给己方发错误邮件。提示词禁止编造数字,且只建草稿不直接发送,方便人工把关。
原文要点
这是Michael Cedeño发布的免费n8n模板:n8n表单收集客户公司情况、现状、拟提供服务、报价、工期和可选品牌色;Gemini按预定义schema产出结构化提案JSON,校验章节与条目数并对缺失品牌色用回退色,合并进固定版式HTML;再调APITemplate.io(凭据用X-API-KEY请求头)把HTML转A4 PDF;最后以客户邮箱为收件人创建带PDF附件的Gmail草稿,PDF生成失败则给己方机构邮箱发错误邮件。作者说明提示词禁止编造数字,且全程只建草稿不自动发送。
这次做成什么
照着原文搭建思路,在n8n手工复现一条“表单→Gemini结构化提案→HTML→APITemplate.io转PDF→Gmail草稿”的练习流程,并理解两个安全设计:所有数字只能来自表单输入、提案只落到草稿箱由人工发出。模板本身免费,但Gemini与APITemplate.io用量可能计费(作者称后者免费档够试用,实际以服务商页面为准)。
准备什么
- 可新建工作流并启用表单触发器的n8n实例
- Google Gemini API密钥(或换成OpenAI/Anthropic等任一聊天模型)
- APITemplate.io账号及API密钥
- 拥有创建草稿权限的Gmail账号及OAuth凭据
- 一个用于接收错误通知的己方机构邮箱地址
具体怎么做
创建n8n表单收集提案要素
新建工作流,放Form Trigger节点,字段设为:客户公司名称、联系人邮箱、客户现状描述、拟提供服务清单、报价(金额与币种)、工期(周数)、可选品牌主色。发布后拿到表单URL,供内部同事提交提案请求。
让Gemini按schema生成提案JSON
添加AI Agent或Basic LLM Chain节点,模型选Gemini,系统消息粘贴下文artifact中的提示词全文,用户消息把表单各字段原样插入;挂Structured Output Parser,schema包含proposal_title、summary、sections数组(每节含heading与bullets数组)、pricing_table、timeline_note。原文说明可换成其他聊天模型,输出解析器不变,流程其余部分不受影响。
校验内容并合并进HTML模板
接Code节点做三件事:校验sections数量在3到6之间、每节bullets为2到5条,不满足就截断或补占位文案;若表单未填品牌色则填入CONFIG中的默认色;把JSON填进一段固定版式HTML字符串(含页眉LOGO区、章节区、报价表、页脚联系方式)。CONFIG块集中写机构名称、邮箱、电话、时区、默认品牌色,便于统一修改。
调用APITemplate.io生成A4 PDF
添加HTTP Request节点,POST到APITemplate.io的PDF生成接口,认证方式选Header Auth、头名X-API-KEY、值为你的密钥;请求体传入HTML内容并指定A4纸张。节点上加IF错误分支:响应失败时用Gmail节点给机构邮箱发错误邮件,附上报价单请求ID便于排查后重跑。
创建Gmail草稿并验收
成功分支接Gmail节点,操作选创建草稿(不是发送),收件人取表单中的客户邮箱,正文引用提案标题与一到两个亮点,附件挂PDF二进制。激活工作流后用测试表单提交一次,到Gmail草稿箱确认草稿、附件和版式。
可直接复制的材料
提案生成系统提示词(可直接粘贴)
本站依据原文“禁止编造数字”等描述独立编写的提示词,与原模板内部提示词不同;章节数限制可按你的版式调整。
你是销售提案撰写助手。根据用户提供的表单信息,输出一份中文业务提案的结构化JSON。
硬性规则:
1. 提案中出现的每一个价格、百分比、日期和工期数字,必须逐字来自用户表单输入,绝对禁止编造、推算或四舍五入任何数字;
2. 如果表单中某项信息缺失,对应字段写null,不要虚构;
3. 语气专业、面向客户决策人,每节条目为2到5条短句,每条不超过40字。
输出仅为此JSON,不要输出任何其他文字:
{"proposal_title":"提案标题,含客户公司名","summary":"100字以内的合作概述","sections":[{"heading":"章节标题","bullets":["要点1","要点2"]}],"pricing_table":[{"item":"服务项","price":"表单报价原文"}],"timeline_note":"工期说明,引用表单工期原文","call_to_action":"一句约见或回复邀请"}
sections数量为3到6节,建议结构:客户现状理解、服务方案、交付与工期、报价、为什么选择我们。HTML构建Code节点中的CONFIG块示例
本站独立编写的示例配置,机构名称、邮箱、电话均为虚构占位,必须替换为你自己的信息后再启用。
const CONFIG = {
agencyName: "杭州云启数字营销工作室",
agencyEmail: "hello@yunqi-demo.example.com",
agencyPhone: "+86-571-0000-0000",
timezone: "Asia/Shanghai",
defaultPrimaryColor: "#1F4E79",
defaultAccentColor: "#F2A93B",
minSections: 3,
maxSections: 6,
minBullets: 2,
maxBullets: 5
};
// 用法:brandColor = formBrandColor || CONFIG.defaultPrimaryColor;
// sections数组长度超出[maxSections]时截断,不足[minSections]时合并相邻小节。表单测试数据(虚构)
本站虚构练习输入,公司与邮箱均为编造;在n8n表单预览中逐字段填入即可触发全流程。
{
"company_name": "苏州澄光家具有限公司",
"client_email": "li.wei@chengguang-demo.example.com",
"situation": "线下门店客流稳定但官网三年未改版,移动端下单流失明显",
"services": "官网响应式改版、产品3D展示页、季度SEO维护",
"pricing": "总价人民币68000元,分三期支付",
"timeline": "8周交付,含2周验收缓冲",
"brand_color": "#2E5E4E"
}输入与输出示例
本站虚构演示,未实际运行该工作流;真实PDF版式取决于你编写的HTML模板。
输入
提交上述表单测试数据:苏州澄光家具有限公司,官网改版加SEO维护,总价人民币68000元分三期,8周交付,品牌色#2E5E4E。对应输出
Gmail草稿箱出现一封新草稿:收件人li.wei@chengguang-demo.example.com,主题“苏州澄光家具有限公司官网改版提案”,正文提到“8周交付含2周验收缓冲”与总价68000元分三期,附件为A4竖版PDF,页眉与章节标题使用#2E5E4E品牌色,报价表中的金额与表单填写完全一致;草稿保持未发送状态等待人工检查。做完检查这些
- 用测试表单提交后,Gmail草稿箱出现以客户邮箱为收件人、带PDF附件的草稿,且未自动发送
- PDF中所有价格、日期、工期数字与表单输入逐字一致,没有出现表单之外的数字
- 不填品牌色提交时,PDF使用CONFIG中的默认色而不是报错或留空
- 把APITemplate.io密钥改错提交一次,机构邮箱收到错误通知邮件且流程不产生草稿
容易卡住的地方
- X-API-KEY必须配成HTTP Header Auth凭据,放查询参数里会被APITemplate.io拒绝
- Gmail凭据若只授了发送权限而没有创建草稿权限,最后一步会失败
- 表单字段改名后提示词里的插入变量必须同步改,否则模型收到空字段会在对应位置写null
- 作者称APITemplate.io免费档够试用,但用量超额或Gemini调用仍可能计费,以各服务商页面为准
- HTML里引用外部字体或图片若需联网加载,PDF渲染环境可能取不到,建议内联关键样式
本站借助AI整理来源事实,独立编写中文操作指南与示例。示例不代表实际运行结果;来源效果尚未由本站独立复现。付费模板与模型、服务费用分别计算。
- 原文标题
- Generate branded PDF sales proposals with Gemini, APITemplate.io and Gmail
- 原作者
- Michael Cedeño
- 原始发布日期
- 2026-09-18T17:51:33.360Z
- 来源
- https://n8n.io/workflows/19725