name: garmin-sync
description: 佳明国际账号数据同步到国内账号(基于 garminconnect 开源库)
author: assistant
version: 2.0.0
homepage: https://github.com/cyberjunky/python-garminconnect
triggers:
- "佳明"
- "Garmin"
- "同步"
- "运动数据"
- "手表"
metadata:
clawdbot:
emoji: "⌚"
requires:
bins: ["python3"]
pip: ["garminconnect"]
config:
env:
GARMININTLUSERNAME:
description: 佳明国际版账号
required: true
GARMININTLPASSWORD:
description: 佳明国际版密码
required: true
GARMINCNUSERNAME:
description: 佳明国内版账号
required: true
GARMINCNPASSWORD:
description: 佳明国内版密码
required: true
SYNCINTERVALHOURS:
description: 同步间隔(小时)
default: "24"
Garmin 国际→国内账号同步技能 v2.0
基于 python-garminconnect 开源库,
从 Garmin Connect International 读取活动数据,下载 FIT 文件后上传到 Garmin Connect China。
功能
| 功能 | 命令 | 说明 |
|------|------|------|
| 🔄 同步 | sync | 执行一次完整同步(读取国际版→下载FIT→上传国内版) |
| 📊 状态 | status | 查看同步状态和统计 |
| 📋 列表 | list | 查看最近活动记录 |
| 🔧 认证测试 | auth-test | 测试国际版和国内版账号认证 |
使用方式
// 完整同步(最近7天)
sync()
// 同步最近30天
sync({ days: 30 })
// 查看同步状态
status()
// 列出最近活动
list()
// 测试认证
auth-test()
同步原理
- 🔐 登录国际版 Garmin Connect,获取活动列表
- ⬇️ 下载每条活动的原始 FIT 文件
- 📤 登录国内版 Garmin Connect,上传 FIT 文件
- 💾 记录已同步的活动 ID,避免重复
环境变量配置
| 变量 | 必填 | 说明 |
|------|------|------|
| GARMIN_INTL_USERNAME | ✅ | 国际版 Garmin 账号(邮箱) |
| GARMIN_INTL_PASSWORD | ✅ | 国际版 Garmin 密码 |
| GARMIN_CN_USERNAME | ✅ | 国内版 Garmin 账号(邮箱/手机) |
| GARMIN_CN_PASSWORD | ✅ | 国内版 Garmin 密码 |
| GARMIN_SYNC_DIR | ❌ | 数据存储目录(默认 ~/.garmin-sync) |
⚠️ 注意事项
- API 限流: Garmin API 有请求频率限制,同步间隔会自动处理
- 重复检测: 已同步的活动会自动跳过,不会重复上传
- FIT 缓存: 下载的 FIT 文件保存在本地,可定期清理
- 首次使用: 建议先用
auth-test 验证账号配置是否正确
版本历史
v2.0.0 (2026-04-29)
- 全面重写,基于 python-garminconnect 真实 API
- 支持完整的认证流程(含 OAuth token 持久化)
- 支持 FIT 文件下载 + 国内版上传
- 支持活动去重和状态记录
v1.0.0 (2026-04-16)