news 2026/8/19 16:31:18

Templater 模板插件完整上手指南:让 Obsidian 笔记自动化的 4 个关键玩法

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Templater 模板插件完整上手指南:让 Obsidian 笔记自动化的 4 个关键玩法

Templater 模板插件完整上手指南:让 Obsidian 笔记自动化的 4 个关键玩法

【免费下载链接】TemplaterA template plugin for obsidian项目地址: https://gitcode.com/gh_mirrors/te/Templater

你是不是也有过这样的经历:每天早上打开 Obsidian 新建日记,先敲一遍今天的日期,再复制粘贴标题、天气占位符、待办列表,一套固定动作做了几十遍,烦到想把键盘扔了?又或者,你负责的团队每天都要填项目周报,格式五花八门,整理起来恨不得把同事挨个"请"来喝茶?

如果你对上面任何一个场景点了点头,那这篇教程就是为你写的。Templater 是 Obsidian 生态里最强大的模板插件之一,它的核心能力就是"自动填充":日期、文件名、属性、用户输入,甚至整段 JavaScript 逻辑,都能在你新建笔记的那一刻替你搞定。看完这篇指南,你有望用 10 分钟写出第一个能用的模板,并在收尾时收获一套可以长期复用的模板库。

动手之前:Templater 到底适合谁,又救不了谁

先别急着安装,我们把话说清楚。Templater 解决的核心痛点是重复性格式劳动:任何你每周都要创建、结构完全一致、只是内容略有不同的笔记,都是它的用武之地。

适合你的人设是这样的:

你的情况Templater 能带来什么
记日记、写周报、做会议纪要,格式常年固定一键生成完整骨架,你只管填内容
笔记里要带日期、链接、文件名等动态信息命令替你算好,手打错误率归零
会一点点 JavaScript,想折腾自动化完整的编程能力,几乎无所不能
笔记量很大,靠文件夹和标签管理配合自动匹配规则,新笔记开箱即用

反过来,如果你只是偶尔记两笔、从不追求格式统一,或者一看到代码就头皮发麻,那 Templater 对你可能是杀鸡用牛刀——Obsidian 自带的"模板"核心插件就够用了。

10 分钟初见:做一张会自己填日期的笔记

理论讲太多容易劝退,我们先来点实的。假设你想做一张每日日记模板,跟着这几步走:

  1. 在库里新建一个文件夹,命名为templates,里面新建笔记Daily.md
  2. 打开 Templater 设置,把"模板文件夹位置(Template folder location)"指向它;
  3. Daily.md里粘贴下面这段内容,然后保存。
--- 创建日期: <% tp.date.now("YYYY-MM-DD") %> 星期: <% tp.date.now("dddd") %> --- # <% tp.file.title %> ## 今日要事 - [ ] ## 随手记 <% tp.web.daily_quote() %>

代码里的三行命令各司其职:tp.date.now负责按指定格式输出今天的日期和星期;tp.file.title把当前笔记的文件名写进标题;tp.web.daily_quote拉取一句每日名言当作开场白。

使用说明:回到任意一篇笔记,按Ctrl+P打开命令面板,搜索"Templater",选择"插入模板"并选中 Daily,你就会看到日期、星期、文件名被自动填好了。全程手动输入为零。

到这里,你已经跑通了 Templater 最核心的闭环:模板是文档,命令是开关,插入是触发

机制解密:像在餐厅点单一样理解命令

跑到这儿你可能想问:那几个尖括号和百分号到底是什么来头?别急,我给你打个比方。

把 Templater 想象成一家餐厅,你写的每一句命令就是一张点菜单,送进后厨(模板引擎)加工后,再端出来的就是成品内容。而菜单上的"菜",全部挂在一个叫tp的大托盘上,你按tp.模块.菜名的路径点菜,比如tp.date(日期模块)、tp.file(文件模块)、tp.system(系统模块)。点号.就是服务员一路走过去的路标。

其中最关键的是两张不同颜色的菜单纸:

命令类型写法行为典型用法
插值命令<% ... %>把表达式结果原样输出填日期、标题、属性
执行命令<%* ... %>运行 JavaScript,默认不输出判断条件、算逻辑、拼内容

两者的"结束语"都是%>。想象后厨看到<%就端菜上桌,看到<%*则先等你把菜炒好(代码跑完)再说。另外,命令里需要传参数时,字符串要加引号,数字直接写,布尔值只有true/false——跟 JavaScript 的规矩一模一样。

上图是 Templater 模板配置界面的一角:左边是模板名称(today、weather、echo),右边是对应的命令内容,既有系统命令也有纯输出,你可以按需增删,模板再多也不会乱。

场景实战:三套模板,覆盖三个常见工作流

光懂语法不够,我们把知识落进真实业务里。下面三个案例,从"问题"到"步骤"再到"效果"给你完整走一遍。

场景一:每日日记,把仪式感做成流水线

解决什么问题:每天新建日记时反复敲日期、清空待办模板,容易漏、容易烦。

前置条件:Templater 已安装,模板文件夹已配置。

核心思路:让模板自动生成昨天/明天的日记链接,形成前后翻阅链条。

--- 日期: <% tp.date.now("YYYY-MM-DD dddd") %> 心情: <% await tp.system.suggester(["很棒", "一般", "低落"], ["很棒", "一般", "低落"]) %> --- # <% tp.file.title %> ## 昨天回顾 [[<% tp.date.now("YYYY-MM-DD", -1) %>|前一天]] ## 今天最重要的事 - [ ] ## 感恩三件事 1.

分步解读tp.system.suggester会弹出一个选择框,让你点选今天的心情档位并写入 frontmatter;tp.date.now("YYYY-MM-DD", -1)里的-1是日期偏移量,表示"昨天"。注意选择框是异步操作,前面必须加await,否则拿不到结果。

预期结果:新建日记时依次弹出心情选择框,日期、链接、骨架一次成型,点开就能写,前后两天通过链接串成一条时间线。

场景二:周报汇总,用文件名自动锁定第几周

解决什么问题:周报文件名千奇百怪,领导检索困难,你自己也想不起来上周写的什么。

核心思路:用日期函数算出"今年第几周",直接写进文件名和标题。

<%* // 计算今年第 N 周 const weekNum = tp.date.now("W"); // W 是 moment.js 的周数占位符 tR += `# 第 ${weekNum} 周工作周报 ## 本周完成 - [ ] ## 下周计划 - [ ] ## 风险与求助 > 暂无 `; %>

分步解读:这里改用执行命令<%*,因为我们要拼一整段多行内容。变量tR是模板引擎的"输出画布",tR +=就是把文字一笔一笔画上去。tp.date.now("W")返回当前是今年的第几周,标题里的数字就会自动变化。

预期结果:不管哪周调用,周报标题都自动带上正确的周数,归档、检索、汇报全部省心。

场景三:客户拜访记录,选个客户类型自动归档

解决什么问题:销售/顾问类笔记散落各处,事后翻找全凭记忆。

核心思路:用suggester让用户选客户类型,再借助文件夹模板规则把不同拜访记录自动落到对应目录。

--- 客户名称: <% await tp.system.prompt("请输入客户名称") %> 客户类型: <% await tp.system.suggester(["重点客户", "普通客户", "潜在客户"], ["重点", "普通", "潜在"]) %> 拜访日期: <% tp.date.now("YYYY-MM-DD") %> --- # 拜访纪要:<% tp.frontmatter.客户名称 %> ## 沟通要点 - ## 下一步跟进 - [ ] 截止:

分步解读tp.system.prompt弹出输入框收集客户名,tp.frontmatter.客户名称再把 frontmatter 里的值引用回正文,实现"属性驱动内容"。配合设置里的"文件夹模板"功能,为拜访/重点目录指定此模板,新笔记落进该目录时自动套用。

预期结果:选完类型、填完客户名,一份带完整元数据的拜访记录就诞生了,后续按目录、按属性都能秒级检索。

进阶玩家区:4 个让模板"活"起来的技巧

掌握了基础套路,下面是拉开差距的 4 个操作。

技巧一:用 tR 接管整篇输出

执行命令默认哑巴,但你可以抢过话筒。把tR = ""重置画布,就能"抛弃"模板里不想保留的前置内容。比如模板开头有一段仅供内部说明的文字,执行时先用tR = ""清空,再重新拼装,最终落盘的内容就完全由你掌控。

技巧二:想清楚哪些函数必须 await

凡是要跟用户打交道或访问外部资源的函数——promptsuggester、网络请求——几乎都是异步的。规则只有一条:凡是把函数结果存进变量的,一律加await。加少了拿undefined,加多了在某些场景会报错,先用await兜底准没错。

技巧三:动态命令,预览时才"开火"

在命令开头加个+,写成<%+ tp.file.last_modified_date() %>,这条命令就变成了"动态命令":只在预览模式解析一次。适合展示最后修改时间这类"不常变"的信息。但要提醒一句:官方已声明动态命令存在刷新缓存的问题,且有维护停滞风险,追求实时数据请优先考虑 Dataview 等替代方案。

技巧四:把常用逻辑封装成用户函数

如果一段 JavaScript 你在多个模板里反复写,就该提取了。在设置里指定"用户脚本文件夹",把逻辑写成 CommonJS 模块导出,模板里就能以tp.user.函数名的方式调用。你的模板会从"一长串代码"瘦身成"几行函数调用",维护成本直线下降。

翻车现场:新手最容易踩的 5 个坑

每个坑我都给出"错误示范 vs 正确示范",对号入座即可。

坑 1:用插值命令干复杂逻辑的活

<% tp.date.now("YYYY-MM-DD", -1) %>

上面这行想输出"昨天",看似没问题——但如果里面混入了赋值语句或流程控制,<%会把整个过程当成表达式求值,结果往往不是你想要的。记住分工:纯输出用<%,带逻辑用<%*

坑 2:异步函数忘写 await

错误示范:<%* const name = tp.system.prompt("姓名") %>,结果nameundefined。 正确示范:<%* const name = await tp.system.prompt("姓名") %>。别小看这一个词,它值一整晚的排错时间。

坑 3:字符串参数不引号

tp.date.now(YYYY-MM-DD)会报错,因为YYYY-MM-DD被当成了变量;正确写法是tp.date.now("YYYY-MM-DD")。凡是字面文本,一律打上引号。

坑 4:把动态命令当成实时刷新器

预览模式下动态命令只解析一次,改完数据再切回预览,数字纹丝不动。要刷新就得关掉笔记重开。别拿它做仪表盘。

坑 5:跨命令块共享变量

一个<%* %>块里定义的变量,另一个块里取不到。要么把逻辑塞进同一个执行块,要么借助 frontmatter 或用户函数传递数据。

发布前自检清单

  • 每个<%都有配对的%>
  • 纯输出用插值命令,带逻辑用执行命令
  • 所有异步调用都补了await
  • 字符串参数都加了引号
  • 需要的内容通过tR +=或插值命令显式输出
  • 新笔记目录下测试过一遍,而非只在现有文件上验证

资源地图:从入门到精通的下一步

官方文档就躺在项目仓库里,按需查阅,路径都给你标好了:

  • 完整语法与参数规则:docs/src/syntax.md,讲透tp对象层级和函数文档的读法
  • 两种命令类型的定义与工具:docs/src/commands/overview.md,动态命令、空白控制都在这里
  • 各内置模块速查:docs/src/internal-functions/internal-modules/,日期、文件、系统、前端等模块逐个击破
  • 用户函数进阶:docs/src/user-functions/overview.md,脚本函数与系统命令函数的完整说明
  • 设置项逐条解读:docs/src/settings.md,模板热键、启动模板、自动匹配规则都在此列

想本地跑源码研究,克隆仓库即可:

git clone https://gitcode.com/gh_mirrors/te/Templater

源码里值得优先看的三处:src/core/parser/Parser.ts(命令解析核心)、src/core/functions/internal_functions/(各内置模块实现)、test/specs/(端到端测试,是最好的"用法示例集")。

学到这里,你其实已经拥有了一张完整的"模板蓝图":先明确要解决哪个重复场景,再挑出对应的模块函数,最后用命令把它们串起来。剩下的,就是把手边最烦的那条工作流——无论是日记、周报还是别的什么——交给 Templater,亲手做出一张属于你的自动化笔记。别光收藏,现在就去新建一个模板文件夹,从一行tp.date.now()开始吧。

【免费下载链接】TemplaterA template plugin for obsidian项目地址: https://gitcode.com/gh_mirrors/te/Templater

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/19 16:30:22

Qt新手入门指南——创建一个基于Qt Widget的文本查找器(四)

Qt是目前最先进、最完整的跨平台C开发工具。它不仅完全实现了一次编写&#xff0c;所有平台无差别运行&#xff0c;更提供了几乎所有开发过程中需要用到的工具。如今&#xff0c;Qt已被运用于超过70个行业、数千家企业&#xff0c;支持数百万设备及应用。 本教程将介绍如何使用…

作者头像 李华
网站建设 2026/8/19 16:29:23

SPORK:大模型推理加速新范式,让模型自我推测并行验证

1. 项目概述&#xff1a;当大模型学会“自我分叉” 最近在折腾大语言模型推理加速时&#xff0c;我一直在思考一个问题&#xff1a;我们费尽心思搞各种外部工具链优化、模型量化、硬件加速&#xff0c;但模型本身在推理时&#xff0c;是不是就真的只能“一条路走到黑”&#xf…

作者头像 李华
网站建设 2026/8/19 16:25:32

独立产品并发增加后先守住哪些边界

独立产品并发增加后先守住哪些边界 黑客新闻&#xff08;Hacker News&#xff09;首页的推荐帖子带来了第一波真金白银的爆发流量。十分钟内&#xff0c;并发请求从平时的个位数瞬间冲到了 350 QPS。 独立开发者往往一个人搞定产品、前端与后端。产品刚上线时最怕的不是没人用&…

作者头像 李华