菜单

8.1.20250715 Obsidian插件实现YAML标题更新

#obsidian #templater #commander #卡片盒笔记法 #编码

使用obsidian 插件 templater,实现了脚本更新yaml的标题属性, 配合 Commander ,将这个能力绑定到保存宏组合中,尝试了豆包元宝,最终使用[[kimi]]实验成功

/* 构造日期前缀 */
const today = new Date();
const y = today.getFullYear();
const m = String(today.getMonth() + 1).padStart(2, '0');
const d = String(today.getDate()).padStart(2, '0');
const datePrefix = `8.1.${y}${m}${d}`;

/* 读取现有 title */
const cache = app.metadataCache.getFileCache(file);
const currentTitle = cache?.frontmatter?.title;

/* 决定新标题 */
let newTitle;
if (!currentTitle) {
  // 无值:用文件名
  newTitle = `${datePrefix} ${file.basename}`;
} else if (!/^\d/.test(String(currentTitle).trim())) {
  // 有值但非数字开头:日期 + 原 title
  newTitle = `${datePrefix} ${String(currentTitle).trim()}`;
} else {
  // 已满足要求,直接返回
  new Notice("title 已符合规则,未变动");
  return;
}


一句话规则

  • 有值且不以数字开头 → 8.1.YYYYMMDD 原title
  • 无值 → 8.1.YYYYMMDD 文件名

使用方法:

  • js保存为 setTitleFromFilename.js(放在 Templater 的 Scripts 目录):
  • 新建摸板笔记,在任意模板或空模板里放一行:
<%* 
  await tp.user.setTitleFromFilename(tp); 
  return "";   // 返回空串
%>

最终绑定到commander