ChatGPT生活健康AI 评分 · 82/100AI 辅助编辑·未发现明显提示词注入风险n8n.io

用 n8n 每周自动发送 GPT-4o-mini 个性化宠物健康建议邮件

Google Sheets 宠物数据 → 过滤与年龄计算 → GPT-4o-mini 生成气候相关建议 → Gmail 发送并更新记录

有一点经验步骤流程提示词贴士
给谁
宠物护理机构、兽医诊所、宠物订阅服务、动物收容所
你会得到
每周自动向宠物主人发送基于宠物类型、年龄和所在地的 AI 生成健康建议邮件
你需要
n8n · gmail · google-sheets

硬约束

需要:n8n 实例;Google Sheets OAuth2 凭证;Gmail OAuth2 凭证;OpenAI API key。两张 Google 表格:Pets(主数据)和 Email_Log(发送记录)。默认每周一上午 9 点触发。建议先添加 2-3 条测试数据并手动测试。

他们做了什么

作者 mssporto 在 n8n.io 发布了该工作流模板。模板通过 Schedule Trigger 每周一上午 9 点自动触发,从 Google Sheets 的 Pets 表加载 Status = Active 的宠物数据,经代码节点过滤出 7 天内未发送邮件的记录,计算宠物月龄并生成可读年龄,再调用 GPT-4o-mini 生成符合 AAHA/WSAVA 标准、考虑当地季节的气候相关兽医建议,最后通过 Gmail 发送个性化 HTML 邮件,更新 Pets 表的 Last_Email_Sent 时间戳,并将发送记录写入 Email_Log 表。工作流还包含一个默认禁用的 SendGrid 节点作为备选邮件方案。

效果如何

该模板在 n8n.io 上获得 260 次查看。作者声明可生成基于宠物类型、年龄和所在地的个性化建议,并提供了英国、澳大利亚、加拿大等地的季节性示例。模板支持切换 SendGrid 作为邮件服务商,且作者说明该工作流可扩展至植物护理、育儿里程碑、健身指导、语言学习等场景。(来源:作者自述/模板说明)

值得知道

仅选择一个邮件服务商,不可同时启用 Gmail 和 SendGrid。国家代码必须使用 ISO 格式(如 US、UK、AU、CA)。AI 建议仅供参考,涉及医疗问题应咨询兽医。年龄计算使用 30.44 天/月的近似值,可能存在 1 天以内误差。SendGrid 节点的 templateId 在 workflow.json 中为占位符 d-xxxxxx,需替换为真实值。本站未实测该工作流,搭建前建议先用 1 条测试数据手动验证邮件内容和表格更新。

n8n 工作流模板

结构已检查 · 未实际运行

下载后在 n8n 选择“Import from File”,或复制 JSON 后粘贴到编辑器。先配置自己的账号,再用测试数据运行;模板默认未启用。

配置与测试清单

需要绑定的凭证

  • Generate Personalized Tip 节点:绑定OpenAI API 凭证。
  • Send Health Tip using Gmail 节点:绑定Gmail OAuth2 凭证。
  • Update Last_Email_Sent Date 节点:绑定Google Sheets OAuth2 凭证。
  • Log to Email_Log Sheet 节点:绑定Google Sheets OAuth2 凭证。
  • Load Pet Info 节点:绑定Google Sheets OAuth2 凭证。

需要替换的配置

  • 源模板来自 n8n 公开库 #9714(约 19 个节点)。导入后先保持未启用,核对触发器、表达式与外部 API 端点。
  • Sticky Note 中的说明仅供参考;按自己的账号、表结构或频道 ID 替换占位配置。

测试输入与预期结果

  • 在测试环境手动执行一次主路径,确认每个需凭证的节点已连接且无鉴权错误。
  • 用一条合成/脱敏样例数据跑通,核对输出字段与下游写入目标,再考虑生产启用。

模板处理说明

  • 已移除原作者凭证绑定、webhookId 与执行数据,工作流设为未启用;节点、连线与原文提示词保持原样。未在 n8n 中实际运行。
  • 未改业务逻辑;运行前请自行核对密钥、配额与隐私合规。

模板获取日期: 2026-10-25

步骤

  1. 准备数据表与测试数据

    在 Google Sheets 创建两张工作表。Pets 表包含列:Email、Owner_Name、Pet_Name、Pet_Type、Date_of_Birth、Country (ISO)、Status、Last_Email_Sent。Email_Log 表包含列:Timestamp、Parent_Email、Pet_Name、Tip_Category、Status。在 Pets 表中添加 2-3 条测试数据,Status 设为 Active,Country 使用 ISO 代码(如 US、UK、AU)。

  2. 导入工作流并配置凭证与表格 ID

    在 n8n 中导入该工作流模板。添加三类凭证:openAiApi(OpenAI API key)、gmailOAuth2(Gmail 授权)、googleSheetsOAuth2Api(Google Sheets 授权)。然后更新三个节点的表格 ID:「Load Pet Info」节点设置你的 Pets 表 documentId;「Update Last_Email_Sent Date」节点设置同一 Pets 表 ID;「Log to Email_Log Sheet」节点设置 Email_Log 表 ID。

    搭建指导 · 本站建议版本。搭建助手启动词;用于确认输入、权限和节点配置

    请根据以下材料帮我搭建 n8n 工作流:
    1. 来源模板:https://n8n.io/workflows/9714/
    2. 需要凭证:OpenAI API key、Gmail OAuth2、Google Sheets OAuth2
    3. 需要两张 Google 表格:Pets(Email, Owner_Name, Pet_Name, Pet_Type, Date_of_Birth, Country (ISO), Status, Last_Email_Sent)和 Email_Log(Timestamp, Parent_Email, Pet_Name, Tip_Category, Status)
    4. 导入后更新三个 Google Sheets 节点的 documentId 为你的实际表格 ID
    5. 先手动测试 1 条 Active 宠物数据,确认邮件内容正确后再启用每周一 9am 的定时触发器
    
    注意:仅选择一个邮件服务商(默认 Gmail,如需 SendGrid 需禁用 Gmail 节点并启用 SendGrid 节点)。
  3. 设置过滤规则与年龄计算

    工作流自动执行以下数据处理:「Filter: Active + 7-Day Check」代码节点过滤 Status = Active 且 Last_Email_Sent 为空或超过 7 天的记录;「Calculate Pet Age」代码节点将 Date_of_Birth 转换为可读年龄(如 "2 years and 3 months"),并添加 pet_age_months 和 pet_age 字段。

    运行提示词 · 来源原文。Filter: Active + 7-Day Check 节点的 JS Code 字段

    const items = $input.all();
    
    return items.filter(item => {
      // Must be Active status
      if (item.json.Status !== 'Active') return false;
      
      // Never sent email = include
      if (!item.json.Last_Email_Sent) return true;
      
      // Sent >7 days ago = include
      const daysSince = (Date.now() - new Date(item.json.Last_Email_Sent)) / (1000*60*60*24);
      return daysSince > 7;
    });

    运行提示词 · 来源原文。Calculate Pet Age 节点的 JS Code 字段

    const items = $input.all();
    
    return items.map(item => {
      const birthDate = new Date(item.json.Date_of_Birth);
      const ageInMs = Date.now() - birthDate;
      const ageMonths = Math.floor(ageInMs / (1000 * 60 * 60 * 24 * 30.44));
      const ageYears = Math.floor(ageMonths / 12);
      const remainingMonths = ageMonths % 12;
      
      let petAge;
      if (ageMonths < 12) {
        petAge = `${ageMonths} month${ageMonths !== 1 ? 's' : ''}`;
      } else if (remainingMonths === 0) {
        petAge = `${ageYears} year${ageYears !== 1 ? 's' : ''}`;
      } else {
        petAge = `${ageYears} year${ageYears !== 1 ? 's' : ''} and ${remainingMonths} month${remainingMonths !== 1 ? 's' : ''}`;
      }
      
      return {
        json: {
          ...item.json,
          pet_age_months: ageMonths,
          pet_age: petAge
        }
      };
    });
  4. 配置 AI 提示词生成个性化建议

    「Generate Personalized Tip」节点调用 GPT-4o-mini(temperature=0.7)。System 消息设定兽医健康专家角色,要求符合 AAHA/WSAVA 标准、按生命周期定制、包含季节性考虑。User 消息传入宠物名、类型、月龄、国家 ISO 代码和当前日期,要求返回 JSON 格式:topic、headline、content、category。

    运行提示词 · 来源原文。Generate Personalized Tip 节点的 system message 字段

    =You are a veterinary wellness expert providing evidence-based weekly tips for pet owners.
    
    Guidelines:
    - Align with AAHA/WSAVA veterinary standards
    - Tailor advice to pet type and life stage
    - Include seasonal considerations ({{ $now.format('MMMM') }})
    - Be warm but professional
    - Always recommend vet consultation for medical concerns

    运行提示词 · 来源原文。Generate Personalized Tip 节点的 user message 字段

    =Generate a personalized pet care tip for:
    - Pet name: {{ $json.Pet_Name }}
    - Pet type: {{ $json.Pet_Type }}
    - Pet age: {{ $json.pet_age_months }} months
    - Location: Country ISO is {{ $json['Country (ISO)'] }}
    - Current date: {{ $now.format('MMMM YYYY') }}
    
    Requirements:
    - Veterinary-aligned and breed-appropriate advice
    - **Climate-specific** (consider hemisphere, season in {{ $json['Country (ISO)'] }})
    - Region-specific risks (parasites, weather hazards)
    - Actionable advice (2-3 sentences)
    - Brief headline (under 10 words)
    - Life stage: puppy/kitten (<12mo), adult (1-7yr), senior (7+yr)
    
    Examples:
    - UK October: rain gear, indoor exercise, fireworks anxiety
    - Australia October: spring heat, snake awareness, hydration
    - Canada October: early cold prep, paw protection
    
    Format as JSON:
    {
      "topic": "Brief topic title",
      "headline": "Engaging headline for {{ $json.Pet_Name }}",
      "content": "2-3 sentence tip with location-specific advice",
      "category": "Nutrition/Exercise/Health/Behavior/Safety"
    }
  5. 配置邮件发送、表格更新与日志记录

    【首次测试安全】首次测试前禁用「Send Health Tip using Gmail」,或把 sendTo 改为自己的测试邮箱,确认「Format Email Data」输出无误后再正式发送。「Format Email Data」代码节点解析 GPT 返回的 JSON,提取 topic、headline、content、category,并与宠物数据合并为统一格式。「Send Health Tip using Gmail」节点发送 HTML 邮件,收件人为 {{ $json.email }},主题为 {{ $json.tip_headline }},正文包含称呼、建议标题、内容和落款。发送后,「Update Last_Email_Sent Date」节点以 Email 为匹配列更新 Pets 表的 Last_Email_Sent 为当前时间戳。「Log to Email_Log Sheet」节点将 Timestamp、Parent_Email、Pet_Name、Tip_Category、Status 写入 Email_Log 表。最后「Wait 2 Seconds」节点控制处理节奏。

    运行提示词 · 来源原文。Format Email Data 节点的 JS Code 字段

    // Get pet data from Calculate Pet Age node
    const petData = $('Calculate Pet Age').item.json;
    const aiResponse = $json.message.content;
    
    const cleanResponse = aiResponse.replace(/```json\n?/g, '').replace(/```\n?/g, '').trim();
    
    let tipData;
    try {
      tipData = JSON.parse(cleanResponse);
    } catch (e) {
      tipData = {
        topic: 'Weekly Pet Care Tip',
        headline: `Important advice for ${petData.Pet_Name}`,
        content: cleanResponse,
        category: 'General'
      };
    }
    
    return {
      json: {
        email: petData.Email,
        owner_name: petData.Owner_Name,
        pet_name: petData.Pet_Name,
        pet_type: petData.Pet_Type,
        pet_age: petData.pet_age,
        pet_age_months: petData.pet_age_months,
        tip_topic: tipData.topic,
        tip_headline: tipData.headline,
        tip_content: tipData.content,
        tip_category: tipData.category,
        row_number: petData.row_number
      }
    };

    运行提示词 · 来源原文。Send Health Tip using Gmail 节点的 Message 字段(HTML 格式)

    =<p>Hi {{ $json.owner_name }},</p>
    
    <h3>{{ $json.tip_headline }}</h3>
    
    <p>{{ $json.tip_content }}</p>
    
    
    <p>Stay pawsitive! 🐾<br>
    <em>PetCare Team</em></p>

可复制提示词

搭建指导 · 本站建议版本。搭建助手启动词;用于确认输入、权限和节点配置

这一段是提示词,页面不会在这里插入广告。

请根据以下材料帮我搭建 n8n 工作流:
1. 来源模板:https://n8n.io/workflows/9714/
2. 需要凭证:OpenAI API key、Gmail OAuth2、Google Sheets OAuth2
3. 需要两张 Google 表格:Pets(Email, Owner_Name, Pet_Name, Pet_Type, Date_of_Birth, Country (ISO), Status, Last_Email_Sent)和 Email_Log(Timestamp, Parent_Email, Pet_Name, Tip_Category, Status)
4. 导入后更新三个 Google Sheets 节点的 documentId 为你的实际表格 ID
5. 先手动测试 1 条 Active 宠物数据,确认邮件内容正确后再启用每周一 9am 的定时触发器

注意:仅选择一个邮件服务商(默认 Gmail,如需 SendGrid 需禁用 Gmail 节点并启用 SendGrid 节点)。

复制上方提示词给搭建助手,先确认表格结构和凭证权限,再导入工作流。

来源

Send weekly personalized pet health tips with GPT-4o-mini, Gmail and Google Sheets · mssporto · n8n.io · 2025-10-15

留言与反馈

试过这个方法吗?分享效果、遇到的问题或改进建议。留言审核后公开,请勿填写敏感信息。

正在加载…

    相关用例