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

2026-09-03 · 原文发布日

自动挽回沉默客户项目的跟进流程

流程每周一早上读Airtable里的客户项目表,算出距上次跟进的天数,超过10天未触达的项目由OpenAI按项目名和阶段写一封简短问候邮件,经Gmail发给客户,随后把外联记录写回Airtable的Touch Log、刷新last_touch,并在Discord发一行摘要;没有沉默项目就发一条平安消息。每周五下午再汇总项目健康指标,让OpenAI写周报经Gmail和Discord发出。

原文要点

原模板说明每周一09:00按工作流时区读取Airtable“Client Projects”,按last_touch算沉默天数,10+天未触达才进入挽回;缺失或畸形last_touch会邮件提醒内部地址。没有沉默项目则在Discord发all clear。对沉默项目用OpenAI生成提到项目名和阶段的简短邮件,经Gmail发给客户,回写Touch Log并更新last_touch,再发一行Discord摘要。每周五16:00汇总健康指标,由OpenAI写周报并发Gmail和Discord。

这次做成什么

做成“周一自动挽回沉默客户+周五健康周报”的双调度练习;不复制原文件,用Airtable两张表、OpenAI邮件提示词、Gmail/Discord输出和一条合成客户数据跑通分支,明确10天阈值与回写链路。

准备什么

  • Airtable base含Client Projects与Touch Log,字段至少project_id,status,last_touch,client_email,project_name,stage,log_id
  • Airtable personal access token,且base ID与两张表名在读取、追加、更新节点一致
  • Gmail OAuth2发件邮箱,内部告警收件人与周五摘要从收件人已确认
  • Discord webhook凭据和目标频道,可发all clear、单行摘要、周报
  • OpenAI API凭据,模型与温度在节点内选择,邮件风格可按品牌调整

具体怎么做

  1. 建Airtable结构

    Client Projects建project_id主键、status、project_name、stage、client_email、last_touch日期;Touch Log建log_id、project_id、sent_at、channel、subject、snippet。放两条合成项目,一条last_touch为15天前,一条为3天前。

  2. 周一检查与数据告警

    Schedule Trigger设周一09:00;读取Client Projects中status=active;Code节点算daysQuiet=floor((now-last_touch)/86400000)。last_touch为空或无法解析的项目进入内部Gmail告警分支,不进入客户外联。

  3. 沉默分支写邮件

    daysQuiet>=10才调用OpenAI生成subject/body,必须引用project_name和stage;Gmail发给client_email。发送成功才追加Touch Log,log_id用project_id+时间戳,随后更新Client Projects.last_touch为当天。

  4. 无沉默与每票摘要

    若过滤后数组为空,Discord发all clear;每成功发送一封,Discord发一行含project_id、天数、主题哈希后四位的摘要,避免把客户邮箱全文贴进频道。

  5. 周五健康周报

    第二个Schedule Trigger设周五16:00;读取活跃项目数、本周Touch Log数、仍>=10天沉默数、畸形日期数,OpenAI压缩成120字内周报,Gmail发内部、Discord发同文。

可直接复制的材料

OpenAI挽回邮件提示词

本站独立编写;{{$json.project}}与天数变量按你的表达式替换,模型名在OpenAI节点核对。

你是客户成功助理。根据输入JSON写一封简短中文 check-in 邮件,字段有project_name,stage,client_first_name,daysQuiet。要求:语气自然不催单;明确提到项目名和当前阶段;承认已约{{daysQuiet}}天未同步;给一个低负担下一步,例如回复1确认照常、回复2需要调整、回复3暂停;不要承诺交付日期,不要提折扣。只输出JSON:{"subject":"...","body":"..."},body不超过180字,可含换行。输入:{{$json.project}}

Airtable字段与Touch Log配置

本站示例配置;base/table真实名称、字段类型和权限需在你的Airtable核对。

{"bases":{"appDemoClientOps":{"tables":{"Client Projects":{"fields":{"project_id":"text primary","status":"singleSelect active|paused|done","project_name":"text","stage":"singleSelect discovery|build|review|launch","client_email":"email","last_touch":"date"}},"Touch Log":{"fields":{"log_id":"text primary","project_id":"link to Client Projects","sent_at":"dateTime","channel":"singleSelect gmail|discord|alert","subject":"text","snippet":"longText"}}}}},"n8nMapping":{"read":"status=active","quietIf":"daysQuiet>=10","badDateIf":"!last_touch || isNaN(Date.parse(last_touch))","writeBack":"Touch Log append then Client Projects.last_touch=today"}}

合成项目测试数据

练习以2026-09-02为now时,CP-1001约15天应触达,CP-1002约3天不触达,CP-1003走内部告警;邮箱均为虚构。

project_id,status,project_name,stage,client_email,last_touch
CP-1001,active,北岸咖啡会员小程序,review,li@example.test,2026-08-18
CP-1002,active,澄光瑜伽预约页,build,chen@example.test,2026-08-30
CP-1003,active,无日期异常项目,discovery,ops@example.test,

输入与输出示例

本站虚构演示,未实际发送邮件或写Airtable;输出用于核对字段对应。

输入

周一读取到CP-1001沉默15天且邮箱有效;CP-1002沉默3天;CP-1003的last_touch为空。

对应输出

CP-1001生成主题"北岸咖啡会员小程序 review 阶段小确认",正文提到15天未同步并给回复1/2/3选项;Gmail发出后Touch Log新增TL-CP-1001-202609020900,Client Projects.last_touch更新为2026-09-02,Discord发"check-in CP-1001 15d subj#a91f"。CP-1002不发,CP-1003只发内部数据告警。

做完检查这些

  • 周一09:00触发后,status非active或last_touch在10天内的项目不进入OpenAI节点
  • last_touch为空/畸形的项目只进入内部告警,不会向client_email发信
  • 每封客户邮件发送成功后才有Touch Log追加,随后才更新last_touch,顺序不能反
  • 安静周Discord只收到all clear,周五16:00另收到含活跃数、本周触达数、仍沉默数的摘要

容易卡住的地方

  • 时区不一致会让周一09:00和10天判定漂移,统一用workflow timezone并在Code里显式取当天零点
  • 先更新last_touch再发信失败会造成假触达,必须发送成功后才回写
  • Discord摘要别放完整邮件正文和客户隐私,只放行级状态
  • OpenAI、Gmail、Airtable、Discord均可能有配额或费用,模板免费不代表服务免费
  • last_touch若用字符串而非日期字段,解析分支会误报,需统一字段类型

原文与作者资料 ↗

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

原文标题
Revive quiet client projects with OpenAI, Airtable, Gmail and Discord
原作者
Khairul Muhtadin
原始发布日期
2026-09-03T12:35:19.890Z
来源
https://n8n.io/workflows/19123