SuperAPI AI 工具集

obsidian-bases

办公与效率

查看项目

更新于 10-15 09:00

技能介绍

用途

obsidian-bases 是一个技能,使兼容 skills 的智能体能够创建和编辑有效的 Obsidian Bases(.base 文件),包括视图、过滤器、公式及所有相关配置。

概述

Obsidian Bases 是基于 YAML 的文件,用于定义 Obsidian 库中笔记的动态视图。一个 Base 文件可以包含多个视图、全局过滤器、公式、属性配置和自定义汇总。

文件格式

Base 文件使用 .base 扩展名,内容为有效 YAML,也可以嵌入 Markdown 代码块中。

完整 Schema 包括以下几个部分:

  • filters:全局过滤器,应用于 base 中的所有视图,可以是单个过滤字符串,或带 and/or/not 的递归过滤对象。
  • formulas:定义可在所有视图中使用的公式属性,格式为 公式名: '表达式'。
  • properties:配置属性的显示名称和设置,支持普通属性、formula.公式名、file.ext 等。
  • summaries:定义自定义汇总公式,例如 values.mean().round(3)。
  • views:定义一个或多个视图,每个视图包含 type(table | cards | list | map)、name、可选的 limit、groupBy、视图专属 filters、order(显示属性顺序)、summaries(属性到汇总公式的映射)。

过滤器语法

过滤器用于缩小结果范围,可全局或按视图应用。支持单个过滤字符串、and(所有条件为真)、or(任一条件为真)、not(排除匹配项)以及嵌套过滤器。

过滤器运算符:== 等于,!= 不等于,> 大于,< 小于,>= 大于等于,<= 小于等于,&& 逻辑与,|| 逻辑或,! 逻辑非。

属性

属性分三类:

  • 笔记属性:来自 frontmatter,如 note.author 或直接 author。
  • 文件属性:文件元数据,如 file.name、file.mtime 等。
  • 公式属性:计算值,如 formula.my_formula。

文件属性包括:file.name、file.basename、file.path、file.folder、file.ext、file.size、file.ctime、file.mtime、file.tags、file.links、file.backlinks、file.embeds、file.properties。

this 关键字:在主内容区指 base 文件自身;被嵌入时指嵌入文件;在侧边栏指主内容区的活动文件。

公式语法

公式从属性计算值,在 formulas 段定义。示例包括:算术(total: "price * quantity")、条件逻辑(status_icon: 'if(done, "✅", "⏳")')、字符串格式化、日期格式化(created: 'file.ctime.format("YYYY-MM-DD")')、复杂表达式(days_old: '((now() - file.ctime) / 86400000).round(0)')。

函数参考

全局函数:date()、duration()、now()、today()、if()、min()、max()、number()、link()、list()、file()、image()、icon()、html()、escapeHTML()。

任意类型函数:isTruthy()、isType()、toString()。

日期函数与字段:字段 date.year、date.month、date.day、date.hour、date.minute、date.second、date.millisecond;函数 date()、format()、time()、relative()、isEmpty()。日期运算支持时长单位 y/year/years、M/month/months、d/day/days、w/week/weeks、h/hour/hours、m/minute/minutes、s/second/seconds,可加减时长或相减得到毫秒差。

字符串函数:字段 string.length;函数 contains()、containsAll()、containsAny()、startsWith()、endsWith()、isEmpty()、lower()、title()、trim()、replace()、repeat()、reverse()、slice()、split()。

数字函数:abs()、ceil()、floor()、round()、toFixed()、isEmpty()。

列表函数:字段 list.length;函数 contains()、containsAll()、containsAny()、filter()、map()、reduce()、flat()、join()、reverse()、slice()、sort()、unique()、isEmpty()。

文件函数:asLink()、hasLink()、hasTag()、hasProperty()、inFolder()。

链接函数:asFile()、linksTo()。

对象函数:isEmpty()、keys()、values()。

正则表达式函数:matches()。

视图类型

  • Table 视图:type: table,可配置 order 和 summaries。
  • Cards 视图:type: cards,可配置 order。
  • List 视图:type: list,可配置 order。
  • Map 视图:type: map,需要 latitude/longitude 属性和 Maps 社区插件。

默认汇总公式

数字类型:Average、Min、Max、Sum、Range、Median、Stddev。 日期类型:Earliest、Latest、Range。 布尔类型:Checked、Unchecked。 任意类型:Empty、Filled、Unique。

完整示例

资料提供四个完整示例:

  1. Task Tracker Base:按标签与扩展名过滤,包含 days_until_due、is_overdue、priority_label 公式,Active Tasks 与 Completed 两个表格视图。
  2. Reading List Base:按 book/article 标签过滤,包含 reading_time、status_icon、year_read 公式,Library 卡片视图与 Reading List 表格视图。
  3. Project Notes Base:按 Projects 文件夹与 md 扩展名过滤,包含 last_updated、link_count 公式与 avgLinks 自定义汇总,All Projects 表格视图与 Quick List 列表视图。
  4. Daily Notes Index:按 Daily Notes 文件夹与日期文件名正则过滤,包含 word_estimate、day_of_week 公式,Recent Notes 表格视图(limit 30)。

嵌入 Bases

在 Markdown 文件中嵌入:![[MyBase.base]],或指定视图 ![[MyBase.base#View Name]]。

YAML 引号规则

  • 含双引号的公式使用单引号:'if(done, "Yes", "No")'
  • 简单字符串使用双引号:"My View Name"
  • 复杂表达式中的嵌套引号需正确转义。

常见模式

  • 按标签过滤:file.hasTag("project")
  • 按文件夹过滤:file.inFolder("Notes")
  • 按日期范围过滤:'file.mtime > now() - "7d"'
  • 按属性值过滤:'status == "active"'、'priority >= 3'
  • 组合多条件:使用嵌套 or/and 结构。

适用场景

适用于在 Obsidian 库中创建类数据库的动态笔记视图,例如任务追踪、阅读清单、项目笔记索引、日记索引等。

限制

Map 视图需要 latitude/longitude 属性和 Maps 社区插件。资料未提供其他平台、收费、价格或效果方面的信息。