一、背景
使用佳明(Garmin)国行账号时,会遇到一个比较常见的问题:
中国区账号无法直接与 Strava等国际平台进行官方同步。
这会导致运动数据被分散在不同生态中:
-
中国区 Garmin Connect
-
国际区 Garmin Connect
-
Strava 等第三方平台
如果希望后续统一使用国际区账号与第三方平台同步,就需要一种方式:
👉 将中国区账号中的活动记录同步到国际区账号。
目前已经有开源项目(如 dailysync)实现了这一思路。
在参考其实现方式后,正巧最近AI变成比较火,自己用AI实现了一个更轻量的脚本版本,用于完成最核心的同步功能。
项目地址:
https://github.com/hh997y/hh997y-garmin_sync_python
二、总体思路
该项目的目标非常明确:
只做一件事:将 Garmin 中国区账号的活动记录,同步到 Garmin 国际区账号。

整体流程如下:
-
使用中国区账号登录 Garmin Connect 接口
-
获取最近的活动列表并下载对应的
.fit文件 -
使用国际区账号登录上传接口
-
将下载的活动文件上传至国际区账号
-
对已同步过的活动进行记录,避免重复上传
同步完成后,即可使用 Garmin 国际区账号与 Strava 等平台进行官方同步。
三、功能特性
目前实现的主要功能包括:
-
支持从中国区账号下载活动记录(fit 文件)
-
支持将活动文件上传到国际区账号
-
已上传活动记录缓存,避免重复同步
-
支持多种运行模式:
-
download_only:仅下载活动 -
upload_only:仅上传本地活动文件 -
full:下载 + 上传
-
-
支持两种登录方式:
-
使用已有 session cookie
-
使用 Playwright 自动登录获取 cookie
-
四、与现有方案的关系
该项目的实现思路参考了开源项目:
相比之下,本项目的特点是:
-
数据安全,不用对外提供佳明账号密码
-
功能更简单聚焦,仅处理活动记录同步
-
不包含完整的 Web UI 或数据库
-
更偏向脚本工具形态,便于按需运行或二次开发
对于希望快速获得完整解决方案的用户,dailysync 是一个成熟方案;
对于希望理解原理或进行定制化处理的用户,可以参考本项目的实现方式。
五、使用门槛与适用人群
该项目并非面向普通终端用户,而是更适合以下人群:
-
熟悉 Python 基本使用方式
-
能够修改配置文件(YAML)
-
能理解 Cookie / Session 的基本概念
-
能自行排查运行中的报错信息
不建议以下场景使用:
-
完全不接触命令行或代码环境的用户
-
期望一键图形界面操作的用户
六、项目结构说明
项目主要结构如下:
-
run.py:程序入口 -
config.yaml:配置文件(账号登录方式、同步模式等) -
src/garmin_sync/:核心同步逻辑 -
state/uploaded.json:已同步活动记录缓存
程序通过读取 config.yaml 控制运行模式与认证方式。
七、实现初衷
实现该项目的主要动机包括:
-
避免手动导出 / 导入
.fit文件 -
解决国区与国际区数据割裂的问题
-
便于后续通过国际区账号与 Strava 等平台进行统一同步
-
学习与实践 Garmin Connect 接口相关调用逻辑
八、项目地址
项目仓库地址:
👉 https://github.com/hh997y/hh997y-garmin_sync_python
仓库 README 中包含:
-
配置说明
-
登录方式示例
-
常见运行模式
-
已同步缓存机制说明
可根据自身需求进行二次开发或调整。