smithery/liaocaoxuezhe

obsidian_templater_use

创建和使用 Obsidian Templater 模板,?

Installation

$ npx skills add smithery/liaocaoxuezhe --skill obsidian-templater-use

Also in this package

Other skills from smithery/liaocaoxuezhe.

npx skills add smithery/liaocaoxuezhe

Browse all from smithery/liaocaoxuezhe

More details

Agent compatibility

Declared targets from SKILL.md / docs. Unmarked agents are not listed — the skill may still install via the CLI.

Claude Code Not declared
Cursor Not declared
Codex Not declared
GitHub Copilot Not declared
Windsurf Not declared
Gemini CLI Not declared
Cline Not declared
OpenCode Not declared

Package contents

Files included with this skill beyond the listing page.

  • skill md SKILL.md 9,063 B
  • docs SUMMARY.md 271 B

History

  1. First recorded snapshot · 0 installs

SKILL.md

obsidiantemplateruse

Instructions

Provide clear, step-by-step guidance for Claude.

Templater 插件使用指南

Templater 概述

Templater 是 Obsidian 的高级模板插件,支持动态变量、JavaScript 代码和系统命令,让模板更加智能和灵活。

基本模板变量

核心变量

  • {{title}} - 当前笔记标题
  • {{date}} - 当前日期(默认格式:YYYY-MM-DD)
  • {{time}} - 当前时间(默认格式:HH:mm)
  • {{date:YYYY年MM月DD日}} - 自定义日期格式
  • {{time:HH时mm分}} - 自定义时间格式

基本模板示例

---
title: {{title}}
created: {{date}} {{time}}
tags: [笔记]
---

# {{title}}

**创建时间**:{{date:YYYY年MM月DD日}} {{time:HH时mm分}}

## 内容

## 链接

## 总结

Templater 高级功能

动态变量系统

  • <% tp.file.title %> - 当前文件标题
  • <% tp.file.creation_date("YYYY-MM-DD") %> - 创建日期
  • <% tp.file.lastmodifieddate("YYYY-MM-DD") %> - 最后修改日期
  • <% tp.date.now("YYYY-MM-DDTHH:mm") %> - 当前日期时间
  • <% tp.date.weekday() %> - 星期几
  • <% tp.date.now("YYYYMMDDHHmmssSSS") %> - 时间戳UID

系统交互功能

  • <% tp.system.prompt("请输入笔记主题") %> - 用户输入提示
  • <% tp.system.suggester(["选项1", "选项2"], ["值1", "值2"]) %> - 选择器
  • <% tp.system.clipboard() %> - 获取剪贴板内容
  • <% tp.system.open("path/to/file") %> - 打开文件

文件操作功能

  • <% tp.file.cursor() %> - 光标位置标记
  • <% tp.file.cursor(1) %> - 多个光标位置
  • <% tp.file.path() %> - 当前文件路径
  • <% tp.file.folder() %> - 当前文件夹路径
  • <% tp.file.include("[[文件名]]") %> - 包含其他文件内容

高级数据处理

<%*
// 随机标识符生成
const randomId = Math.floor(Math.random() * 10000000 + 80000000).toFixed(7)
tR += randomId

// 条件判断
const today = new Date()
const hour = today.getHours()
if (hour < 12) {
  tR += "上午好"
} else {
  tR += "下午好"
}

// 循环处理
const tags = ["工作", "学习", "生活"]
for (let tag of tags) {
  tR += `#${tag} `
}
%>

模板创建最佳实践

1. 原子化设计

  • 每个模板专注于特定类型的笔记
  • 避免过于复杂的单个模板
  • 保持模板的可重用性

2. 标准化结构

  • 保持一致的 frontmatter 格式
  • 使用统一的变量命名规范
  • 添加清晰的注释说明

3. 灵活变量使用

  • 结合基本变量和高级动态变量
  • 使用条件判断适应不同场景
  • 利用用户输入增加交互性

4. 错误处理

  • 添加默认值处理
  • 使用 try-catch 处理异常
  • 提供用户友好的错误提示

常用模板类型和示例

Zettelkasten 原子笔记模板

---
uid: <% tp.date.now('YYYYMMDDHHmmssSSS') %>
created: <% tp.date.now('YYYY-MM-DD') %>
updated: <% tp.date.now('YYYY-MM-DD') %>
type: zettel
tags: []
---

# <% tp.file.title %>

<% tp.file.cursor() %>

## 相关链接

---
**创建时间**:<% tp.date.now('YYYY年MM月DD日 HH:mm') %>

读书笔记模板

---
title: <% tp.system.prompt("请输入书名") %>
author: <% tp.system.prompt("请输入作者") %>
created: <% tp.date.now('YYYY-MM-DD') %>
type: book-notes
tags: [读书笔记, <% tp.system.prompt("请输入分类") %>]
---

# <% tp.file.title %>

**作者**:<% tR += tp.system.prompt("请输入作者") %>
**页数**:<% tp.system.prompt("请输入总页数") %>
**阅读进度**:<% tp.system.prompt("当前阅读页数") %>/<% tp.system.prompt("总页数") %>
**评分**:⭐⭐⭐⭐⭐ (0-5)

## 核心观点

<% tp.file.cursor() %>

## 关键摘录

## 个人思考

## 行动计划

## 相关笔记

---
**创建时间**:<% tp.date.now('YYYY年MM月DD日 HH:mm') %>

项目笔记模板

---
project_name: <% tp.system.prompt("项目名称") %>
status: 进行中
priority: <% tp.system.suggester(["高", "中", "低"], ["high", "medium", "low"]) %>
created: <% tp.date.now('YYYY-MM-DD') %>
deadline: <% tp.system.prompt("截止日期 (YYYY-MM-DD)") %>
type: project
tags: [项目, <% tp.system.prompt("项目分类") %>]
---

# <% tp.file.title %>

**项目状态**:<% tp.system.suggester(["计划中", "进行中", "已暂停", "已完成"], ["planning", "in_progress", "paused", "completed"]) %>
**优先级**:<%* const priority = tp.system.suggester(["高", "中", "低"], ["high", "medium", "low"]); if (priority === "high") { tR += "🔴 高" } else if (priority === "medium") { tR += "🟡 中" } else { tR += "🟢 低" } %>
**截止日期**:<% tp.system.prompt("截止日期 (YYYY-MM-DD)") %>
**创建时间**:<% tp.date.now('YYYY-MM-DD') %>

## 项目目标

<% tp.file.cursor() %>

## 任务列表

- [ ] 任务1
- [ ] 任务2
- [ ] 任务3

## 进度记录

### <% tp.date.now('YYYY-MM-DD') %>

## 资源链接

## 遇到的问题

## 解决方案

## 总结反思

---
**创建时间**:<% tp.date.now('YYYY年MM月DD日 HH:mm') %>

会议记录模板

---
meeting_title: <% tp.system.prompt("会议主题") %>
meeting_date: <% tp.date.now('YYYY-MM-DD') %>
meeting_time: <% tp.system.prompt("会议时间") %>
attendees: <% tp.system.prompt("参会人员 (用逗号分隔)") %>
type: meeting-notes
tags: [会议记录]
---

# <% tp.file.title %>

**会议时间**:<% tp.date.now('YYYY-MM-DD') %> <% tp.system.prompt("会议时间") %>
**参会人员**:<% tp.system.prompt("参会人员 (用逗号分隔)") %>
**记录人**:<% tp.system.prompt("记录人") %>

## 会议议程

1. <% tp.file.cursor() %>
2.
3.

## 讨论要点

### 议题1:议题名称
**讨论内容**:
**决策结果**:

### 议题2:议题名称
**讨论内容**:
**决策结果**:

## 行动项

| 任务 | 负责人 | 截止日期 | 状态 |
|------|--------|----------|------|
| 任务1 |  |  | 待开始 |
| 任务2 |  |  | 待开始 |

## 下次会议安排

**时间**:
**议题**:

## 附件链接

---
**记录时间**:<% tp.date.now('YYYY年MM月DD日 HH:mm') %>

日记模板

---
date: <% tp.date.now('YYYY-MM-DD') %>
weekday: <% tp.date.weekday() %>
weather: <% tp.system.prompt("今天天气如何?") %>
mood: <% tp.system.suggester(["😊 很好", "😐 一般", "😔 不好"], ["good", "normal", "bad"]) %>
type: daily
tags: [日记]
---

# <% tp.date.now('YYYY年MM月DD日') %> <% tp.date.weekday() %>

## 今日概要

**天气**:<% tp.system.prompt("今天天气如何?") %>
**心情**:<%* const mood = tp.system.suggester(["😊 很好", "😐 一般", "😔 不好"], ["good", "normal", "bad"]); tR += mood %>

## 专注时刻

<% tp.file.cursor() %>

## 学习收获

## 生活感悟

## 明日计划

## 感恩记录

---
**记录时间**:<% tp.date.now('YYYY年MM月DD日 HH:mm') %>

高级模板技巧

动态文件名生成

<%*
// 根据当前日期和时间生成文件名
const timestamp = tp.date.now('YYYYMMDDHHmmss')
const title = tp.system.prompt("请输入笔记标题")
await tp.file.rename(`${timestamp}-${title}`)
%>

自动标签管理

<%*
// 根据文件夹自动添加标签
const folder = tp.file.folder()
const tags = []
if (folder.includes("Projects")) {
  tags.push("项目")
}
if (folder.includes("Books")) {
  tags.push("读书")
}
tags.push(tp.system.prompt("请输入其他标签 (用空格分隔)"))
tR += tags.join(" ")
%>

智能链接创建

<%*
// 检查相关文件是否存在并创建链接
const relatedFile = tp.system.prompt("请输入相关笔记名称")
const files = app.vault.getFiles()
const exists = files.some(file => file.basename === relatedFile)
if (exists) {
  tR += `[[${relatedFile}]]`
} else {
  tR += relatedFile + " (待创建)"
}
%>

模板使用流程

1. 安装和配置

  • 从社区插件市场安装 Templater
  • 配置模板文件夹路径
  • 启用自动触发器(可选)

2. 创建模板

  • 在 /template/ 文件夹创建新模板
  • 使用 .md 扩展名
  • 编写模板内容,包含必要的变量

3. 应用模板

  • 使用命令面板:"Templater: Insert Template"
  • 设置快捷键快速访问
  • 配置文件夹自动触发器

4. 调试和优化

  • 检查模板语法错误
  • 测试动态变量功能
  • 根据使用情况调整模板结构

常见问题解决

语法错误

  • 检查 <% %> 标签配对
  • 确认 JavaScript 语法正确
  • 验证变量名拼写

性能优化

  • 避免过于复杂的循环
  • 减少文件系统操作
  • 使用缓存机制

兼容性问题

  • 确保插件版本兼容
  • 检查与其他插件的冲突
  • 备份重要模板

Examples

Show concrete examples of using this Skill.