记录饮食、运动、体重、围度、生理期、睡眠等数据到 Keep App。支持文字描述和图片上传。
当用户在陈述、打卡或记录自己的健康数据时,优先调用本 Skill,不要先普通聊天,不要反问“要不要帮你记一下”,除非用户表达明显不想记录,或明显是在提问 / 求建议 / 求分析。
即使用户没有明确说 Keep / 记到 Keep,只要输入看起来是在描述刚刚发生的饮食 / 体重 / 身体围度 / 运动 / 睡眠 / 生理期数据,也应优先调用本 Skill,而不是先当作普通聊天。
运动记录的额外限制:记录运动时,用户必须提供运动相关图片作为佐证。如果只有「今天跑了 5km」「打了羽毛球」这类纯文本、没有图片,仍应按运动记录意图处理并使用本 Skill,但不要直接调用记录工具落库,而应先明确提醒用户补充上传运动图片,待用户补图后再继续记录。
必定适用此 Skill 的场景:
不适用此 Skill:
Triggers:体重记录, 饮食记录, 运动记录, 围度记录, 生理期记录, 睡眠记录.
lazyLoad: false
preload: true
本 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}"
}
}
}
}
url 只填根地址,不要拼接 tools/call / 工具名 / REST 子路径## 处理流程
AUTH_REQUIRED / TOKEN_EXPIRED 也要重登。record_tool。get_upload_url 拿预签名 URL,再用 scripts/put-upload.js 执行 PUT 上传。该脚本会先把源图片复制到固定目录(默认 ~/.keepai/tmp,可用 KEEP_UPLOAD_TMP_DIR 覆盖),再发起上传;2xx 视为成功。详见 图片上传。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 |
Recipe 1 — 首次登录:
node {baseDir}/scripts/mcp-call.js get_qrcode '{"authType":"openclaw"}'
# → OpenClaw Web / 聊天 UI 默认优先展示 data.qrcodeUrl( + 纯 URL)
# 若当前运行器是终端 / TUI,再补充 data.qrcodeAscii 原样打印到 stderr 作为兜底
# 详见 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":"今天体重63.2kg"}'
Recipe 3 — 带图记录(运动记录必须使用此方式):
node {baseDir}/scripts/mcp-call.js get_upload_url '{"filename":"run.jpg","content_type":"image/jpeg"}'
node {baseDir}/scripts/put-upload.js --file='<local_image_path>' --upload-url='<upload_url>' --content-type='image/jpeg'
node {baseDir}/scripts/mcp-call.js record_tool '{"text":"今天跑了5km","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) | 检查 与 JSON 参数;--list 查工具 |
按工具的细分错误码:
共 1 个版本