Templater 模板链:从日记到复盘,一条链路写完
不用一堆孤立模板,而是一条链:日记自动拉出当天项目任务,周记自动汇总日记,月复盘自动汇总周记。附三个可直接用的 Templater 模板。
大多数人的模板是孤立的:一个日记模板、一个会议模板、一个读书模板,各自很好用,但互不相干。真正省时间的是链:下游自动继承上游的结构,你只需要填写变化的部分。
我的链是三段:日 → 周 → 月。每段只多问一个问题,不做更多。
链的形状
日记(每天,2 分钟)
└─ 记录:今天推进了什么 / 卡在哪 / 明天第一件事
└─ 周记(每周日,10 分钟)
⤷ 自动汇总本周日记的三列
└─ 月复盘(每月最后一天,20 分钟)
⤷ 自动汇总四周周记的结论关键设计:周记不重复日记的内容,只提炼模式;月复盘不重复周记,只做取舍。如果某一层只是把上一层复制一遍,那一层就该删掉。
日记模板
<%*
const d = tp.date.now("YYYY-MM-DD");
const day = tp.date.now("dddd");
const projects = app.vault.getMarkdownFiles()
.filter(f => f.path.startsWith("20 Projects/"))
.map(f => f.basename);
-%>
---
title: <% d %> 日记
date: <% d %>
tags: [日记]
---
# <% d %> · <% day %>
## 今天推进了什么
-
## 卡在哪
-
## 明天第一件事
- [ ]
## 相关项目
<% projects.map(p => "- [[" + p + "]]").join("\n") %>这里唯一有点技术含量的是项目列表:它从 20 Projects/ 目录动态生成,所以新开项目后不用改模板。三个小节的顺序是刻意的——先写推进(有成就感),再写卡点(允许抱怨),最后写明天(强制收敛到一个动作)。
周记模板:自动汇总
<%*
const start = tp.date.now("YYYY-MM-DD", -6);
const end = tp.date.now("YYYY-MM-DD");
const files = app.vault.getMarkdownFiles()
.filter(f => /^\d{4}-\d{2}-\d{2} 日记\.md$/.test(f.name))
.filter(f => f.basename >= start && f.basename <= end);
let pushed = [], blocked = [];
for (const f of files) {
const text = await app.vault.read(f);
const sec = (name) => {
const m = text.match(new RegExp("## " + name + "\n([\s\S]*?)(?=\n## |$)"));
return m ? m[1].trim() : "";
};
pushed.push(...sec("今天推进了什么").split("\n").filter(l => l.startsWith("- ") && l.length > 2));
blocked.push(...sec("卡在哪").split("\n").filter(l => l.startsWith("- ") && l.length > 2));
}
-%>
---
title: <% start %> ~ <% end %> 周记
date: <% end %>
tags: [周记]
---
## 本周推进
<% pushed.map(l => l).join("\n") %>
## 反复出现的卡点
<% blocked.map(l => l).join("\n") %>
## 一个模式
(这里必须写一句判断,不许留空)
## 下周只做三件事
- [ ]
- [ ]
- [ ] 「一个模式」这一节是整条链的核心。它逼你把七条流水账压缩成一句因果判断,比如「我这周三次卡在同一个接口上,因为我一直在改实现而没有先写测试」。
月复盘:只做取舍
月复盘不需要代码,只需要三个问题:
- 这个月哪件事的投入产出比最高?
- 哪件事我明明知道没价值却还在做?
- 下个月我要停止做什么?
第三个问题最重要。所有「要做什么」的清单都会膨胀,只有「停止做什么」能让系统变轻。
配置要点
- 日记模板放在
90 Meta/Templates/daily.md,用 Templater 的「文件夹模板」绑定到日记目录 - 周记模板手动触发:命令面板 → Templater: Insert template,因为一周只写一次
- 所有模板第一行必须是
<%* ... -%>,否则会在正文留下空行 - 模板里不要用
tp.file.title做逻辑判断,标题会被改名,用 frontmatter 字段更稳
一个反面经验
我一开始让周记自动抓取所有含 #todo 的行,结果周记变成 40 行的任务清单,我连续三周没打开它。自动化抓取的范围要小到「你能在一屏内读完并做出判断」,否则自动化只是把噪音搬到了另一个文件。