2026-09-26 · 原文发布日
健身房流失预警:每周算出高风险会员自动发短信挽回
每周定时从Google Sheets拉活跃会员和出勤记录,计算近30天对前30天的到访变化、出勤降幅、距今未到店天数,合成0~100流失风险分;筛出有流失信号且分数≥60的会员,查档案后把资料和流失指标发给Gemini,产出内部分析、300字以内的挽回短信和是否可发短信的标记;可发的经Twilio(SMS/WhatsApp)发出,并把内容、时间、会员ID、风险分记入触达日志表。阈值和频率可调。模板免费。
原文要点
n8n模板(iamvaar,免费)每周定时运行:从Google Sheets的Members标签拉活跃会员、从Attendance标签取出勤记录,计算近30天对前30天的到访变化、出勤降幅、距今未到店天数,合成封顶0~100的流失风险分;筛出有流失信号且分数≥60的会员,查MemberProfiles档案后连同指标发给Google Gemini,产出内部分析、不超过300字符的挽回短信和可否发短信标记;可发的经Twilio(SMS/MMS/WhatsApp)发出,并把短信内容、时间戳、会员ID、风险分追加到OutreachLog标签。需配Google Sheets服务账号、Gemini(PaLM)凭据、Twilio凭据与From号码,阈值60和周频可调。附YouTube讲解视频。
这次做成什么
搭一条"每周自动算出高风险会员并自动发短信挽回"的流水线。本站练习方案:先往四张表里灌合成数据手跑一遍,核对风险分与≥60筛选分支,再接Gemini看短信文案,最后用Twilio测试号码验证发送与日志追加,确认无误后再放成每周定时。
准备什么
- 一个可用的n8n实例(自托管或n8n Cloud)并已导入模板页19961的免费工作流
- Google账号:能建服务账号并下载JSON密钥,且能把表格共享给服务账号邮箱
- Google Gemini(PaLM)API密钥;Gemini调用可能产生费用
- Twilio账号、可用的From号码;试用账号只能发到已验证的号码
- 一张自建Google表格,含Members/Attendance/MemberProfiles/OutreachLog四个标签页
具体怎么做
导入模板并核对触发器
在n8n模板页19961打开免费工作流导入自己的实例。找到Schedule Trigger节点,保持每周一次(如周一09:00,cron 0 9 * * 1),先改成手动执行以便调试,全部跑通后再打开定时。
建表并接Google Sheets凭据
新建表格"Gym Member Management & Outreach Tracker",建四个标签页:Members(列member_id、status、join_date、phone)、Attendance(member_id、visit_date)、MemberProfiles(member_id、name、plan等)、OutreachLog(member_id、risk_score、message、sent_at)。在n8n凭据里建Google Sheets服务账号,把表格共享给服务账号邮箱,并在各Google Sheets节点里选好文档ID与对应标签页。
用合成数据验证风险分计算
把材料里的合成CSV灌进Members和Attendance。在计算节点确认字段映射(近30天到访、前30天到访、降幅、未到店天数)。本站练习版公式:风险分=min(100, 降幅%×0.6 + 未到店天数×1.2 + 近30天0次则加20),原模板公式以导入后节点实际逻辑为准。手动执行一次,确认降幅75%的M0102得67分进入下一分支,而得40分的会员被跳过。
接Gemini生成短信并解析分支
在凭据中添加Gemini(PaLM) API key,AI Agent节点的提示词用材料中的全文,把会员档案与指标作为JSON传入。确认输出解析出diagnosis/sms/eligible三个字段,且只有eligible=true才流向Twilio节点,否则直接结束。
接Twilio发送并写日志
添加Twilio凭据,填From号码,确认工作流的消息类型(SMS还是WhatsApp)与Twilio后台配置一致。先把收件号码改为Twilio已验证的测试号码手动跑一条;发送成功后检查OutreachLog是否追加了member_id、风险分、短信内容和时间戳四列。全部通过后把触发器调回每周定时。
可直接复制的材料
发给Gemini的短信生成提示词(本站编写)
本站独立编写的练习提示词,非原模板自带内容;{member}处由工作流填入会员JSON,店名请替换成自己的。
你是健身房会员留存运营助手。下面给你一名会员的档案与出勤指标JSON:
{member}
指标含义:visits_last30=近30天到店次数,visits_prior30=前30天到店次数,drop_pct=出勤降幅百分比,days_since_last=距今未到店天数,risk_score=0~100流失风险分。
请只输出严格JSON,不要输出任何其他文字:
{"diagnosis":"给内部运营看的一句话流失原因分析","sms":"不超过300字符的中文挽回短信,语气友好、不强迫、不含虚假优惠承诺,署名【乐动健身】","eligible":true或false}
规则:phone为空或近30天到店为0且距今超过45天时eligible必须为false。合成测试数据:Members与Attendance
全部为虚构号码与日期,仅供隔离测试;M0102近30天2次、前30天8次、未到店18天;M0101出勤稳定应被筛掉;M0103近30天0次用于验证加成分支。
Members标签页(CSV):
member_id,status,join_date,phone
M0101,active,2025-03-12,13800000001
M0102,active,2024-11-05,13800000002
M0103,active,2026-01-20,13800000003
Attendance标签页(CSV,设"今天"=2026-09-26,近30天=8/28~9/26,前30天=7/29~8/27):
member_id,visit_date
M0102,2026-08-02
M0102,2026-08-06
M0102,2026-08-10
M0102,2026-08-13
M0102,2026-08-17
M0102,2026-08-20
M0102,2026-08-24
M0102,2026-08-27
M0102,2026-09-01
M0102,2026-09-08
M0101,2026-09-24
M0101,2026-09-21
M0101,2026-09-18
M0101,2026-09-14
M0101,2026-09-10
M0101,2026-09-05
M0101,2026-09-02
M0101,2026-08-30
M0103,2026-08-29
OutreachLog标签页只需表头:member_id,risk_score,message,sent_at阈值与调度练习配置
本站练习设定值,非原模板导出配置;导入模板后以工作流节点里的实际公式与字段为准,阈值和周频可按留存政策调整。
{
"scheduleCron": "0 9 * * 1",
"lookbackDays": 30,
"riskThreshold": 60,
"riskFormulaPractice": "min(100, drop_pct*0.6 + days_since_last*1.2 + (visits_last30==0 ? 20 : 0))",
"messageType": "sms",
"smsMaxChars": 300
}输入与输出示例
本站虚构演示,数字由练习公式推得,非实跑结果;实际得分以原模板计算节点为准。
输入
按上表数据手跑一次:会员M0102(13800000002为Twilio已验证测试号),前30天到店8次、近30天到店2次、最后到店2026-09-08,距"今天"18天。对应输出
降幅=(8-2)/8=75%;风险分=75×0.6+18×1.2+0=66.6≈67≥60,进入Gemini分支。示意Gemini返回:{"diagnosis":"近一月出勤骤降75%,疑似动力流失","sms":"【乐动健身】好久不见!您的训练节奏我们帮您留着,本周到店可约一次免费体测,期待见到您。","eligible":true}。Twilio向测试号发出该短信,OutreachLog追加一行:M0102,67,(上述短信),2026-09-26T09:00:12Z。M0101得分低于60被跳过。做完检查这些
- 手动执行一次后,M0102算出67分且只有它进入Gemini分支,M0101与低分会员被跳过
- Gemini输出能被解析出diagnosis/sms/eligible三字段,eligible=false时不触发Twilio节点
- 短信成功发到Twilio已验证测试号,且OutreachLog新增一行含member_id、风险分、内容、时间戳
- 把触发器改回每周cron后,下一次到点能在执行日志看到一次成功运行
容易卡住的地方
- 风险公式与60阈值在不同模板版本里可能不同,导入后以计算节点实际逻辑为准,别照抄本站练习公式当原作实现
- 服务账号邮箱未共享表格会直接报权限错误,四个标签页名与列名要和节点配置一致
- Twilio试用账号只能发到已验证号码,WhatsApp需单独申请模板并通过审核
- Gemini若未输出严格JSON会导致解析节点报错,提示词里必须强调只输出JSON
- 调试期务必用合成数据和测试号码,不要向真实会员手机发测试短信
- 模板本身免费,但Gemini调用与Twilio短信按各自资费另计
本站借助AI整理来源事实,独立编写中文操作指南与示例。示例不代表实际运行结果;来源效果尚未由本站独立复现。付费模板与模型、服务费用分别计算。
- 原文标题
- Rescue at-risk gym members using Google Sheets, Gemini, and Twilio SMS
- 原作者
- iamvaar
- 原始发布日期
- 2026-09-26T13:30:45.038Z
- 来源
- https://n8n.io/workflows/19961