gccli:Garmin Connect 完整命令行接口
gccli 是由社区开发者 bpauli 维护的 Garmin Connect 非官方 CLI 工具,基于 Go 语言开发,提供对 Garmin 生态系统的深度程序化访问。该工具覆盖了从基础活动记录到高级训练分析的完整功能谱系,是健身数据自动化和开发者集成的强大方案。
核心功能架构
认证与账户管理 采用 Garmin SSO 认证,支持浏览器交互式登录和 headless 模式(含 MFA 支持)。凭证安全存储于系统钥匙串(macOS Keychain/Linux Secret Service),支持多账户切换和令牌导出/导入,便于跨设备迁移。
活动数据全生命周期管理 支持活动的创建、查询、修改、下载和删除。可处理多种格式(FIT/GPX/TCX/KML/CSV),包含详细数据如分段、心率区间、功率区间、天气信息和装备关联。特色功能包括通过结构化命令创建力量训练活动并精确记录每组训练参数(次数、重量、休息间隔)。
健康与身体指标 涵盖步数、静息心率、睡眠、血氧、HRV、压力、身体电量、训练准备度、训练状态、VO2max、乳酸阈值、骑行 FTP、耐力评分等 Garmin 核心健康指标,支持单日查询和日期范围统计。
训练与规划工具 完整的训练计划支持:创建结构化训练(支持配速、心率、功率目标区间)、课程管理(GPX 导入、发送至设备)、训练计划查询、赛事规划(含目标时间和训练优先级)。
设备与装备管理 支持设备列表查询、设置同步、太阳能数据获取;装备追踪系统可统计装备使用里程、关联活动记录。
显著优势
- 功能完整性:几乎覆盖 Garmin Connect Web 端所有核心功能,是目前功能最全面的非官方 CLI 方案
- 开发者友好:JSON/TSV 输出模式、结构化日期参数、环境变量配置,易于脚本化和 CI/CD 集成
- 安全设计:系统级密钥存储、自动令牌刷新、请求重试机制
- 多区域支持:内置 Garmin China 区域切换
- LLM 友好:提供标准化的力量训练工作流,支持自然语言到结构化训练的转换
局限性与风险
- 非官方性质:逆向工程实现,存在 API 变更导致功能中断风险,Garmin 可能随时调整接口策略
- 依赖个人账户:需使用个人 Garmin 凭证,企业级多用户场景受限
- 无图形界面:纯命令行交互,对非技术用户门槛较高
- 速率限制:未明确说明但存在被限制可能,高频自动化需控制请求频率
- 数据隐私:健康敏感数据通过第三方工具传输,需信任工具实现安全性
适用人群
- 量化健身爱好者:需要批量导出历史数据、生成自定义报告的高级用户
- 开发者/数据工程师:构建健身数据管道、与第三方平台(如 Strava、TrainingPeaks)集成
- 教练与运动科学家:批量分析运动员数据、自动化训练监控
- 自托管用户:希望在本地管理 Garmin 数据副本的隐私敏感用户
常规风险提示
| 风险类别 | 说明 | 缓解建议 |
|---------|------|---------|
| 账户安全 | 需存储 Garmin 凭证 | 使用 MFA,定期轮换令牌,检查授权来源 |
| API 稳定性 | 非官方接口可能变更 | 关注 GitHub 仓库更新,保留数据本地备份 |
| 数据准确性 | 工具计算与官方可能存在差异 | 关键决策以 Garmin 官方数据为准 |
| 速率限制 | 频繁请求可能导致临时封禁 | 添加请求间隔,避免高峰时段批量操作 |