关于 obsidian-templater
obsidian-templater 是面向 Obsidian 用户的动态笔记模板技能,介绍 Templater 的模板语法、JavaScript 执行块、内置 API 与日期处理方法。
主要功能
- 01动态模板表达式与代码块
- 02控制模板中的空白字符
- 03使用 tp.* 内置函数
- 04借助 Moment.js 格式化日期
- 05提供笔记模板实现示例
适用场景
- 01生成带动态内容的笔记
- 02按文件夹条件生成模板内容
- 03在模板中处理日期
- 04排查 tp.* API 用法
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ nweii/ agent-stuff --skill obsidian-templater安装后在 Claude Code 中输入/obsidian-templater确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/examples.mdmodules.mdmomentjs.md详细介绍
Templater 模板生成
Templater 是一款用于创建动态笔记模板的 Obsidian 插件。模板文件中嵌入的命令会在将模板应用到笔记时运行,并在相应位置输出结果。
核心模板语法
| 标签 | 行为 |
|---|---|
<% expression %> | 输出表达式的结果 |
<%* code %> | 执行 JS 代码;默认不输出 |
<%+ expression %> | 在预览模式下重新求值(已弃用,请避免使用) |
<%- / -%> | 删除标签前后各一个换行符 |
<%_ / _%> | 删除标签前后的所有空白字符 |
要从 <%* %> 执行块输出内容,请追加到特殊的 tR 字符串:
<%* tR += "some output" %>
要丢弃截至某个位置生成的所有内容(例如,剥离仅供模板使用的 frontmatter):
<%* tR = "" -%>
两种标签类型都可以使用所有 tp.* 函数。
内置模块
选择或调试 tp.* API 时,请阅读 references/modules.md。其中保留了精确的同步行为、属性与函数的区别、异步要求、运行模式、钩子以及用户函数限制。
模板中的空白控制
控制流标签(<%* if (...) { %>、<%* } %>)默认会留下空行。使用 -%> 可删除标签后面的换行符:
<%* if (tp.file.folder() === "Work") { -%>
**Project:** <% tp.frontmatter.project %>
<%* } else { -%>
General note
<%* } -%>
实现示例
需要适用于日常笔记、通过提示词输入元数据并重命名、移除仅供模板使用的 frontmatter、文件夹条件判断或包含笔记的完整模式时,请阅读 references/examples.md。
使用 Moment.js 格式化日期
如需全面的格式化速查表和 JS 操作参考,请参阅 momentjs.md。在为 tp.date.now() 定义 format 字符串,或在 <%* %> 块中使用 moment 全局对象操作日期时,请参考此文档。
通过 obsidian-clis 进行可选的 vault 集成
如果 obsidian-clis skill 可用且 Obsidian 正在运行,vault 上下文有助于提升输出质量:
obsidian properties counts # what frontmatter properties exist across the vault
obsidian tags counts sort=count # most-used tags
obsidian read file="Daily Note" # read an existing template for style reference
在用户请求范围内运行相关的只读 CLI 检查,并遵循 vault 的说明。用户要求创建或更新模板,即授权在该范围内写入;仅在有未确定的选择、破坏性更改或用户要求设置审核节点时才询问。遵循环境的执行权限。
官方文档链接
已渲染的文档(便于阅读): https://silentvoid13.github.io/Templater/
适用于 LLM 的 Templater 摘要: 如需预处理且便于审核的官方 Templater 文档摘要,请参阅 https://context7.com/silentvoid13/templater/llms.txt。