
终极指南快速掌握Templater把Obsidian模板自动化彻底玩明白【免费下载链接】TemplaterA template plugin for obsidian项目地址: https://gitcode.com/gh_mirrors/te/Templater你是否经常在Obsidian里重复搭建同样的笔记框架每建一条会议记录都要手动补日期、敲标题、复制粘贴固定格式每天写日记光是时间戳和天气那一行就要折腾半天。如果你也有这种复制粘贴到怀疑人生的经历那么Templater——这款 Obsidian 模板插件正是为你准备的解围方案。它能让你把手动填表变成一键生成日期自动带、属性自动写、连文件名都能按照你的规则自动生成。打个比方普通模板是一张印好的空白表格而 Templater 是一位自带小工具的智能前台。你只需要把需求写成一句话它就能替你查日期、问你问题、翻文件、跑逻辑最后交给你一份填好的成品。下面我们带着新手最关心的几个问题一步步把它玩明白。一、先回答你最想问的 4 个问题1. Templater 和普通模板到底有什么不一样一句话答案普通模板是死的——里面写什么就填什么Templater 是活的——里面的指令会在每次使用时现场计算结果。直观示意普通模板里的日期是固定文字Templater 模板里是一句自动生成今天日期的指令普通模板 创建时间2026-08-18 Templater 创建时间% tp.date.now(YYYY-MM-DD) %新手常见误区以为tp.date.now是一段需要安装的额外代码。其实它是 Templater 内置的日期模块开箱即用你只需要照格式调用。2. 怎么和 Templater 对话两种标签何时用哪个一句话答案所有指令都包在% ... %里用%表示我要输出结果用%*表示我要执行一段逻辑但默认不输出。直观示意就像餐厅里点菜——插值命令是直接上菜输出结果执行命令是去后厨指挥运行代码命令类型开始标签典型用途输出行为插值命令%插入日期、标题等结果自动输出执行命令%*条件判断、用户交互默认不输出% tp.date.now() % // 插值命令直接显示今天日期 %* tR 这行会被输出; % // 执行命令通过 tR 变量手动输出新手常见误区用%包住一大段逻辑代码结果 Obsidian 把它当成表达式求值输出一堆看不懂的内容。记住要显示结果用%要执行逻辑用%*。3. tp 到底是什么怎么找到我需要的函数一句话答案tp是一个总目录所有功能都按模块分类挂在它下面用点号一层层往下找就像图书馆按书架找书。直观示意tp.模块.函数(参数)看懂这个结构你就掌握了 80% 的用法tp.date.now() // 日期书架今天日期 tp.file.title // 文件书架当前笔记标题 tp.system.prompt(请输入内容) // 系统书架弹出输入框 tp.web.daily_quote() // 网络书架随机名言新手常见误区硬背函数名。其实插件内置了自动补全你在模板里输入tp.时Obsidian 会列出当前模块下所有可用函数及参数说明边输边提示。4. 为什么模板里的用户输入老是变成 undefined一句话答案因为prompt、suggester这类系统函数是异步的忘了加await代码不等用户回答就往下跑了。直观示意异步就像外卖配送你下单后不等人送到就拆包装当然拿到的是空气// 错误没等用户输入就执行下一步 const name tp.system.prompt(你的名字); tR 你好${name}; // 输出你好undefined // 正确await 会等用户输完再继续 const name await tp.system.prompt(你的名字); tR 你好${name}; // 输出你好小明新手常见误区只在某些命令前加 await。凡是会弹出窗口、请求网络的函数都要加 await包括prompt、suggester、web.request、file.create_new。记住这一点Templater 的语法只有三块拼图——标签% %、总目录tp.模块.函数、异步等待await。拼图齐了剩下的就是想象力。二、三个贴近生活的实战从照抄到随手改场景一会议记录从手填三分钟到一键生成背景需求每次开会前你都要新建笔记手动敲日期、参会人、议程框架等会议结束还得补下次会议时间。这个过程每天都在重复烦不烦实现过程新建一个模板文件粘贴以下内容然后在 Obsidian 设置里把这个模板绑定到新建笔记或命令面板--- 创建时间: % tp.date.now(YYYY-MM-DD HH:mm) % 参会人员: % await tp.system.prompt(请输入参会人员用逗号分隔) % 会议类型: % tp.system.suggester([周会, 项目会, 评审会], [周会, 项目会, 评审会]) % --- # % tp.file.title % ## 会议议程 - [ ] ## 讨论要点 1. ## ✅ 行动项 - [ ] 负责人 截止日期 %* const nextWeek tp.date.now(YYYY-MM-DD, 7); tR \n## 下次会议${nextWeek}; %最终效果运行模板的瞬间Obsidian 先弹出输入框问参会人员再弹选择框让你挑会议类型你输入完毕后笔记里已经自动带上了创建时间、当前标题、完整会议框架以及提前算好的下周会议日期。你只需要专心开会不用再和格式较劲。适用时机任何有固定结构、又需要个性化信息的笔记——例会记录、客户拜访、复盘总结都适用。场景二读书笔记让书名标签自动生成背景需求你的读书笔记每次都手写 frontmatter书名、作者、开始日期读完还要手动补标签经常忘记导致标签体系乱成一团。实现过程创建读书笔记模板利用tp.frontmatter读取刚写入的属性再在代码块里基于书名自动拼出标签--- 书名: % await tp.system.prompt(请输入书名) % 作者: % await tp.system.prompt(请输入作者) % 开始阅读: % tp.date.now(YYYY-MM-DD) % 当前进度: 0% --- # % tp.frontmatter.书名 % - 阅读笔记 ## 内容概要 % await tp.system.prompt(请用一句话概括本书内容) % ## 关键章节笔记 | 章节 | 重点内容 | 个人思考 | |------|---------|---------| | | | | %* const bookTag tp.frontmatter.书名.replace(/\s/g, -); tR \n## ️ 标签\n#book #${bookTag.toLowerCase()}; %最终效果输入书名百年孤独笔记末尾会自动生成#book #百年孤独标签英文名会转成小写并用连字符连接。frontmatter 与正文内容、标签三者联动彻底告别忘了打标签。适用时机凡是你希望笔记属性影响正文内容的场景——书籍、项目、人物档案这类以属性为核心的笔记都能举一反三。场景三项目管理日期偏移自动排期背景需求项目启动时你想在笔记里带一个甘特图还想让截止日期始终是今天 30 天而不是手写一个会过期的固定日期。实现过程tp.date.now的第二个参数就是天数偏移量负数表示过去正数表示未来。用它把关键日期全部活起来--- 项目名称: % tp.file.title % 启动日期: % tp.date.now(YYYY-MM-DD) % 负责人: % await tp.system.prompt(项目负责人) % 状态: 进行中 --- # % tp.file.title % ## 项目概述 % await tp.system.prompt(请输入项目概述) % ## 项目目标 - [ ] ## 项目里程碑 - [ ] 需求分析启动后 7 天% tp.date.now(YYYY-MM-DD, 7) % - [ ] 设计开发启动后 21 天% tp.date.now(YYYY-MM-DD, 21) % - [ ] 上线发布启动后 45 天% tp.date.now(YYYY-MM-DD, 45) % %* const deadline tp.date.now(YYYY-MM-DD, 30); tR \n## ⏰ 首轮截止日期${deadline}; %最终效果无论你哪天启动项目笔记里的启动日期、各里程碑、截止日期都会以当天为基准自动推算永远不会过时。你甚至可以结合tp.date.weekday算出下周一这样的相对日期。适用时机需要相对时间的任何模板——日报昨天/今天、周报本周一、倒计时清单、习惯打卡。三、新手避坑清单错误写法 vs 正确写法把你最容易踩的坑一次性列全每一条都配了对照照着改就行#错误写法正确写法为什么错1%* tR 你好 %却看不到输出用% tp.date.now() %直接输出或用tR 你好执行命令默认不输出且tR要追加而不是覆盖2const x tp.system.prompt(?)const x await tp.system.prompt(?)异步函数不等待变量拿到的是 undefined3tp.date.now(format: string YYYY-MM-DD)tp.date.now(YYYY-MM-DD)调用时只传值不写参数名和类型4% tp.file.title() %% tp.file.title %title 是属性不是函数别加括号5在模板里写死绝对路径/Users/...用tp.file.path(true)获取相对路径仓库换机器就失效相对路径才可移植6在多个命令块间共享变量把逻辑放进同一个%* ... %块每个命令块是独立执行环境变量互相隔离7到处都用%动态命令只对预览时需要刷新的内容使用动态命令每次预览都重新执行多了会卡关于动态命令多说一句%前缀如% tp.date.now() %能让内容在阅读/预览视图下自动刷新适合最后查看时间这类实时信息。但它是有性能代价的别把它当默认选项。四、下一步往哪走从会用进阶到会造看完这些你已经能写出解决实际问题的模板了。想再上一层楼可以参考这条进阶路线啃透官方文档建议从 docs/src/syntax.md 开始理解函数参数类型string、number、boolean的写法再看 docs/src/commands/overview.md 掌握命令与空白控制日期、文件、系统三大高频模块的细节在 docs/src/internal-functions/internal-modules/date-module.md、docs/src/internal-functions/internal-modules/file-module.md、docs/src/internal-functions/internal-modules/system-module.md 里有完整参考。玩转用户函数重复代码别硬抄把常用逻辑封装成用户脚本函数或用户系统函数详见 docs/src/user-functions/overview.md。你的模板会从一坨代码变成一句调用。安装与配置如果想研究源码或自建环境可以执行git clone https://gitcode.com/gh_mirrors/te/Templater后参照 docs/src/installation.md 完成安装并在 docs/src/settings.md 里了解模板文件夹、启动模板等关键设置。动手是最好的学习今天就从会议记录模板开始照着本文案例改 10 分钟再把三个案例合并成你自己的周报模板体会模块组合tp.datetp.systemtp.frontmatter的威力。记住这句心法Templater 学的是组合不是背诵。掌握tp.模块.函数的查找方式配合await与tR两把钥匙你完全可以根据自己的笔记习惯搭建一套专属的自动化模板库。现在就去新建一个模板让 Obsidian 开始替你干活吧【免费下载链接】TemplaterA template plugin for obsidian项目地址: https://gitcode.com/gh_mirrors/te/Templater创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考