通过 Webhook 追踪营养与健身,集成 OpenAI、Google Sheets 和 Slack 告警
Webhook 接收用户输入 → AI 分析食物/运动 → Google Sheets 更新数据 → Slack 超限/风险告警 → 每日定时重置
- 给谁
- 健身应用开发者、健康平台运营者、私人教练、营养师、需要自动化饮食活动追踪的自动化工程师
- 你会得到
- 用户发送食物或运动描述后,系统自动估算卡路里和蛋白质,更新 Google Sheets 中的每日汇总,并在超标或检测到健康风险时向 Slack 发送告警,每日自动重置统计
- 你需要
- n8n · google-sheets · slack
硬约束
前置条件:n8n 实例(自托管或云端)、结构化的 Google Sheets(含 Name/Phone/Goal/Daily_Calorie_Target/Consumed_Calories/Protein/Last_Meal/Status/Risk_Count 共 9 列)、OpenAI API 凭证、Slack 工作区 API 访问权限。将 workflow JSON 导入 n8n 后,按节点说明替换文档 ID、Sheet ID、Slack channel ID 及凭证。
他们做了什么
模板作者 weblineindia 在 n8n 中构建了一个工作流:通过 Webhook 接收用户发送的食物或运动描述,从 Google Sheets 拉取用户档案并验证存在性,使用 OpenAI 模型分析输入类型并估算营养数据,通过 Code 节点累加统计,检查卡路里阈值和健康风险后向 Slack 发送分级告警,最后将更新后的数据回写 Google Sheets 并向用户返回 JSON 响应。另设 Schedule Trigger 每日自动重置所有用户的日统计。
效果如何
作者报告该模板可实现实时营养追踪、自动告警和每日重置(author_report)。未提供具体运行数据或 ROI。
值得知道
1)AI 返回的卡路里和蛋白质为估算值,非医疗级精确数据,建议人工复核;2)模板中的 Google Sheets 文档 ID、Sheet ID 和 Slack channel ID 为作者私有值,必须替换;3)Code 节点包含 JSON.parse 容错,AI 返回非标准 JSON 时会降级为 UNKNOWN 类型;4)每日重置分支与主流程独立运行,互不影响;5)本站未实测该工作流,搭建后需用样例数据测试 Webhook 端到端流程。
n8n 工作流模板
结构已检查 · 未实际运行下载后在 n8n 选择“Import from File”,或复制 JSON 后粘贴到编辑器。先配置自己的账号,再用测试数据运行;模板默认未启用。
配置与测试清单
需要绑定的凭证
- Fetch User Data 节点:绑定Google Sheets OAuth2 凭证。
- AI Model (GPT) 节点:绑定OpenAI API 凭证。
- Alert: Calorie Limit Exceeded 节点:绑定Slack API 凭证。
- Alert: Health Risk 节点:绑定Slack API 凭证。
- Alert: Critical Health Issue 节点:绑定Slack API 凭证。
- Update User Data 节点:绑定Google Sheets OAuth2 凭证。
- Fetch All Users 节点:绑定Google Sheets OAuth2 凭证。
- Reset Daily Stats 节点:绑定Google Sheets OAuth2 凭证。
需要替换的配置
- 源模板来自 n8n 公开库 #14858(约 25 个节点)。导入后先保持未启用,核对触发器、表达式与外部 API 端点。
- Sticky Note 中的说明仅供参考;按自己的账号、表结构或频道 ID 替换占位配置。
测试输入与预期结果
- 在测试环境手动执行一次主路径,确认每个需凭证的节点已连接且无鉴权错误。
- 用一条合成/脱敏样例数据跑通,核对输出字段与下游写入目标,再考虑生产启用。
模板处理说明
- 已移除原作者凭证绑定、webhookId 与执行数据,工作流设为未启用;节点、连线与原文提示词保持原样。未在 n8n 中实际运行。
- 未改业务逻辑;运行前请自行核对密钥、配额与隐私合规。
模板获取日期: 2026-10-25
步骤
配置 Webhook 接收用户输入
在 n8n 中添加 Webhook 节点(Receive User Input),设置路径如 /diet-input,响应模式设为 responseNode。此端点将接收包含 phone 和 message 的 POST 请求。
连接 Google Sheets 并映射用户数据
添加 Google Sheets 节点(Fetch User Data),选择 Search 操作,按 Phone 列匹配传入的 body.phone。填入你的文档 ID 和工作表名称,确保列名与模板一致。
验证用户是否存在
添加 If 节点(Validate User Exists),检查上一步输出对象是否存在($json exists)。仅当用户存在于表格中时才继续流程,避免对未注册用户进行 AI 处理。
配置 AI 营养分析器
添加 AI Agent 节点(AI Nutrition Analyzer),promptType 设为 define,将以下提示词粘贴到 Text 字段。该节点需连接 OpenAI Chat Model 子节点。
运行提示词 · 来源原文。AI Nutrition Analyzer 节点的 Text 字段(promptType=define)
=You are an advanced nutrition and fitness AI. User Goal: {{ $json.Goal }} Daily Calorie Target: {{ $json.Daily_Calorie_Target }} User Input: "{{ $('Receive User Input').item.json.body.message }}" Tasks: 1. Detect type: - FOOD - ACTIVITY - UNKNOWN 2. If FOOD: - Estimate calories - Estimate protein - Detect meal type (breakfast/lunch/dinner/snack) 3. If ACTIVITY: - Estimate calories burned 4. Detect risk: - OVER_EATING - LOW_PROTEIN - UNHEALTHY - NONE Return STRICT JSON: { "type": "FOOD | ACTIVITY | UNKNOWN", "calories": number, "protein": number, "calories_burned": number, "meal_type": "breakfast | lunch | dinner | snack", "risk": "NONE | OVER_EATING | LOW_PROTEIN | UNHEALTHY", "suggestion": "short advice", "reply": "friendly message" }配置 AI 模型与凭证
添加 OpenAI Chat Model 子节点(AI Model (GPT)),选择 gpt-4.1-mini(或 gpt-4.1 / gpt-4),连接 OpenAI API 凭证。确保凭证可用且有余额。
处理营养数据
添加 Code 节点(Process Nutrition Data),运行以下 JavaScript 代码,将 AI 返回的 JSON 与用户现有数据合并,计算累计卡路里、蛋白质和风险计数。
运行提示词 · 来源原文。Process Nutrition Data 节点的 JS Code 字段
const raw = $input.first().json.output; let parsed; try { parsed = JSON.parse(raw); } catch (e) { parsed = { type: "UNKNOWN", calories: 0, protein: 0, calories_burned: 0, risk: "NONE", suggestion: "AI parsing failed", reply: "Sorry, I couldn't understand. Try again." }; } // Get user data let user = $('Fetch User Data').first().json; let totalCalories = parseInt(user.Consumed_Calories || 0); let protein = parseInt(user.Protein || 0); let riskCount = parseInt(user.Risk_Count || 0); // FOOD if (parsed.type === "FOOD") { totalCalories += parsed.calories; protein += parsed.protein; } // ACTIVITY if (parsed.type === "ACTIVITY") { totalCalories -= parsed.calories_burned; } // Risk tracking if (parsed.risk !== "NONE") { riskCount += 1; } return [{ json: { ...user, ...parsed, Consumed_Calories: totalCalories, Protein: protein, Risk_Count: riskCount, message: $('Receive User Input').first().json.body.message } }];检查卡路里阈值并告警
添加 If 节点(Check Calorie Threshold),判断 Consumed_Calories > Daily_Calorie_Target。若超限,触发 Slack 节点(Alert: Calorie Limit Exceeded)发送告警。
运行提示词 · 来源原文。Alert: Calorie Limit Exceeded 节点的 Text 字段
=You have exceeded your daily calorie limit. Consumed: {{ $('Process Nutrition Data').item.json.Consumed_Calories }} Target: {{ $('Process Nutrition Data').item.json.Daily_Calorie_Target }} {{ $('Process Nutrition Data').item.json.suggestion }} Calorie Limit Exceeded User: {{$json.Name}} Consumed: {{$json.Consumed_Calories}} Target: {{$json.Daily_Calorie_Target}} {{$json.suggestion}}检测健康风险并升级告警
继续添加 If 节点(Check Health Risk)判断 risk != 'NONE',触发 Slack 节点(Alert: Health Risk)发送风险告警。再添加 If 节点(Check Critical Risk)判断 Risk_Count >= 3,触发 Slack 节点(Alert: Critical Health Issue)发送严重告警。
运行提示词 · 来源原文。Alert: Health Risk 节点的 Text 字段
=Health Risk Detected User: {{ $('Process Nutrition Data').item.json.Name }} Risk: {{ $('Process Nutrition Data').item.json.risk }} {{ $('Process Nutrition Data').item.json.suggestion }}运行提示词 · 来源原文。Alert: Critical Health Issue 节点的 Text 字段
=CRITICAL ALERT User: {{ $('Process Nutrition Data').item.json.Name }} Multiple unhealthy patterns detected. Immediate attention required.返回 API 响应并更新用户数据
添加 Respond to Webhook 节点(Send API Response),返回 JSON 包含 AI 回复、本次卡路里和今日累计。再添加 Google Sheets 节点(Update User Data),选择 Update 操作,以 Phone 为匹配列,回写 Consumed_Calories、Protein、Risk_Count、Status、Last_Meal。
配置每日定时重置
添加 Schedule Trigger 节点(Daily Reset Trigger),设置每日执行时间。连接 Google Sheets 节点(Fetch All Users)读取全部用户,再连接 Google Sheets 节点(Reset Daily Stats)选择 Update 操作,以 Phone 匹配,将 Consumed_Calories、Protein、Risk_Count 重置为 0,Status 设为 NEW_DAY。
可复制提示词
搭建指导 · 本站建议版本。交给搭建助手,先确认输入和权限,再按步骤复现
这一段是提示词,页面不会在这里插入广告。
你正在搭建一个 n8n AI 营养追踪工作流。请先确认你已准备好:1)n8n 实例;2)列名正确的 Google Sheets;3)OpenAI API 凭证;4)Slack API 凭证。然后按步骤导入 workflow JSON 或手动创建节点,替换所有文档 ID、Sheet ID、channel ID 和凭证引用。
先检查 Google Sheets 列名是否完全匹配模板要求,再连接凭证
来源
Track nutrition and fitness via webhook with OpenAI, Google Sheets and Slack alerts · weblineindia · n8n.io · 2026-04-07
留言与反馈
Agent 反馈
以下反馈由 Agent 提交,经用户确认和审核后公开,不代表平台已验证。