Periodic Notes 插件高级使用案例
本文介绍 Periodic Notes 的进阶配置和工作流,涵盖多周期协同、自定义周期、自动化和跨周期数据关联。
自定义周期配置
工作周期(每 10 天)
json
{
"periods": [
{
"id": "sprint",
"name": "Sprint",
"folder": "Journal/Sprint",
"format": "Sprint-{{start}}-{{end}}",
"template": "Journal/Templates/Sprint.md"
}
]
}学期周期
适用于学生或教育工作者:
markdown
---
semester: {{date:yyyy}}-{{semester}}
week: 第 {{week-of-semester}} 周
tags: [学期, {{semester}}]
---
# 📚 {{semester}} 第 {{week-of-semester}} 周
## 课程安排
| 时间 | 周一 | 周二 | 周三 |
|------|------|------|------|
| 上午 | 数学 | 英语 | 物理 |
| 下午 | 编程 | 体育 | 化学 |
## 本周作业
- [ ] 数学作业
- [ ] 英语报告
## 学习反思
-多周期协同
日 → 周 → 月 → 季度 → 年度链路
建立周期笔记之间的自动引用:
markdown
# 日记:2026-06-09
## 今日记录
本周第 {{date:X}} 天 | 本月第 {{date:D}} 天
---
# 周记:2026-W24
## 本周主题
> 深度工作实践周
### 周目标(来自月记)
- [ ] 深度工作 20 小时
### 每日进展
| 日期 | 深度工作时长 | 完成度 |
|------|------------|--------|
| 周一 | 3h | ████████░░ |
| 周二 | 4h | ██████████ |
| ... | ... | ... |
---
# 月记:2026-06
## 本月主题
> 深度工作习惯养成
### 关键指标
- 深度工作总时长:
- 平均每日:使用 Dataview 跨周期查询
dataview
TABLE
file.link AS 日期,
length(filter(file.tasks, t => t.completed)) AS 已完成,
length(filter(file.tasks, t => !t.completed)) AS 待办
FROM "Journal/Daily"
WHERE week(file.day) = week(date(today))
FLATTEN file.tasks as task周度任务统计:
dataview
TABLE
week(file.day) AS 周次,
sum(length(filter(rows.tasks, t => t.completed))) AS 本周完成,
sum(length(filter(rows.tasks, t => !t.completed))) AS 本周待办
FROM "Journal/Daily"
WHERE file.day >= date(today) - dur(30 days)
GROUP BY week(file.day)
SORT week(file.day) DESC自动化工作流
Templater 周期导航
markdown
<%*
// 自动填充上周期和下周期的链接
const today = moment(tp.date.now());
const prevDay = today.clone().subtract(1, 'day').format('YYYY-MM-DD');
const nextDay = today.clone().add(1, 'day').format('YYYY-MM-DD');
const prevWeek = today.clone().subtract(1, 'week').format('YYYY-[W]ww');
const nextWeek = today.clone().add(1, 'week').format('YYYY-[W]ww');
-%>
## 导航
← [[Journal/Daily/<% prevDay %>|昨天]] | [[Journal/Daily/<% nextDay %>|明天]] →
← [[Journal/Weekly/<% prevWeek %>|上周]] | [[Journal/Weekly/<% nextWeek %>|下周]] →QuickAdd 自动填充
创建 QuickAdd 宏自动填充当日总结:
javascript
// quickadd-macro: daily-summary
module.exports = {
entry: async ({ app }) => {
// 获取本周周记
const weekNote = `Journal/Weekly/${moment().format('YYYY-[W]ww')}.md`;
const weekFile = app.vault.getAbstractFileByPath(weekNote);
if (weekFile) {
const content = await app.vault.read(weekFile);
// 提取本周完成的任务数
const match = content.match(/已完成:(\d+)/);
const completed = match ? match[1] : 0;
// 追加到日记
await app.vault.append(
app.workspace.getActiveFile(),
`\n\n## 今日总结\n\n本周累计完成:${completed} 项`
);
}
}
};自定义模板函数
计算工作日
markdown
<%*
// 计算本月剩余工作日
const today = moment();
const monthEnd = today.clone().endOf('month');
let workdays = 0;
let current = today.clone();
while (current.isSameOrBefore(monthEnd, 'day')) {
if (current.day() !== 0 && current.day() !== 6) {
workdays++;
}
current.add(1, 'day');
}
-%>
本月剩余工作日:**<% workdays %>** 天财务周期模板
markdown
---
周期: {{date:YYYY-MM}}
类型: 支出记录
预算: ¥{{budget}}
tags: [财务, 支出]
---
# 💰 {{date:YYYY-MM}} 支出记录
## 本月预算
剩余:¥{{budget_remaining}} / ¥{{budget}}
## 周支出明细
| 周次 | 金额 | 状态 |
|------|------|------|
| 第1周 | ¥ | ████ |
| 第2周 | ¥ | ████ |
| 第3周 | ¥ | ████ |
| 第4周 | ¥ | ████ |
## 支出分类
- 🍔 餐饮:¥
- 🚗 交通:¥
- 🛒 购物:¥
- 📱 娱乐:¥
- 其他:¥
## 记账
- [ ]高级 Dataview 查询
月度习惯追踪
dataview
TABLE
dateformat(file.day, "MM-dd") AS 日期,
length(filter(file.tasks, t =>
contains(t.text, "#运动") && !t.completed
)) AS 待运动,
length(filter(file.tasks, t =>
contains(t.text, "#阅读") && !t.completed
)) AS 待阅读
FROM "Journal/Daily"
WHERE month(file.day) = month(today)
SORT file.day ASC季度目标追踪
dataview
TABLE
"Q" + quarter(file.day) AS 季度,
length(filter(rows.tasks, t =>
contains(t.text, "项目") && t.completed
)) AS 项目完成,
length(filter(rows.tasks, t =>
contains(t.text, "学习") && t.completed
)) AS 学习完成
FROM "Journal/Daily"
WHERE file.day >= date(today) - dur(90 days)
GROUP BY "Q" + quarter(file.day)常见问题
Q: 如何迁移到 Periodic Notes?
- 确保现有日记使用标准命名格式(如
YYYY-MM-DD) - 设置 Periodic Notes 的文件夹路径与现有日记一致
- 插件会自动识别并关联现有笔记
Q: 多周期笔记冲突?
避免在不同周期的笔记中使用相同的文件名。Periodic Notes 支持通过设置中的「Create if doesn't exist」选项控制是否覆盖。
Q: 模板中日期计算错误?
日期格式必须严格遵循 Moment.js 规范,建议参考官方文档确认格式字符串。