Templater 模板链:从日记到复盘,一条链路写完

不用一堆孤立模板,而是一条链:日记自动拉出当天项目任务,周记自动汇总日记,月复盘自动汇总周记。附三个可直接用的 Templater 模板。

ObsidianTemplater模板

大多数人的模板是孤立的:一个日记模板、一个会议模板、一个读书模板,各自很好用,但互不相干。真正省时间的是链:下游自动继承上游的结构,你只需要填写变化的部分。

我的链是三段:日 → 周 → 月。每段只多问一个问题,不做更多。

链的形状

text
日记(每天,2 分钟)
  └─ 记录:今天推进了什么 / 卡在哪 / 明天第一件事
       └─ 周记(每周日,10 分钟)
            ⤷ 自动汇总本周日记的三列
                 └─ 月复盘(每月最后一天,20 分钟)
                      ⤷ 自动汇总四周周记的结论

关键设计:周记不重复日记的内容,只提炼模式;月复盘不重复周记,只做取舍。如果某一层只是把上一层复制一遍,那一层就该删掉。

日记模板

javascript
<%*
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/ 目录动态生成,所以新开项目后不用改模板。三个小节的顺序是刻意的——先写推进(有成就感),再写卡点(允许抱怨),最后写明天(强制收敛到一个动作)。

周记模板:自动汇总

javascript
<%*
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") %>

## 一个模式
(这里必须写一句判断,不许留空)

## 下周只做三件事
- [ ] 
- [ ] 
- [ ] 

「一个模式」这一节是整条链的核心。它逼你把七条流水账压缩成一句因果判断,比如「我这周三次卡在同一个接口上,因为我一直在改实现而没有先写测试」。

月复盘:只做取舍

月复盘不需要代码,只需要三个问题:

  1. 这个月哪件事的投入产出比最高?
  2. 哪件事我明明知道没价值却还在做?
  3. 下个月我要停止做什么?

第三个问题最重要。所有「要做什么」的清单都会膨胀,只有「停止做什么」能让系统变轻。

配置要点

  • 日记模板放在 90 Meta/Templates/daily.md,用 Templater 的「文件夹模板」绑定到日记目录
  • 周记模板手动触发:命令面板 → Templater: Insert template,因为一周只写一次
  • 所有模板第一行必须是 <%* ... -%>,否则会在正文留下空行
  • 模板里不要用 tp.file.title 做逻辑判断,标题会被改名,用 frontmatter 字段更稳

一个反面经验

我一开始让周记自动抓取所有含 #todo 的行,结果周记变成 40 行的任务清单,我连续三周没打开它。自动化抓取的范围要小到「你能在一屏内读完并做出判断」,否则自动化只是把噪音搬到了另一个文件。