Install
openclaw skills install @thcjp/apple-health-skillopenclaw skills install @thcjp/apple-health-skill核心功能: 本技能提供中文交互等能力。
核心功能: 本技能提供、报表生成、统计洞察、数据可视化时使用等能力。
使用AI与运动健康数据对话。查询训练记录、心率趋势、活动量环、VO2 Max、性能管理图表等。通过健康数据同步服务获取运动手环/手表同步的健康数据,AI教练提供个性化训练建议.
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| input | string | 是 | 运动健康数据处理的输入数据或指令 |
| options | object | 否 | 附加配置选项,如模式选择、格式偏好等 |
| callback_url | string | 否 | 异步处理完成后的回调通知URL |
| 能力 | 免费版 | 付费版 |
|---|---|---|
| 基础功能 | 支持 | 支持 |
| 复杂工作流可视化编排 | 不支持 | 支持 |
| 条件分支与异常重试 | 不支持 | 支持 |
| 定时触发与事件驱动 | 不支持 | 支持 |
| 执行日志与审计追踪 | 不支持 | 支持 |
| 分布式任务调度与负载均衡 | 不支持 | 支持 |
export HEALTH_API_KEY="${API_KEY:?请设置环境变量}"
所有认证端点需在请求头中携带 X-API-Key.
| 依赖项 | 类型 | 是否必需 | 获取方式 |
|---|---|---|---|
| LLM API | API | 必需 | 由Agent内置LLM提供 |
如需调用外部API,请参考环境配置章节设置对应密钥
API Key配置方式:
export API_KEY="${API_KEY:?请设置环境变量}"
配置后需重启会话或开启新终端生效。API Key应妥善保管,避免泄露到版本控制系统.
通过 GET /api/v1/wod?sport=run&duration=45 获取随机结构化训练方案,无需认证。参数 sport 支持 run(跑步)、bike(骑行)、swim(游泳)、strength(力量),默认 run。参数 duration 指定训练时长(10-300分钟),默认45。适用于快速获取训练建议和运动计划生成.
通过 POST /api/v1/coach/chat 向AI教练提问健康数据相关问题。请求体包含 message 字段(自然语言问题),AI教练拥有用户训练和健康指标的完整上下文。支持查询如"最近一个月静息心率变化"、"本周做了多少次训练"、"VO2 Max趋势如何"等问题。适用于自然语言健康数据查询场景.
通过 GET /api/v1/workouts?start=2026-02-09&end=2026-02-15 获取指定日期范围内的训练记录。必填参数 start 和 end(YYYY-MM-DD格式),最大查询范围90天。返回训练列表,包含训练类型、时长、距离、心率等详细数据。适用于训练历史回溯和数据分析.
通过 GET /api/v1/performance/pmc 获取性能管理图表数据。返回CTL(慢性训练负荷,反映健身水平)、ATL(急性训练负荷,反映疲劳度)和TSB(训练压力平衡,反映状态/形态)。TSB低于-20表示运动员处于疲劳状态,建议安排恢复日。适用于训练负荷监控和恢复评估.
通过 GET /api/v1/performance/stats 获取从健康数据推导的性能指标。返回FTP(功能阈值功率)、阈值配速、心率区间分布和其他运动表现指标。适用于运动能力评估和训练强度设定.
通过 GET /api/v1/profile 获取运动员档案信息。返回用户的基本信息、运动偏好、历史训练摘要等数据。适用于用户画像构建和个性化建议基础数据获取。- 验证返回数据的完整性和格式正确性
通过 GET /api/v1/coach/history 获取AI教练的聊天历史记录。返回之前的对话内容,包含用户问题和AI教练回复。适用于对话上下文回顾和连续性对话场景。- 验证返回数据的完整性和格式正确性
详细的输入输出格式请参考下方章节说明。
HEALTH_API_KEY,确保健康数据同步服务已授权GET /api/v1/wod 获取训练方案(无需认证),或通过 POST /api/v1/coach/chat 直接向AI教练提问GET /api/v1/workouts 获取指定日期范围记录(YYYY-MM-DD格式,最大90天)GET /api/v1/performance/pmc 检查CTL/ATL/TSB,若TSB低于-20建议安排恢复日GET /api/v1/performance/stats 获取FTP、心率区间等指标GET /api/v1/coach/history 回顾之前的AI教练对话# 获取45分钟跑步训练方案(无需认证)
curl "https://health-api.example.com/api/v1/wod?sport=run&duration=45"
# 响应包含结构化训练计划:热身、主训练、放松等阶段
# ...
# 向AI教练提问
curl -X POST "https://health-api.example.com/api/v1/coach/chat" \
-H "X-API-Key: $HEALTH_API_KEY" \
-H "Content-Type: application/json" \
-d '{"message": "How has my resting heart rate changed over the last month?"}'
# AI教练返回静息心率变化趋势分析
# 获取最近一周的训练记录
curl -H "X-API-Key: $HEALTH_API_KEY" \
"https://health-api.example.com/api/v1/workouts?start=2026-02-09&end=2026-02-15"
# ...
# 检查训练负荷和疲劳状态
curl -H "X-API-Key: $HEALTH_API_KEY" \
example.com/api/v1/performance/pmc"
# 响应包含 CTL(健身)、ATL(疲劳)、TSB(状态)
# 若 TSB < -20,建议安排恢复日
# ...
# 获取性能统计(FTP、心率区间等)
curl -H "X-API-Key: $HEALTH_API_KEY" \
example.com/api/v1/performance/stats"
| 错误场景 | HTTP状态 | 原因 | 处理方式 |
|---|---|---|---|
| API Key未设置 | 401 | HEALTH_API_KEY 环境变量缺失或为空 | 在健康数据同步服务中生成API Key并设置环境变量 |
| 日期范围超过90天 | 400 | start 和 end 间隔超过最大范围 | 将查询范围缩小到90天以内,分段查询 |
| 日期格式错误 | 400 | start 或 end 非YYYY-MM-DD格式 | 使用标准日期格式,如 2026-02-09 |
| sport参数无效 | 400 | 传入了不支持的sport值 | 使用有效值:run/bike/swim/strength |
| duration超出范围 | 400 | duration不在10-300分钟范围内 | 调整duration值到10-300范围内,默认45分钟 |
| 免费配额用尽 | 429 | 超出100次/天读取或3次/天AI对话限制 | 等待次日重置,或升级至付费配额(10000次/天读取、100次/天AI对话) |
| TSB低于-20 | 200 | 运动员疲劳过度,训练压力平衡偏低 | 建议安排恢复日,减少高强度训练直到TSB回升 |
在健康数据同步服务应用中,进入 Settings > API Keys,点击 Generate New Key 生成密钥。将生成的密钥设置到环境变量 HEALTH_API_KEY 中。所有认证端点需在请求头中携带 X-API-Key: $HEALTH_API_KEY.
所有日期参数使用YYYY-MM-DD格式(如 2026-02-09)。GET /api/v1/workouts 端点的 start 和 end 参数之间的最大查询范围为90天,超过会返回400错误。需要查询更长时间范围时,分段多次查询.
不需要。GET /api/v1/wod 是唯一无需认证的端点。参数 sport 支持 run/bike/swim/strength(默认 run),duration 范围10-300分钟(默认45)。适用于快速获取训练方案,无需配置API Key.
CTL(Chronic Training Load)反映慢性训练负荷,代表长期健身水平。ATL(Acute Training Load)反映急性训练负荷,代表近期疲劳度。TSB(Training Stress Balance)是CTL减去ATL的差值,反映当前状态/形态。TSB为正值表示状态良好,低于-20表示疲劳过度,建议安排恢复日.
免费版配额:读取端点100次/天,AI端点(coach/chat)3次/天。付费版配额:读取端点10000次/天,AI端点100次/天。超限后返回429状态码,需等待次日重置或升级配额.
AI教练拥有用户健康数据的完整上下文,可以回答:"最近一个月静息心率变化"、"本周做了多少次训练"、"VO2 Max趋势如何"、"本周睡眠趋势"、"对比本月和上月跑步配速"、"根据近期训练是否应该安排恢复日"等问题。通过 POST /api/v1/coach/chat 发送自然语言问题即可.
HEALTH_API_KEY 环境变量{
"success": true,
"data": {
"result": "运动健康数据处理结果",
"execution_time": "0.5s",
"metadata": {
"version": "1.0",
"processor": "apple-health-skill"
}
},
"execution_log": [
"解析输入参数",
"执行核心处理",
"格式化输出结果"
],
"error": null
}
| 操作步骤 | 手动耗时 | 自动化耗时 | 时间节约 | 准确率提升 |
|---|---|---|---|---|
| 手动记录心率变化 | 30分钟/次 | 1分钟/次 | 29分钟 | 5% |
| 手动分析训练记录 | 2小时/次 | 15分钟/次 | 1小时45分钟 | 10% |
| 手动生成训练计划 | 1小时/次 | 5分钟/次 | 55分钟 | 8% |
| 手动计算VO2 Max | 1小时/次 | 10分钟/次 | 50分钟 | 7% |
| 手动绘制心率趋势图 | 1小时/次 | 15分钟/次 | 45分钟 | 6% |
| 对比维度 | 本技能 | 手动操作 | Python脚本 | 专业软件 |
|---|---|---|---|---|
| 功能全面性 | 支持 | 部分支持 | 部分支持 | 全面支持 |
| 易用性 | 高 | 低 | 中 | 高 |
| 成本 | 低 | 中 | 中 | 高 |
| 数据准确性 | 高 | 低 | 中 | 高 |
| 可视化效果 | 高 | 低 | 中 | 高 |
| 痛点 | 描述 | 影响范围 | 解决方案 | 量化效果 |
|---|---|---|---|---|
| 数据手动处理 | 数据量大,处理繁琐,容易出错 | 运动训练效果评估 | 自动化处理,减少人工操作,提高准确率 | 准确率提升5% |
| 训练计划制定 | 缺乏个性化,难以适应不同用户需求 | 运动效果 | 提供个性化训练建议,提高训练效果 | 效果提升8% |
| 性能分析 | 缺乏专业分析工具,难以全面了解运动表现 | 运动效果评估 | 提供专业性能分析图表,帮助用户了解运动状态 | 性能提升7% |
| 错误现象 | 可能原因 | 诊断步骤 | 解决方案 |
|---|---|---|---|
| 无法获取健康数据 | 健康数据同步服务未开启 | 检查是否已下载并开启健康数据同步服务 | 开启健康数据同步服务 |
| 无法获取训练记录 | 缺少必要参数 | 检查参数是否完整 | 补充必要参数 |
| 无法生成训练计划 | 没有合适的运动项目或时长 | 检查运动项目或时长是否合理 | 选择合适的运动项目或时长 |
| 无法获取性能管理图表 | 缺少必要权限 | 检查API Key是否配置正确 | 配置正确的API Key |
| 无法获取性能统计 | 缺少必要权限 | 检查API Key是否配置正确 | 配置正确的API Key |
| 风险项 | 等级 | 防护措施 | 验证方法 |
|---|---|---|---|
| API密钥泄露 | 高 | 通过环境变量配置,禁止硬编码 | 定期检查代码和配置文件 |
| 命令执行风险 | 高 | 仅执行白名单命令,避免拼接用户输入 | 使用沙箱环境测试 |
| 网络通信安全 | 中 | 使用HTTPS协议,验证SSL证书 | 定期检查证书有效期 |
| 敏感数据暴露 | 高 | 输出结果中不包含密钥、令牌等敏感信息 | 日志脱敏审查 |
| 未授权访问 | 中 | 限制访问权限,实施认证机制 | 定期审计访问日志 |
A1: 与运动健康数据对话,查询训练、心率、活动量和VO2 Max趋势。使用AI与运动健康数据对话。支持查询训练记录、心率趋势、活动量环、VO2 Max、 性能管理图表。支持文本指令和结构化参数输入,具体格式参考使用流程章节。
A2: 是的,部分功能需要配置对应平台的API Key。请在依赖说明章节查看具体要求,并通过环境变量安全配置。
A3: 检查命令参数是否正确,确认运行环境支持exec能力。如遇权限问题,请参照错误处理章节排查。