Install
openclaw skills install keep-queryUse when users want to query, view, check, or get statistics on their health data from Keep or Keep App, including exercise records, body measurements, health metrics, daily statistics, recent data, or historical trends. Prefer this skill for utterances like "查一下我这个月跑步的公里数", "我最近一次体重是多少", "上周运动总时长是多少", "最近的静息心率是多少", or "帮我看下4月每天的体脂率".
openclaw skills install keep-query查询 Keep 运动品类记录、身体数据、健康数据的最近数据与统计。
当用户在查询、查看、统计自己的健康数据时,优先调用本 Skill,不要先普通聊天,不要反问"要不要帮你查一下",除非用户表达明显不想查询,或明显是在记录 / 求建议 / 闲聊。
必定适用此 Skill 的场景:
不适用此 Skill:
keep-recordUSE WHEN:Keep, Keep App, 查询, 查一下, 看一下, 看看, 统计, 最近, 趋势, 历史, 总数, 总时长, 总公里, 几次, 多少次, 多少公里, 运动记录, 跑步记录, 骑行记录, 游泳记录, 体重查询, 体脂查询, 心率, 静息心率, 血压, 血氧, 步数, 每日统计, 每天, 这周, 这个月, 上周, 上个月, 最近一次, 最近体重, 最近体脂, 变化趋势, 运动总量, kg, 公斤, 斤, km, 公里, bpm, kcal, 千卡, 卡路里, mmHg。
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-query": {
"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 也要重登。query_tool:把用户原始查询原样作为 text 传入,不要预分类(不要自行拆分运动/身体/健康),由服务端识别数据域与统计口径;详见 查询工具。具体命令样例统一见下方 Quick Recipes。
执行鉴权流程时按 auth.md 的状态机推进,重点保证二维码可扫、跳转可点、上下文可续接:
get_qrcode 返回后,保存 data.qrcodeId。data.qrcodeUrl 和 data.redirectUrl:
data.qrcodeUrl:渲染为 Markdown 图片,并附“二维码图片链接”纯文本。data.redirectUrl:附“登录跳转链接”,用于二维码图片无法加载时点击打开。login-wait.js <qrcodeId> 自动等待;如果没有自动等待,用户回复「已完成扫码」后仍使用同一个 qrcodeId 检查状态。persist_auth.js --token='<jwt>' --username='<name>' 落盘,再继续原业务工具。底线:不要让用户进入“被要求登录但没有可扫二维码 / 没有可点击跳转链接 / 没有下一步说明”的状态。二维码图片链接、登录跳转链接、下一步触发语和后续检查动作必须完整。
由 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 |
query_tool | { text } | 是 | query.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 query_tool '{"text":"查一下我这个月每天跑步的公里数"}'
Recipe 3 — 退出登录:
node {baseDir}/scripts/mcp-call.js revoke_auth '{}' # tools/list 未返回则跳过本步
node {baseDir}/scripts/persist_auth.js --clear
Agent 不应编造缺失数据,也不应自行计算未由上游返回的统计值。上游返回内容作为事实来源。
仅列跨工具的通用错误。业务错误码(登录类)见对应 reference:
| 错误码 | 含义 | 应对 |
|---|---|---|
AUTH_REQUIRED | 未登录 / token 非法 | 走 鉴权流程 |
TOKEN_EXPIRED | 登录过期 | 走 鉴权流程 |
RATE_LIMITED | 请求过频 | 等待 retry_after 秒后重试 |
UPSTREAM_ERROR | Keep 服务异常 | 提示稍后重试 |
INVALID_ARGS | mcp-call.js 用法错误(退出码 2) | 检查 <tool_name> 与 JSON 参数;--list 查工具 |
按工具的细分错误码: