To be confirmed 02
TO be confirmed
Why:为什么要做这个?
写日记时手动记录"几点到几点做了什么"非常繁琐,而 Toggl 里已经有完整的计时数据。目标是让时间记录自动流入日记和周记,写日记时只需专注于内容本身,时间维度由系统自动填充。
同时,日记数据需要:
本地优先(不经过 GitHub,保护隐私)
云端备份(同步到 Notion,随时可查)
统计可视化(周报按项目汇总,看清楚时间都花在哪里了)
What:这是什么?
一个由四个定时任务驱动的自动化管道:
Toggl 手动计时
↓ 每天晚上 9pm / 每周日晚上 9pm
Python 脚本调用 Toggl API v9
↓ 生成时间记录 + matplotlib 图表 PNG
写入 Obsidian Journal 文件(本地,不上 GitHub)
↑ 同一个文件
Claude Code 会话日志
↓ 每天晚上 10pm / 每周日晚上 8pm
daily-claude-recap / weekly-claude-recap 定时任务
↓ 文件修改后 5 秒自动触发
Share to NotionNext 插件同步
↓
Notion 数据库"fall"
每日日记:Journal/YYYY-MM/YYYY-MM-DD.md
## ⏱ 时间记录:逐条列出当天计时,附 matplotlib 横向 bar 图(Navi 暖色系)## 🤖 Claude 复盘:当天 Claude Code 会话摘要 + 今日沉淀手写内容写在两个 section 之前,任务不覆盖
每周周记:Journal/YYYY-MM/YYYY-WNN.md
## ⏱ 本周时间分布:按项目分组表格 + 三图(项目横条 + 每日堆叠 + 趋势折线)## 🤖 本周 Claude 汇总:本周会话统计 + 聚合学到 + 本周沉淀列表
How:我们是怎么做到的?
关键决策过程(back and forth)
调度器选择:试过 launchd 和 cron,均不可用。最终选 Claude Code scheduled tasks,稳定可靠。
同步目标选择:
日记原在 Notion(纯文字流水账),考虑迁到 Obsidian
担心 GitHub 同步隐私问题 → 查证:私有仓库静态内容不用于训练,但仍用
.gitignore彻底隔离Journal/用 Share to NotionNext 插件的 Auto Sync(文件修改后5秒自动推送)替代 GitHub 作为云端备份
可视化格式选择(三轮迭代):
第一版:Unicode 条形图(
█░)→ 在 Obsidian 渲染模式下极丑,字符变成大黑块第二版:emoji 彩色方块 + 条形图 → 仍然丑,比例字体无法对齐
第三版:Markdown 表格 → 渲染正常,项目粗体 + 子任务明细,采用
Toggl Reports API 探索:
调了 Summary / Detailed / Weekly 三个端点
Summary 和我们手动聚合的数据一样,无额外价值
Weekly 提供按星期几分布,但用户认为不如现有表格实用,放弃
结论:继续用
/me/time_entries+ 自己聚合,简单够用
最终系统架构
脚本:Not commonly used/scripts/toggl_to_journal.py
| 函数 | 作用 |
| `get_toggl_entries` | 调 Toggl API v9 拉当天条目 |
| `get_toggl_projects` | 拉项目名称映射(id → name) |
| `format_entries` | 格式化每日时间列表 |
| `format_weekly_section` | 生成周报 Markdown 表格,emoji 彩色项目 |
| `generate_daily_chart` | 生成每日横向 bar 图 PNG(Navi 色板) |
| `generate_weekly_chart` | 生成周报三图 PNG(横条 + 堆叠 + 折线) |
| `upsert_time_section` | 写入/更新文件中的时间 section,保留后续内容 |
| `generate_weekly_summary` | 周报全流程,若已有 Claude 汇总则插入其前 |
运行方式:
每日:
python3 toggl_to_journal.py周报:
python3 toggl_to_journal.py --weekly
定时任务:
| 任务 | 时间 | 作用 |
| `toggl-journal-sync` | 每天 21:00 | 拉取当日 Toggl 数据 + 生成日图表 |
| `toggl-weekly-sync` | 每周日 21:00 | 生成周 Toggl 数据 + 三图 |
| `daily-claude-recap` | 每天 22:00 | Claude Code 会话复盘写入日记 |
| `weekly-claude-recap` | 每周日 20:00 | 聚合本周 Mon–Sat 复盘写入周记 |
隐私保护:
Journal/和Not commonly used/scripts/.env均在.gitignore中,永不上 GitHubToggl API token 只存在本地
Not commonly used/scripts/.env,绝不出现在对话或代码里
Notion 自动同步:
每个新建的 Journal 文件顶部自动写入 frontmatter:
autosync-database: journal
Select: Daily Journal # 或 Weekly Journal
```
- Share to NotionNext 插件检测到 frontmatter → 文件改动后5秒自动推送到 Notion 数据库"fall"
Obsidian 插件:
obsidian-toggl-integration(mcndt):已决定跳过。插件已停止维护(3年无更新),"API unreachable" 为已知未修复 bug(#184)。核心需求已由 Python 脚本覆盖。Share to NotionNext:Auto Sync 已开启,delay 5秒,图片同步已验证可用(2026-05-05)
待验证
Share to NotionNext 图表同步
手动同步含本地图片的笔记已验证成功(2026-05-05)。尚未验证:
Auto Sync 是否稳定可靠(曾见"Skip Auto Sync"提示,原因不明)
新增的 Toggl 图表 PNG 是否随日记正常同步到 Notion
验证步骤:
手动运行
python3 toggl_to_journal.py,确认日记含![[YYYY-MM-DD-toggl.png]]在 Obsidian 手动触发 Share to NotionNext 同步
检查 Notion
fall数据库该条目是否包含图表图片
相关文件路径
| 文件 | 用途 |
| `Not commonly used/scripts/toggl_to_journal.py` | 主脚本 |
| `Not commonly used/scripts/.env` | Toggl API token(本地,gitignored) |
| `Not commonly used/scripts/tests/test_toggl_to_journal.py` | 单元测试(14项) |
| `docs/superpowers/plans/2026-05-06-toggl-journal-integration.md` | 实现计划原文 |
| `Journal/` | 日记 + 周记输出目录(gitignored) |