AI PLAY玩法更新持续收录
← 回到更新流

2026-10-10 · 原文发布日

邮件进来自动开出带编号的PDF发票

这个n8n模板把开票变成自动流程:每分钟轮询Gmail里主题为发票或订单请求的未读邮件,用Claude从正文提取客户、账单信息和明细行,校验必填字段与币种并以整数分为单位核算小计、税额和总额;无效或超限的请求转去Sheets复审标签页并邮件通知主人。通过的邮件会查发票日志去重、分配年度递增的发票号、生成HTML,再用MintPDF社区节点渲染成A4 PDF,存档到Google Drive、在原邮件线程回复附上PDF,并把明细和链接写入Sheets日志。卖家信息、税率、币种、审批上限都在设置节点里改。模板免费。

原文要点

Peter Hallander发布的免费n8n模板:每分钟轮询Gmail中主题匹配发票/订单请求的未读邮件,用Anthropic Claude提取客户、账单信息和明细行,校验必填字段与币种,以整数分为单位算小计、税额、总额;无效或超审批上限的请求转Google Sheets复审标签页并邮件通知主人。通过后查发票日志去重、分配年度递增发票号、生成HTML,用MintPDF社区节点渲染A4 PDF,存档Drive、回复原线程并写入Sheets日志。卖家信息、税率、币种、上限都在设置节点改。

这次做成什么

装好社区节点和四组凭据后,用一封虚构订单邮件走完'提取→校验→编号→生成PDF→回复→存档→记日志'全流程,并验证无效邮件被正确转入复审。

准备什么

  • 自托管n8n(安装社区节点需要)或支持社区节点的n8n Cloud
  • MintPDF API密钥(免费计划每月100份PDF)
  • Gmail、Google Sheets、Google Drive、Anthropic四组凭据
  • 含Invoices与Review两个标签页且列名匹配模板的Google表格

具体怎么做

  1. 安装MintPDF社区节点并配密钥

    在n8n设置中安装n8n-nodes-mintpdf社区节点,然后在Credentials里新建MintPDF API凭据填入密钥。Cloud实例需确认允许社区节点。

  2. 配齐四组凭据和两处ID

    分别新建Gmail、Google Sheets、Google Drive、Anthropic凭据。在'Invoice settings'节点填入卖家名称地址、主人邮箱、币种、税率、审批上限、付款条件,并把Google Sheet ID和Drive文件夹ID换成你自己的。

  3. 建好Sheets两个标签页

    在测试表格建Invoices和Review两个标签页,列名严格按模板追加的字段设置(发票号、日期、客户、金额、Drive链接等)。列名不匹配会写入失败。

  4. 发一封虚构测试邮件

    用另一个邮箱向受监控的Gmail发一封主题为'Invoice request'的邮件,正文用下方虚构示例(含客户名、两行明细、单价数量)。等轮询触发或手动执行,观察Claude提取出的结构化数据。

  5. 验证两条分支

    正常邮件:确认拿到年度递增发票号、Drive里出现A4 PDF、原线程收到带附件回复、Invoices页新增一行。再发一封缺明细或金额超审批上限的邮件,确认它进入Review标签页且主人收到通知邮件。

  6. 核对金额口径

    检查小计、税额、总额是否按整数分计算无浮点误差,重复发送同一封邮件确认被日志去重跳过,不再分配新发票号。

可直接复制的材料

Claude账单信息提取提示词

本站独立编写,币种集合和字段名需在模板实际节点中核对后调整。

你是开票助手。请从下面这封邮件正文中提取开票信息,只返回一个合法JSON对象,不输出其他文字。
格式:{"customer_name":"","customer_email":"","billing_address":"","currency":"EUR","line_items":[{"description":"","quantity":0,"unit_price_cents":0}]}
规则:金额一律换算为整数分;币种只接受EUR/USD/GBP,其他币种返回{"error":"unsupported_currency"};缺少客户名或明细时返回{"error":"missing_required_fields"}。
邮件正文:{{ $json.body }}

Invoice settings配置示例

本站虚构示例;approval_limit_cents=500000即总额超5000.00欧元转人工复审,字段名以模板设置节点为准。

{
  "seller_name": "示例设计工作室",
  "seller_address": "示例市示例路1号",
  "owner_email": "owner@example.com",
  "currency": "EUR",
  "tax_rate_percent": 21,
  "approval_limit_cents": 500000,
  "payment_terms": "30天内付款",
  "google_sheet_id": "替换为你的表格ID",
  "drive_folder_id": "替换为你的文件夹ID"
}

输入与输出示例

本站虚构演示,非实际运行结果;发票号接续取决于日志中已有行数。

输入

测试邮件正文:'你好,请为Acme咨询公司开票:品牌Logo设计1项,单价800.00欧元;名片排版2项,单价150.00欧元。账单地址:示例大道10号。'

对应输出

提取结果:{"customer_name":"Acme咨询公司","currency":"EUR","line_items":[{"description":"品牌Logo设计","quantity":1,"unit_price_cents":80000},{"description":"名片排版","quantity":2,"unit_price_cents":15000}]};小计110000分、税额23100分(21%)、总额133100分即1,331.00欧元,分配发票号2026-0007,Drive存档PDF并回复原线程。

做完检查这些

  • MintPDF渲染成功,Drive目标文件夹出现排版正确的A4 PDF
  • 原邮件线程收到带PDF附件的自动回复,Invoices标签页新增含Drive链接的一行
  • 重复邮件被日志去重跳过,不产生第二个发票号
  • 缺明细或超审批上限的邮件进入Review标签页并触发主人通知邮件

容易卡住的地方

  • MintPDF免费计划每月100份PDF,超出需付费或渲染失败(模板会邮件通知主人)
  • 审批上限、税率、币种都在设置节点硬编码,换业务时务必同步改
  • Sheets列名与模板追加字段不一致会导致日志写入失败
  • Claude提取可能漏行或错读币种,建议先小额测试并对Claude节点输出做人工抽查

原文与作者资料 ↗

本站借助AI整理来源事实,独立编写中文操作指南与示例。示例不代表实际运行结果;来源效果尚未由本站独立复现。付费模板与模型、服务费用分别计算。

原文标题
Create numbered PDF invoices from Gmail with Claude, MintPDF, and Google Sheets
原作者
Peter Hallander
原始发布日期
2026-10-10T07:54:38.019Z
来源
https://n8n.io/workflows/20731