Keep 健康记录工具
记录饮食、运动、体重、围度、生理期、睡眠等数据到 Keep App。支持文字描述和图片上传。
何时必须调用
当用户在陈述、打卡或记录自己的健康数据时,优先调用本 Skill,不要先普通聊天,不要反问“要不要帮你记一下”,除非用户表达明显不想记录,或明显是在提问 / 求建议 / 求分析。
必定适用此 Skill 的场景:
- 明确提到 Keep 且意图是记录:如「帮我记到 Keep」「记到 Keep App」「Keep 打个卡」「这是 Keep 截图,帮我记一下」
- 体重 / 体脂 / 围度:如「今天体重 80kg」「腰围 76」「体脂率 18」
- 饮食:如「早餐吃了鸡蛋面」「中午吃了潮汕牛肉火锅」「喝了杯奶茶」「加餐一个苹果」
- 运动:如「跑了 5km」「瑜伽 30 分钟」「游泳 1 小时」「打了羽毛球」
- 睡眠:如「昨晚睡了 7 小时」「深睡 1.8h」「失眠到 2 点」
- 生理期:如「生理期第 3 天」「痛经」「姨妈来了」
- 附图打卡:消息包含早餐 / 运动 / 体重秤 / Keep App 截图,且语义是在打卡或记录
不适用此 Skill:
- 提问或建议咨询:如「减脂期吃什么」「跑步配速多少合适」
- 闲聊:如「今天天气好」「这家火锅店好吃吗」
- 其他业务:如项目 / 报销 / 汇报 / 审批
USE WHEN:Keep, Keep App, Keep截图, Keep打卡, 记到Keep, Keep记录, Keep健康, 体重, 体脂, 体脂率, BMI, 腰围, 臀围, 胸围, 大腿围, 颈围, 早餐, 午餐, 晚餐, 加餐, 宵夜, 吃了, 喝了, 零食, 外卖, 做饭, 跑步, 跑了, 步行, 走了, 骑行, 游泳, 瑜伽, HIIT, 拉伸, 跳绳, 打球, 睡了, 睡眠, 入睡, 失眠, 深睡, 浅睡, REM, 生理期, 经期, 大姨妈, 痛经, 月经, kg, 公斤, 斤, 磅, km, 公里, 步, bpm, kcal, 千卡, 卡路里, ml, 毫升。
Triggers:体重记录, 饮食记录, 运动记录, 围度记录, 生理期记录, 睡眠记录, 健康打卡.
Runner
本 Skill 面向 OpenClaw / Hermes 运行器,支持两种调用方式:
方式 1 — exec(推荐):所有工具通过以下命令调用,调用约定见 auth.md · exec 调用约定:
node {baseDir}/scripts/mcp-call.js <tool> '<json>'
{baseDir}占位符:由运行器注入 Skill 的安装绝对路径。Agent 在 exec 命令里保留字面{baseDir},不要自己替换。
方式 2 — 原生 MCP:若运行器支持 streamable-http,可直接注册 MCP Server:
{
"mcpServers": {
"keep-record": {
"url": "https://mcp.gotokeep.com/skills-mcp-gateway-page/v1",
"transport": "streamable-http",
"headers": {
"Authorization": "Bearer ${env:keep_auth_token}"
}
}
}
}
- 协议:JSON-RPC 2.0;
url只填根地址,不要拼接tools/call/ 工具名 / REST 子路径 - 运行器从环境变量读取 token 注入 HTTP header,Agent 不直接接触 token 值
处理流程
- 确保已登录:调用任何需登录工具前先检查本地凭证;无效则走 鉴权流程。收到
AUTH_REQUIRED/TOKEN_EXPIRED也要重登。 - 处理图片(如有):先
get_upload_url拿预签名 URL,HTTP PUT 上传(2xx 视为成功),再把cdn_url作为image_url传入;详见 图片上传。 - 调用
record_tool:把用户原始描述原样作为text传入,不要预分类,由服务端识别路由;详见 记录工具。 - 格式化结果:按下方「结果呈现」给用户。
具体命令样例统一见下方 Quick Recipes。
工具清单
由 MCP Server 的 tools/list 动态返回;下表是 Agent 首次使用前需要知道的骨架。入参 / 返回字段 / 错误码以对应 reference 为准。
| 工具 | 入参骨架 | 需登录 | 详见 |
|---|---|---|---|
get_qrcode | { authType } | 否 | auth.md |
check_login | { qrcodeId } | 否 | 不要直接调;用 scripts/login-wait.js,详见 auth.md |
revoke_auth | {} | 是 | revoke-auth.md |
get_upload_url | { filename, content_type } | 是 | get-upload-url.md |
record_tool | { text, image_url? } | 是 | record.md |
Quick Recipes
Recipe 1 — 首次登录:
node {baseDir}/scripts/mcp-call.js get_qrcode '{"authType":"openclaw"}'
# → 展示必须双通道同时给出(二者各自在不同聊天 UI 下会失效,缺一就可能无法扫码)
# 1) data.qrcodeAscii 原样打印(终端写 stderr;聊天用 ```text``` 代码块包裹)
# 2) data.qrcodeUrl 以  + 纯 URL 形式附在下方作为兜底
# 详见 references/auth.md「展示策略」
node {baseDir}/scripts/login-wait.js <qrcodeId>
node {baseDir}/scripts/persist_auth.js --token='<jwt>' --username='<name>'
Recipe 2 — 纯文本记录:
node {baseDir}/scripts/mcp-call.js record_tool '{"text":"今天跑了5km"}'
Recipe 3 — 带图记录:
node {baseDir}/scripts/mcp-call.js get_upload_url '{"filename":"lunch.jpg","content_type":"image/jpeg"}'
# → 对 data.upload_url 做 HTTP PUT;2xx 后取 data.cdn_url
node {baseDir}/scripts/mcp-call.js record_tool '{"text":"午餐吃了鸡胸肉沙拉","image_url":"<cdn_url>"}'
Recipe 4 — 退出登录:
node {baseDir}/scripts/mcp-call.js revoke_auth '{}' # tools/list 未返回则跳过本步
node {baseDir}/scripts/persist_auth.js --clear
结果呈现
记录成功后,向用户展示:
✅ [记录类型]记录成功
[具体内容摘要]
记录时间:[时间]
通用错误码
仅列跨工具的通用错误。业务错误码(登录类 / 上传类)见对应 reference:
| 错误码 | 含义 | 应对 |
|---|---|---|
AUTH_REQUIRED | 未登录 / token 非法 | 走 鉴权流程 |
TOKEN_EXPIRED | 登录过期 | 走 鉴权流程 |
RATE_LIMITED | 请求过频 | 等待 retry_after 秒后重试 |
UPSTREAM_ERROR | Keep 服务异常 | 提示稍后重试 |
INVALID_ARGS | mcp-call.js 用法错误(退出码 2) | 检查 <tool_name> 与 JSON 参数;--list 查工具 |
按工具的细分错误码:
- 登录 / 二维码相关:见 auth.md · 鉴权 / 登录相关错误码
- 图片上传相关:见 get-upload-url.md · 上传相关错误码