跳到正文
北京时间
原文
MarkTechPost(RSS)· Michal Sutter·· 2026-07-02精选AI 评分72

Google Health API 推出 CLI:ghealth 是一款针对 Fitbit 数据的开源工具

The Google Health API Got a CLI: ghealth is an Open-Source Tool for Your Fitbit Air Data

AI 导读

ghealth 是一款封装 Google Health API v4 的开源命令行工具,以单个 Go 二进制文件发布(Apache 2.0 协议)。它提供 40 种已验证的数据类型(包括步数、心率、睡眠、体重、血氧饱和度、心率变异性等)的结构化 JSON 输出。工具采用 Agent 优先设计,具备确定性退出码、--dry-run 和 --raw 标志,并附带两个 SKILL.md 文件供 AI 智能体使用。用户需自行创建 OAuth 凭据,通过 PKCE S256 认证。数据来源覆盖 Fitbit、Pixel Watch 及连接的第三方设备。

推荐理由

把 Google Health API 封装成终端和 AI 代理友好的 CLI,一次性解决了认证、JSON 输出和分页这些烦人细节,想用 Fitbit 数据做健康分析或喂给代理的人可以直接上手,但它的影响仅限于个人健康数据爱好者这个小圈层。

正文 · AI 翻译

Google Health API 是 Fitbit Web API 的官方继任者。它面向 Google Health API v4,并将开发者迁移到 Google OAuth 2.0。如今,一个名为 ghealth 的开源 CLI 命令行工具为该 API 封装了一层,供终端和 AI 智能体使用。

该工具是采用 Apache 2.0 许可证的单个 Go 二进制文件。它将 40 种经过验证的数据类型以结构化 JSON 形式暴露出来。这种设计让你可以将睡眠、心率和步数数据管道式地传入智能体的上下文。

什么是 ghealth?

ghealth 是 Google Health API v4 之上的一层封装。你可以用 go build -o ghealth . 从源码构建它。它以单个自包含二进制文件的形式发布。

该工具明确以智能体优先为设计理念。每条命令都返回形状稳定的简化 JSON。它还提供确定性的退出码、一个 --dry-run 标志和一个 --raw 标志。

该仓库以 SKILL.md 文件的形式提供两个 Agent Skills。一个涵盖认证、设置和全局标志。另一个记录了全部 40 种数据类型、操作、模式和注意事项。智能体通过 npx skills add 安装它们。

该 CLI 位于 Google-Health-API GitHub 组织下。该组织还托管着历史悠久的 Fitbit 开源仓库。

数据面:40 种经过验证的类型

这 40 种类型覆盖了大多数 Fitbit 和 Pixel Watch 信号。示例包括 steps、heart-rate、sleep、weight、oxygen-saturation 和 heart-rate-variability。像 electrocardiogram 这样的临床类型需要 ecg.readonly 权限范围。

每种类型支持一部分操作。常见的有 list、rollup、daily-rollup 和 reconcile。可写类型(exercise、sleep、weight、body-fat、height)额外支持 create、update 和 delete。

reconcile 操作会合并来自多个来源的重叠数据点。这与 v4 API 中的 Reconciled Stream 相对应。

睡眠是进行模式分析的一个很好的例子。默认的 list 返回摘要。加上 --detail 会返回逐阶段数据(清醒、深睡、REM)。这有助于你逐周发现规律。

设置:实际会发生什么

设置通过一条命令完成:ghealth setup。一个向导会引导你完成 GCP 项目和 OAuth。你在 Google Cloud Console 中创建一个 Desktop 类型的 OAuth 客户端。

你自带 OAuth 凭据。该工具不持有任何共享密钥。文件以 0600 文件模式写入 ~/.config/ghealth/ 下。Token 会自动刷新。

所有 Google Health API 作用域都被归类为受限(Restricted)。Google 要求对生产环境访问进行隐私与安全审查。对于个人使用,你可以为自己的项目授权访问自己的账号。该 API 返回来自 Fitbit、Pixel Watch 以及已连接的第三方来源的数据。

无头流程使用带 S256 挑战的 PKCE。它还会在完成时验证一个随机 state 参数。

实操:命令与输出

读取数据在各类型间保持一致。每次读取都会返回一个对象,其行数据位于 dataPoints 下。

# Recent heart rate readings
ghealth data heart-rate list --from today --limit 10

# Daily step totals for a week
ghealth data steps daily-rollup --from 2026-03-22 --to 2026-03-29

# Sleep stages for the last five nights
ghealth data sleep list --limit 5 --detail

步数总计返回聚合后的 JSON:

{
  "dataPoints": [
    {"date": "2026-03-28", "countSum": "9037"},
    {"date": "2026-03-27", "countSum": "2408"}
  ]
}

输出默认经过简化。使用 --raw 获取原始 API 响应。使用 --format csv 或 --format table 获取其他形态。-o 标志会写入文件并打印 schema 预览。

分页是无损的。较大的 list 会返回一个 nextPageToken。你通过 --page-token 将其传回,以获取下一页。

用例与示例

  • 将睡眠模式输入智能体:用 --detail 拉取多个夜晚的数据。将 JSON 管道传入 Claude Code 或 Codex 会话。让智能体总结这一周的深睡趋势。
  • 将训练数据加载到 pandas:运行 ghealth data exercise export-tcx --id <id> --output ride.csv --as csv。每一行是一个包含心率和 GPS 的轨迹点。然后对该文件运行 pd.read_csv。
  • 构建静息心率视图:查询过去 30 天的 daily-resting-heart-rate。用 --format csv 输出 CSV。在 notebook 或仪表盘中绘制图表。

ghealth 对比

下表将 ghealth 与原始 API 以及另外两个 CLI 进行对比。另外两个 CLI 都自我标识为非官方。

属性ghealth(本 CLI)Google Health API v4(直接 REST)rudrankriyam/Google-Health-CLIgooglehealth-cli(npm)
安装git clone + go build无;自行调用 HTTP/gRPC从 Go 源码构建npm i -g googlehealth-cli
语言Go,单一二进制文件任意GoNode.js
认证你自己的 OAuth 客户端,PKCE S256Google OAuth 2.0你自己的 OAuth 客户端你自己的 OAuth 客户端
智能体输出简化 JSON、退出码、SKILL.md原始 JSON / gRPC可预测的 JSON稳定的 --json 封装
数据类型40 项已针对实时 API 验证完整的 v4 接口面跟踪已文档化的 v4 接口面类型的子集
官方状态否;社区性质,位于 Google-Health-API 组织下是;Google否;声明为非官方否;声明无关联

若需原始控制,直接使用 REST API 才是权威依据。对于终端和智能体使用场景,ghealth 可减少认证和格式化的样板代码。

交互式讲解


来源:MarkTechPost(RSS) · marktechpost.com