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 作为云端备份

可视化格式选择(三轮迭代)

  1. 第一版:Unicode 条形图(█░)→ 在 Obsidian 渲染模式下极丑,字符变成大黑块

  2. 第二版:emoji 彩色方块 + 条形图 → 仍然丑,比例字体无法对齐

  3. 第三版: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:00Claude Code 会话复盘写入日记
`weekly-claude-recap`每周日 20:00聚合本周 Mon–Sat 复盘写入周记

隐私保护

  • Journal/Not commonly used/scripts/.env 均在 .gitignore 中,永不上 GitHub

  • Toggl 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

验证步骤

  1. 手动运行 python3 toggl_to_journal.py,确认日记含 ![[YYYY-MM-DD-toggl.png]]

  2. 在 Obsidian 手动触发 Share to NotionNext 同步

  3. 检查 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)

 


← Back