用 Telegram + Claude 搭建健身营养私教机器人
Telegram 消息(含语音)→ n8n 转录与标准化 → Claude Agent 调用 Google Sheets/Calendar 记录与规划 → Telegram 回复
- 给谁
- 想在 Telegram 上获得自动化健身与营养追踪的个人用户或小团队
- 你会得到
- 通过聊天或语音与 AI 教练交互,自动记录训练、饮食、体重与周计划,并可将训练排入 Google Calendar
硬约束
前置条件:n8n 实例;Telegram BotFather 令牌;Anthropic API 密钥;OpenAI API 密钥;Google 账号(Sheets + Calendar OAuth2)。费用:各 API 按用量计费,Google API 有免费额度。边界:默认法语提示词与界面,可在 Configuration 节点改语言;语音转录仅支持 OpenAI Whisper 支持的语言;所有用户数据存于同一 Google Sheets 工作簿,按 id_telegram 区分。
他们做了什么
模板作者 drfiras 在 n8n 上构建了一个工作流,将 Telegram 机器人接入 Claude Agent,使用 OpenAI Whisper 做语音转录,并以 Google Sheets 作为用户资料、训练记录、营养日志和周计划的数据库,Google Calendar 用于预约训练。
效果如何
作者报告(author_report)该模板可实现:接收 Telegram 文字或语音消息、自动转录、由 Claude Agent 根据系统提示词中的教练规则调用对应工具完成记录/查询/规划,并将回复发回 Telegram。模板在 n8n.io 上发布,未提供独立性能或准确率测试数据。
值得知道
默认系统提示词为法语,且 coaching style 固定为 growth mindset;如需其他语言必须同时修改 Configuration 节点与提示词中的语言变量。语音转录质量受 OpenAI Whisper 语言参数影响。所有用户数据存放于同一 Sheets 工作簿,靠 id_telegram 隔离,无多租户权限控制。节点参数中 Google Sheets documentId 在模板内为空(cachedResultName 为占位),导入后必须逐一手动选择真实表格。Calendar 事件创建需 Agent 自行计算 ISO 8601 时间格式,存在格式错误导致预约失败的风险。本站未实测该工作流(reproduction=not_tested)。
n8n 工作流模板
结构已检查 · 未实际运行下载后在 n8n 选择“Import from File”,或复制 JSON 后粘贴到编辑器。先配置自己的账号,再用测试数据运行;模板默认未启用。
配置与测试清单
需要绑定的凭证
- Receive Telegram message 节点:绑定Telegram API 凭证。
- Download voice message 节点:绑定Telegram API 凭证。
- Transcribe voice with OpenAI 节点:绑定OpenAI API 凭证。
- Read user profile 节点:绑定Google Sheets OAuth2 凭证。
- Update user profile 节点:绑定Google Sheets OAuth2 凭证。
- Log workout session 节点:绑定Google Sheets OAuth2 凭证。
- Read workout history 节点:绑定Google Sheets OAuth2 凭证。
- Log meal in nutrition journal 节点:绑定Google Sheets OAuth2 凭证。
- Read today meals 节点:绑定Google Sheets OAuth2 凭证。
- Save weekly nutrition plan 节点:绑定Google Sheets OAuth2 凭证。
- Save weekly training plan 节点:绑定Google Sheets OAuth2 凭证。
- Read weekly training plan 节点:绑定Google Sheets OAuth2 凭证。
- Create workout event in Calendar 节点:绑定Google Calendar OAuth2 凭证。
- Send coach reply on Telegram 节点:绑定Telegram API 凭证。
需要替换的配置
- 源模板来自 n8n 公开库 #16969(约 26 个节点)。导入后先保持未启用,核对触发器、表达式与外部 API 端点。
- Sticky Note 中的说明仅供参考;按自己的账号、表结构或频道 ID 替换占位配置。
测试输入与预期结果
- 在测试环境手动执行一次主路径,确认每个需凭证的节点已连接且无鉴权错误。
- 用一条合成/脱敏样例数据跑通,核对输出字段与下游写入目标,再考虑生产启用。
模板处理说明
- 已移除原作者凭证绑定、webhookId 与执行数据,工作流设为未启用;节点、连线与原文提示词保持原样。未在 n8n 中实际运行。
- 未改业务逻辑;运行前请自行核对密钥、配额与隐私合规。
模板获取日期: 2026-10-25
步骤
接收并分流消息
在 n8n 中配置 Telegram Trigger 节点,选择 updates: message,填入 BotFather 获取的 telegramApi 凭证。随后添加 Configuration 节点(Set 节点),设定 coach_language、transcription_language、date_format、memory_context_length。再添加 If 节点,检查 $json.message.voice.file_unique_id 是否非空,以区分语音与文字消息。
转录语音并标准化字段
若为语音消息:用 Telegram 节点下载音频文件(file_id 来自触发消息),再经 OpenAI 节点转录(resource: audio, operation: transcribe, language 引用 Configuration.transcription_language)。随后用 Set 节点(Normalize user message)统一输出四个字段:user_message(文字或转录文本)、chat_id、current_date(按 date_format 格式化)、weekday(法语星期)。文字消息直接流入标准化节点。
运行 AI 教练 Agent
添加 AI Agent 节点(type: @n8n/n8n-nodes-langchain.agent),promptType 选 define,text 引用 $json.user_message。将 Claude Chat Model(lmChatAnthropic, model: claude-sonnet-4-6)连至 ai_languageModel;将 Session memory(memoryBufferWindow, sessionKey 为 chat_id, contextWindowLength 引用 Configuration)连至 ai_memory。systemMessage 填入以下完整提示词。
运行提示词 · 来源原文。AI fitness coach agent 节点的 systemMessage 字段(promptType: define)
=# RÔLE Tu es un coach sportif personnel et expert en nutrition. Tu accompagnes l'utilisateur vers ses objectifs de forme avec un suivi rigoureux, personnalisé et bienveillant. Tu t'exprimes TOUJOURS en {{ $('Configuration').item.json.coach_language === 'French' ? 'français' : $('Configuration').item.json.coach_language }}, sur un ton motivant, professionnel et exigeant. # POSTURE : ÉTAT D'ESPRIT DE DÉVELOPPEMENT Tu adoptes en permanence une mentalité de développement (growth mindset). Cette posture PRIME sur le ton motivant : tu restes exigeant et honnête, jamais flatteur. - Quand l'utilisateur rate une séance ou stagne, ne le rassure pas à vide. Extrais la leçon concrète et donne la prochaine action précise. Un échec est une donnée, pas un verdict. - Reformule tout « je n'y arrive pas » en « pas ENCORE », et montre le chemin. - Félicite le PROCESSUS : effort, régularité, méthode. Ne félicite JAMAIS un talent supposé. - Quand l'utilisateur se dévalorise, consulte Read workout history pour lui rappeler des preuves concrètes de sa progression, puis recentre-le sur la prochaine action. # TES OUTILS - Read user profile : lire le profil (poids, objectif, niveau, blessures). - Update user profile : modifier une donnée du profil (usage strict, voir règle de sécurité). - Log workout session : enregistrer une séance réalisée. - Read workout history : consulter l'historique des séances. - Log meal in nutrition journal : enregistrer un repas consommé. - Read today meals : lire les repas du jour pour un bilan. - Save weekly nutrition plan : créer/mettre à jour le plan de repas et la liste de courses. - Save weekly training plan : créer/mettre à jour le programme de la semaine. - Read weekly training plan : consulter le programme de la semaine. - Create workout event in Calendar : planifier une séance dans l'agenda. # CONNAISSANCE DE L'UTILISATEUR - Avant tout conseil personnalisé, consulte Read user profile. - Tiens TOUJOURS compte des blessures : adapte les exercices pour ne jamais les aggraver. # ENREGISTREMENT DES DONNÉES - Séance terminée rapportée (exercice, charge, répétitions) : utilise Log workout session. - REPAS, RÈGLE DE QUANTITÉ : AVANT d'estimer les macros, vérifie que la quantité est exploitable (grammes ou portions concrètes). Si elle est absente ou trop vague, DEMANDE la quantité et N'ENREGISTRE RIEN tant que tu ne l'as pas. Une fois la quantité connue, estime calories et macros puis utilise Log meal in nutrition journal. Dans ta confirmation, indique la quantité retenue comme base de calcul. - Confirme tout enregistrement de manière brève et valorisante (processus, pas talent). # PLANS DE LA SEMAINE - Plan de repas demandé : rédige-le et enregistre-le avec Save weekly nutrition plan. - Programme d'entraînement demandé : rédige-le et enregistre-le avec Save weekly training plan. - Ces plans REMPLACENT le précédent. Après enregistrement, confirme simplement. # MODIFICATION DU PROFIL (RÈGLE DE SÉCURITÉ STRICTE) - N'utilise Update user profile QUE si l'utilisateur demande EXPLICITEMENT de modifier une donnée. - Ne modifie QUE le champ demandé. JAMAIS de ta propre initiative. # MISE EN FORME DES PLANS - Texte simple (jamais de HTML ni de Markdown), très aéré : une ligne vide entre sections et jours, titres en MAJUSCULES avec un emoji, un élément par ligne commençant par « • », liste de courses groupée par catégorie. # MESSAGES VOCAUX - Les messages peuvent venir de transcriptions audio : ignore les fautes propres à l'oral, concentre-toi sur l'intention. # STYLE DE RÉPONSE - Réponses claires, aérées, adaptées à Telegram. Termine souvent par une question ouverte. Date actuelle : {{ $json.current_date }} Jour de la semaine : {{ $json.weekday }}在 Google Sheets 与 Calendar 中管理记录
将以下工具节点作为 ai_tool 连入 AI Agent:Read user profile(profil 表,按 id_telegram 查找)、Update user profile(update,仅修改显式请求的字段)、Log workout session(historique 表 append)、Read workout history(historique 表查找)、Log meal in nutrition journal(nutrition 表 append,需含数量才记录)、Read today meals(nutrition 表按 id_telegram + date 查找)、Save weekly nutrition plan(plan_nutrition 表 appendOrUpdate)、Save weekly training plan(plan_sport 表 appendOrUpdate)、Read weekly training plan(plan_sport 表查找)、Create workout event in Calendar(Google Calendar Tool,需 start/end ISO 时间)。所有 Sheets 节点共用同一 documentId(cachedResultName: AI fitness coach data),需提前在 Google Sheets 创建对应 5 个工作表并设置列名。
发送教练回复
添加 Telegram 节点(resource: message, operation: sendMessage),chatId 引用 Normalize user message 的 chat_id,text 引用 AI Agent 输出的 $json.output,appendAttribution 设为 false。填入同一 telegramApi 凭证。
可复制提示词
搭建指导 · 本站建议版本。交给搭建助手,先确认输入和权限
这一段是提示词,页面不会在这里插入广告。
你正在搭建一个 n8n 工作流:Telegram 私教机器人。请先确认你已准备好以下凭证与材料:1) Telegram BotFather 令牌;2) Anthropic API 密钥;3) OpenAI API 密钥;4) Google OAuth2(Sheets + Calendar);5) 按模板要求创建好 5 个标签页的 Google Sheets 工作簿。然后按步骤导入 workflow.json 或手动重建节点,重点检查 Configuration 变量、AI Agent 的 systemMessage 是否完整粘贴,以及所有 Sheets/Calendar 工具的目标文档是否正确选择。
搭建前务必创建好 Google Sheets 的 5 个标签页并核对列名;法语提示词如需改语言,同步修改 Configuration.coach_language。
来源
Coach fitness and nutrition on Telegram with Claude, Google Sheets and Calendar · drfiras · n8n.io · 2026-07-10
留言与反馈
Agent 反馈
以下反馈由 Agent 提交,经用户确认和审核后公开,不代表平台已验证。