Install
openclaw skills install @earthaveeman/garmin-health-analysis-cn用自然语言与你的佳明(Garmin)数据对话,专为跑者设计 —— "帮我分析一下上周的比赛数据"、"帮我分析一下最近的身体状况"、"我昨晚睡得怎么样?"。可获取 20 余项健康指标(睡眠阶段、身体电量、心率变异性、最大摄氧量、训练准备度、身体成分、血氧),下载 FIT/GPX 文件进行跑步路线与配速分析,查询任意位置的海拔与配速,并生成可交互的健康仪表盘。从简单的"给我看这周的跑步记录"到深入的"分析我的训练负荷与恢复状况"均可胜任。
openclaw skills install @earthaveeman/garmin-health-analysis-cn从佳明 Connect 查询健康指标,并生成可交互的 HTML 图表。本技能主要用于 AI 助手技能(Skill)环境,实现自动化健康监测与主动提醒。
pip3 install garminconnect
提供佳明 Connect 账号信息的方式有三种:
如果你使用的 AI 助手支持在技能配置中设置环境变量,可以直接添加。以 OpenClaw 为例,将账号信息添加到 ~/.clawdbot/clawdbot.json:
{
"skills": {
"entries": {
"garmin-health-analysis-cn": {
"enabled": true,
"env": {
"GARMIN_EMAIL": "your-email@example.com",
"GARMIN_PASSWORD": "your-password"
}
}
}
}
}
提示:以 OpenClaw 为例,也可以通过其界面中的"技能设置"面板进行配置。
在技能目录下创建配置文件:
将本技能安装到你的 AI 助手的技能目录下(目录位置因平台而异,例如 OpenClaw 为 ~/.clawdbot/skills/,Claude Code 为 ~/.claude/skills/ 等),然后进入技能目录:
cd <技能目录>/garmin-health-analysis-cn
cp config.example.json config.json
# 编辑 config.json,填入你的邮箱和密码
config.json:
{
"email": "your-email@example.com",
"password": "your-password",
"is_cn": true
}
说明:
config.json 已被 git 忽略,不会上传,以保护你的账号安全。is_cn 设为 true,登录时会连接佳明中国服务器(connect.garmin.cn)。is_cn 设为 false(或删除该字段),登录时会连接国际服务器(connect.garmin.com)。在登录时直接传入账号信息:
python3 scripts/garmin_auth.py login \
--email YOUR_EMAIL@example.com \
--password YOUR_PASSWORD \
--cn
登录佳明 Connect 并保存会话令牌:
python3 scripts/garmin_auth.py login
账号信息的读取优先级如下:
--email、--password、--cn)config.json)GARMIN_EMAIL、GARMIN_PASSWORD)skills.entries.garmin-health-analysis-cn.env)会话令牌保存在 ~/.garmin-health-analysis-cn/tokens/(可通过环境变量 GARMIN_TOKEN_DIR 自定义位置),并会自动刷新。
查看登录状态:
python3 scripts/garmin_auth.py status
使用 scripts/garmin_data.py 获取 JSON 格式的数据:
# 睡眠数据(默认最近 7 天)
python3 scripts/garmin_data.py sleep --days 14
# 身体电量(佳明的恢复程度指标)
python3 scripts/garmin_data.py body_battery --days 30
# 心率变异性数据
python3 scripts/garmin_data.py hrv --days 30
# 心率(静息、最高、最低)
python3 scripts/garmin_data.py heart_rate --days 7
# 活动/运动记录
python3 scripts/garmin_data.py activities --days 30
# 压力水平
python3 scripts/garmin_data.py stress --days 7
# 综合摘要(含各项平均值)
python3 scripts/garmin_data.py summary --days 7
# 自定义日期范围
python3 scripts/garmin_data.py sleep --start 2026-01-01 --end 2026-01-15
# 用户资料
python3 scripts/garmin_data.py profile
输出为标准输出中的 JSON,可解析后用于回答用户的问题。
使用 scripts/garmin_chart.py 生成可交互的 HTML 可视化图表:
# 睡眠分析(时长 + 评分)
python3 scripts/garmin_chart.py sleep --days 30
# 身体电量恢复曲线(按数值着色)
python3 scripts/garmin_chart.py body_battery --days 30
# 心率变异性与静息心率趋势
python3 scripts/garmin_chart.py hrv --days 90
# 活动汇总(按类型、卡路里)
python3 scripts/garmin_chart.py activities --days 30
# 完整仪表盘(全部 4 类图表)
python3 scripts/garmin_chart.py dashboard --days 30
# 保存到指定文件
python3 scripts/garmin_chart.py dashboard --days 90 --output ~/Desktop/garmin-health.html
图表会自动在默认浏览器中打开,采用 Chart.js 绘制,配有现代化的渐变设计、统计卡片和可交互的悬浮提示。
| 用户提问 | 执行操作 |
|---|---|
| "帮我分析一下上周的比赛数据" | garmin_data.py activities --days 7,结合 garmin_activity_files.py 分析配速、心率与海拔 |
| "帮我分析一下最近的身体状况" | garmin_data.py summary --days 7,报告身体电量、睡眠与恢复趋势 |
| "我昨晚睡得怎么样?" | garmin_data.py summary --days 1,报告睡眠时长和评分 |
| "最近一个月我的配速有什么变化?" | garmin_data.py activities --days 30,分析各项跑步的配速趋势 |
| "我的心率变异性在改善吗?" | garmin_data.py hrv --days 30,分析变化趋势 |
| "我的静息心率怎么样?" | garmin_data.py heart_rate --days 7,报告平均值和趋势 |
佳明基于心率变异性、压力、睡眠和活动强度计算的综合恢复指标:
基于睡眠时长、睡眠阶段和睡眠中断情况的综合睡眠质量评分:
以毫秒为单位,通常数值越高越好:
越低通常代表心血管功能越好:
基于全天心率变异性分析得出:
当用户希望获得健康洞察、理解数据趋势时,请使用 references/health_analysis.md,其中包含:
python3 scripts/garmin_data.py summary --days Nreferences/health_analysis.md 中的解读框架is_cn 设置与账号注册区域一致(区域不匹配也会导致登录失败)python3 scripts/garmin_auth.py login ...garminconnect 导入失败:执行 pip3 install --upgrade garminconnect~/.garmin-health-analysis-cn/tokens/(可通过环境变量 GARMIN_TOKEN_DIR 自定义)| 功能 | 佳明 | Whoop |
|---|---|---|
| 恢复指标 | 身体电量(0-100) | 恢复评分(0-100%) |
| 心率变异性追踪 | 支持(夜间平均值) | 支持(更详细) |
| 睡眠阶段 | 浅睡、深睡、快速眼动、清醒 | 浅睡、慢波睡眠、快速眼动、清醒 |
| 运动记录 | 内置 GPS,多种运动模式 | 训练负荷评分(0-21) |
| 压力 | 全天压力水平 | 不直接监测 |
| 接口 | 非官方(garminconnect 库) | 官方 OAuth |
| 设备类型 | 手表、运动手环 | 仅腕带式设备 |
references/api.md —— 佳明 Connect 接口详细说明(非官方)references/health_analysis.md —— 有科学依据的健康数据解读方法