核心用法
wakapi-sync 是一个轻量级的 Node.js 脚本,用于将 Wakapi(WakaTime 兼容服务)的每日编码统计数据抓取并持久化为本地 CSV 文件。用户配置三个环境变量(服务地址、API 密钥、输出目录)后,运行脚本即可获取当日数据,并自动更新三类 CSV:每日总览、热门项目排行、热门语言排行。数据以追加模式写入,适合长期累积形成个人开发时间数据库。
显著优点
1. 数据主权:将云端统计数据本地化存储,避免服务商变更或账号问题导致历史数据丢失
2. 格式标准:CSV 格式通用性强,可直接用 Excel、Pandas、R 等工具分析,或接入 BI 系统
3. 增量更新:智能追加而非全量覆盖,保护历史记录完整性
4. 配置简洁:仅需 3 个必填环境变量,无复杂依赖或数据库要求
5. 兼容生态:支持标准 Wakapi API 及 WakaTime 兼容端点,适配自托管场景
潜在局限
1. 单日粒度:仅抓取「今日」数据,无法回填历史或处理漏跑日期
2. 无内置调度:需依赖 cron/systemd 等外部定时任务机制实现每日自动执行
3. 认证方式单一:仅支持 Basic Auth(base64 API key),不支持 OAuth 或 Token 轮换
4. Schema 固定:输出列名和结构硬编码,自定义扩展需修改源码
5. 无数据校验:缺乏对 API 返回数据的完整性校验或异常值检测
适合人群
- 使用 Wakapi/WakaTime 追踪编码时间的开发者
- 希望建立个人数据仓库进行效率分析的量化自我爱好者
- 需要将编码统计数据导入本地分析管道的数据工程师
- 偏好自托管方案、关注数据隐私的技术用户
常规风险
- 凭证泄露:
WAKAPI_API_KEY以明文形式存在于环境变量,共享环境或日志不当可能暴露 - 路径遍历:若
WAKAPI_OUT_DIR用户可控且未校验,可能存在目录遍历风险(虽概率较低) - 数据覆盖:并发运行或脚本异常中断可能导致 CSV 写入冲突或损坏
- API 限流:高频调用可能触发服务端限流,建议每日执行不超过 1-2 次
- 依赖风险:Node.js 18+ 要求,旧系统需升级运行时环境