任务管理自动化:TickTick + Obsidian + 钉钉

Pubdate:2026-03-05 17:36:15    Categories: 方法    74 Views

 

在AI 的帮助下,坏了十多年的博客终于修改好了。跟微信公众号同步发一篇文章。

用 Python 脚本打通滴答清单、Obsidian 日记和钉钉工作日志,实现专注记录与日报的一键生成。

一、我的任务管理流程

日常我用三块工具配合做任务与复盘:

  • 滴答清单(TickTick):记任务、做番茄、写专注记录和想法

  • Obsidian:写日记、做笔记

  • 钉钉:写工作日志

流程是:白天在滴答里专注、完成任务,晚上或第二天写日记,再把「今日完成」同步到钉钉日报。

问题是:这三块彼此独立,每天要手动把滴答的完成情况搬到日记和钉钉里,重复劳动。

二、解决方案:写一个自动化脚本

目标很直接:从 TickTick 拉昨天的专注记录和完成任务,自动填进 Obsidian 日记,再推到钉钉工作日志。

实现上主要做了这几件事:

1. 从 TickTick 拉数据

滴答清单用的是滴答自己的接口(而非官方开放平台),用开源库 pyticktick(https://github.com/sebpretzer/pyticktick) 对接。需要做一点兼容处理(如 userCoderegisterDate 的兼容)。

核心接口:

  • 专注记录(pomodoros):按日期范围取番茄记录,包含起止时间、任务名、时长,以及每条记录的「想法」字段

  • 完成任务/project/all/closed,按日期筛选当天完成的任务

2. 数据整理:同任务合并

滴答里同一任务会有多条专注或多次勾选完成,直接导出会很散。脚本做了合并:

  • 专注记录:按任务名合并,总时长汇总,把想法用括号附在后面

  • 完成任务:去重并标数量,如「银行培训咨询相关 x21」

3. 写入 Obsidian 日记

  • 生成 ticktick_YYYY-MM-DD.md 作为原始数据

  • --diary 时,按「今日完成」等位置填入 Obsidian 日记模板

  • 支持指定日期:python ticktick_focus.py 2026-03-04

4. 同步到钉钉工作日志

钉钉提供了「保存日志内容」接口(/topapi/report/savecontent),可以把内容预填到写日志页面。流程是:

  1. 获取模板详情(template/getbyname

  2. 按模板字段组装内容

  3. 调用 savecontent 保存

  4. 拿到 contentId 后生成钉钉专用链接

用户打开这个链接,会跳转到已预填好的写日志页面,只需确认后点击发送。

参考:钉钉开放平台 - 保存日志内容(https://open.dingtalk.com/document/development/save-custom-log-content)、日志接口使用案例(https://dingtalk.apifox.cn/doc-392425)

5. 自动化:开机补跑

用 Windows 计划任务,在「用户登录时」触发 PowerShell 脚本。脚本只在当前时间 ≥ 凌晨 1 点才执行,并借助 .last_ticktick_run 标记,避免同一天重复运行。


三、配置方法

1. 环境准备

  • Python 3

  • 安装:pip install pyticktick

2. 在 日记/.env 中配置

# TickTick(滴答清单)PYTICKTICK_V2_USERNAME=你的邮箱PYTICKTICK_V2_PASSWORD=密码# 滴答清单 v2_base_url 需为 https://api.dida365.com/api/v2/
# 钉钉(需在开放平台创建应用并申请「管理员工日志数据」权限)DINGTALK_APP_KEY=应用 KeyDINGTALK_APP_SECRET=应用 SecretDINGTALK_USER_ID=你的钉钉 useridDINGTALK_CORP_ID=企业 CorpId
# 可选DINGTALK_TEMPLATE_NAME=日报DINGTALK_DD_FROM=ticktick

钉钉参数获取:

  • AppKey / AppSecret:开放平台 → 应用管理 → 应用详情

  • UserID:管理后台 → 通讯录 → 本人详情

  • CorpId:管理后台 → 开发管理 → 开发信息

3. 使用方式

# 默认昨天,写入 ticktick 文件python ticktick_focus.py
# 指定日期python ticktick_focus.py 2026-03-04
# 填入日记 + 推送到钉钉python ticktick_focus.py -d --dingtalk

4. 开机自动运行

  1. 打开任务计划程序(taskschd.msc

  2. 创建基本任务,触发器选「当用户登录时」

  3. 操作:启动 powershell.exe,参数:

    -NoProfile -ExecutionPolicy Bypass -File "你的路径\日记\run_ticktick_daily.ps1"

四、核心代码示例

4.1 主脚本调用

# 简化示意:拉取专注记录并合并r = client._get_api_v2("pomodoros", {"from": target_start, "to": target_end})records = r if isinstance(r, list) else r.get("pomos", r.get("list", [])) or []# 解析 tasks[0].title、rec.note、duration 等,按任务合并

4.2 钉钉保存日志并生成链接

# 1. 获取 tokenresp = urllib.request.urlopen(    f"https://oapi.dingtalk.com/gettoken?appkey={app_key}&appsecret={app_secret}")
# 2. 获取模板详情req = urllib.request.Request(    "https://oapi.dingtalk.com/topapi/report/template/getbyname?access_token=...",    data=json.dumps({"userid": user_id, "template_name""日报"}).encode(),    method="POST", headers={"Content-Type""application/json"})
# 3. 保存内容,得到 contentIdreq = urllib.request.Request(    "https://oapi.dingtalk.com/topapi/report/savecontent?access_token=...",    data=json.dumps({"create_report_param": {...}}).encode(),    method="POST")
# 4. 拼接钉钉跳转链接(用户打开后即预填)redirect = f"https://landray.dingtalkapps.com/alid/app/reportpc/createreport.html?corpid={corp_id}&templateid={template_id}&contentid={content_id}&dd_from=ThirdParty"dingtalk_url = f"dingtalk://dingtalkclient/action/openapp?corpid={corp_id}&container_type=work_platform&app_id=2&redirect_type=jump&redirect_url={quote(redirect)}"

4.3 开机补跑脚本(PowerShell)

# 仅当时间 >= 1:00 执行if ($Now.Hour -lt 1) { exit 0 }
# 同一天不重复if ((Get-Content $MarkerFile) -eq $Yesterday) { exit 0 }
& python ticktick_focus.py -d --dingtalk

五、效果示例

生成的专注记录(已合并):

## 专注记录(2026-03-04)29 条, 共 755 分钟- 打豆豆 525m- 吃饭 100m- 看手机 4 50m- 刷抖音 30m

日记和钉钉里会同步上述内容;钉钉链接写入日记的「钉钉工作日志」小节,复制到浏览器或钉钉打开即可预填并发送。


六、参考资料

  • pyticktick(https://github.com/sebpretzer/pyticktick) - TickTick/滴答清单 Python 客户端

  • 钉钉开放平台 - 保存日志内容(https://open.dingtalk.com/document/development/save-custom-log-content)

  • 钉钉日志接口使用案例(https://dingtalk.apifox.cn/doc-392425)(场景一:编辑后再发送)

完整代码:(https://github.com/gorf/ticktick2md2ding)。如有类似需求,欢迎交流。

 


Comments(0)

相关文章

Leave You Comment
请输入左边图片中的字符
无觅相关文章插件