Obsidian

模板进阶玩法:在模板里用 Templater 变量,同步时自动填日期、随机配图

笔记同步助手 · ·Obsidian 教程
ObsidianTemplater模板随机配图教程

模板进阶:在模板里用 Templater 变量,同步时自动填日期、随机配图

如果你已经在用 {{{title}}}、{{{content}}} 这类模板变量(没用过的话先看《模板变量完全指南》),你已经能让每篇笔记按固定格式落盘了。但有些东西是「变量表里没有、得当时算一下才知道」的,比如:

  • 今天是几号(同步那一刻的日期)
  • 「去年今日」是哪天,做成一个双链
  • 随机来一张配图,让每篇笔记开头不单调

这类「同步时才算得出」的内容,用一个免费的 Obsidian 社区插件 Templater 就能实现:模板里多写一类用 <% %> 包起来的变量,同步落盘那一刻自动算成真实内容。

一、先看效果

比如把文章模板写成这样:

---
日期:: <% tp.date.now("YYYY-MM-DD") %>
---
![](<% tp.web.random_picture("512x384", "landscape") %>)
{{{content}}}

同步后落盘的笔记就是:

---
日期:: 2026-10-12
---
![](https://图片地址/一张随机风景图.jpg)
(文章正文……)

<% %> 的位置变成了算出来的值,{{{content}}} 照常填入正文——两类变量可以混着用,先算 <% %>,再填 {{{ }}}。

二、准备:装一次 Templater 插件就好

🔔 本功能需要「满血版」插件。「笔记同步助手」在 Obsidian 里有两个发行版本,看第三方插件列表里的名字就能区分:显示中文名「笔记同步助手」的是满血版,功能齐全;从官方插件市场一键安装、显示拼音名「Bi Ji Tong Bu」的是商店版,少一些高级功能——Templater 变量接力只有满血版提供,商店版里模板中的 <% %> 会一直保持原样、不会渲染成值。 还没有满血版?照《安装教程》方法一:下载安装包手动安装或方法三:先装 China BRAT 再一键安装装一个即可。

  1. Obsidian 设置 → 第三方插件 → 浏览,搜 Templater,安装并启用。
  2. 不用改它的任何设置。笔记同步助手只在后台借用它的变量计算能力,不会动你的文件、也不需要你配置模板文件夹。

没装 Templater 会怎样?——什么都不影响:同步照常完成,模板里的 <% %> 会原样留在笔记里(编辑模式能看到源码)。装好启用之后,下一次同步的新内容开始自动渲染;已经落盘的旧笔记不会被回头改写。

设置页也帮你想到了:模板输入框下方有实时提示——检测到你用了 Templater 变量但插件没装,会提示「安装并启用 Templater 插件后,同步时会把 <% %> 插值渲染成值」。

本功能需「笔记同步助手」3.2.5 及以上版本(2026 年 8 月起的新版本都带)。

三、哪些模板里支持

模板在设置的哪里
文章模板路径设置 → 模板设置
助手消息模板路径设置 → 消息处理
合并文件模板(文件头)路径设置 → 消息处理(什么是文件头)
单篇消息正文模板 / 单篇消息笔记属性模板消息处理 → 开启「消息单独设置」后
邮件正文模板 / 邮件笔记属性模板开启邮件单独配置后

文件夹、文件名里不能写(特意限制的)

文件夹、文件名这类路径设置不支持 Templater 变量。原因很实际:路径要的是「同一篇文章每次算出来都是同一个地方」,而 Templater 变量里有不少是每算一次变一个值的(随机图、精确到秒的时间)——真放进去,同一篇文章每次同步会落到不同的文件里,库里会冒出一堆重复文件。

路径设置请继续用 {{{date}}}、{{{title}}} 这类变量(见《模板变量完全指南》)。

四、常用写法

想要什么这样写
今天的日期<% tp.date.now("YYYY-MM-DD") %>
精确到分钟的时刻<% tp.date.now("YYYY-MM-DD HH:mm") %>
「去年今日」的双链[[<% tp.date.now("YYYY-MM-DD", -365) %>]]
一张随机配图<% tp.web.random_picture("512x384", "landscape") %>
你在 Templater 里自定义的变量tp.user.你的变量名

Templater 绝大多数「取值」类的变量都能用。具体还有哪些可以翻 Templater 自己的文档,只要写法是 <% %> 中间放一个「算出值的式子」,这里都支持。

五、两种「日期」别用混

<% tp.date.now(...) %> 和 {{{dateSaved}}} 都能给出日期,但含义不同:

<% tp.date.now(...) %>{{{dateSaved}}}
是什么同步那一刻的日历时间每条内容自己的保存时间
谁的值同一轮同步进来的所有内容共用一个值每条内容各是各的
什么时候变每次同步都可能变保存后就不变
适合模板性的装饰(「本轮同步日」)给内容标注「它是哪天存的」(推荐日常用这个)

合并文件模板再补充一点:它的 <% %> 取值是「新建该文件那一刻」的——文件头只在新建时写一次,之后不会改写,这和合并文件模板本来的规则一致(见《合并消息模式》)。

六、这些写法不支持(防坑指南)

设置页会实时提示,但提前知道更省事:

  1. <%* 开头的「执行块」——网上抄来的模板经常带。这类段落不是「算个值」,而是能执行一串动作(改名、移动、新建文件),放进来会把你的文件结构改乱。笔记同步助手不执行它们,原样保留在笔记里,你能看见没生效的源码。
  2. tp.file.*、tp.frontmatter.*(改文件 / 读文件类)——同步时目标文件往往还没创建,算不出正确结果,不支持。
  3. 弹窗类(比如 tp.system.prompt)——同步在后台跑,弹出来的窗没人点,会一直卡住。这类一律不执行。
  4. <% 没有配对的 %>——Templater 遇到会放弃整个模板的渲染。设置页会提示你补全。

对应的提示长这样:

  • ℹ️ 检测到 Templater 变量:安装并启用 Templater 插件后,同步时会把 <% %> 插值渲染成值。
  • ⚠️ 不支持 <%* 执行块:这些段落会原样保留在笔记里,不会被执行。
  • ⚠️ 不支持的 Templater 调用(会原样保留在笔记里):tp.file.*

七、失败了会怎样

原则是绝不耽误你的同步:

  • Templater 没装 / 没启用 / 渲染出错 / 计算超时(约 20 秒)——标签原样落盘,同步照常完成,不中断、不丢内容。
  • 你在笔记里看见 <% %> 源码,就说明这一轮没渲染成。装好 Templater 下轮生效;或者干脆把模板里的标签删掉。
  • 手机端:Templater 装在哪台设备、哪台设备同步时就会渲染;没装的设备按上面的规则原样保留。

常见问题

笔记里出现 <% %> 源码怎么办?

多半是这台设备没装或没启用 Templater。装上启用,下一次同步的新内容就会自动渲染;旧笔记不会被回头改写,介意的话手动删掉那些标签。

为什么我网上抄的模板没生效?

先看设置页模板框下方的提示。网上模板最常见的两类问题:带 <%* 执行块、带 tp.file.*——都会被原样保留(见上面第六节),这是防止抄来的模板改动你的文件。

一轮同步进 20 篇文章,随机配图会每篇不一样吗?

不会。模板每轮同步只计算一次,同一轮的所有内容共用同一张随机图、同一个时刻——几十条内容如果各算一次,一条就要多等一次网络。想要不同的图,分几轮同步,或者去掉随机图改用固定 banner。

会不会拖慢同步?

正常不会。模板每轮只算一次,日期这类计算瞬间完成。只有随机图这种要联网的会慢一点,网络差时最多等约 20 秒就放弃、原样保留,不会卡住整轮同步。

和 {{{ }}} 变量能混着用吗?

能,而且推荐这么用:<% %> 负责「同步那一刻才算」的内容,{{{ }}} 负责「每条内容自己的」信息。渲染顺序是先算 <% %>,再填 {{{ }}}。

相关阅读