mcpField
O
obsidian-bases

obsidian-bases

github.com/timlai666生产力042 次安装1 天前更新
代码仓库

关于 obsidian-bases

Obsidian Bases Skill 指导在 Obsidian 知识库中创建和维护用于展示笔记视图的 `.base` 文件,适合构建任务追踪器、索引等结构化视图,并涵盖 YAML、公式、字段和实际视图验证。

主要功能

  1. 01检查知识库属性和约定
  2. 02定义筛选条件、视图和显示字段
  3. 03添加公式并处理可选值
  4. 04验证 YAML 和属性引用
  5. 05在 Obsidian 中检查渲染视图

适用场景

  1. 01构建任务追踪视图
  2. 02创建阅读清单视图
  3. 03索引每日笔记
  4. 04排查 base 中的公式或筛选条件

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/timlai666/skills --skill obsidian-bases

安装后在 Claude Code 中输入/obsidian-bases确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
examples.md
FUNCTIONS_REFERENCE.md
properties-and-formulas.md
schema-and-views.md

详细介绍

Obsidian Bases 技能

工作流

  1. 编辑时读取目标 .base 文件,并在创建或更改视图前检查知识库中相关笔记的属性和约定。
  2. 确定哪些笔记属于此数据库,然后选择视图和要显示的属性。使用嵌套筛选、分组、汇总或视图专属设置前,请阅读架构和视图。
  3. 按需添加公式。有关文件属性、this、日期运算和公式示例,请阅读属性和公式;有关实际使用的函数,请参阅函数参考。
  4. 对于任务跟踪器、阅读清单或每日笔记索引,请先阅读相应的完整示例,再据此调整。保留知识库中实际使用的字段名称和类型。
  5. 在预期的知识库位置保存具有有效 YAML 的 .base 文件,然后运行以下验证。

最简数据库

数据库是扩展名为 .base 的 YAML 文件。此示例列出活跃笔记, 并计算一个基于日期的列。请根据知识库调整 status 和 due_date。

filters:
  and:
    - 'file.ext == "md"'
    - 'status == "active"'
formulas:
  days_until_due: 'if(due_date, (date(due_date) - today()).days, "")'
properties:
  formula.days_until_due:
    displayName: "Days Until Due"
views:
  - type: table
    name: "Active Notes"
    order:
      - file.name
      - status
      - formula.days_until_due

全局筛选器适用于所有视图;视图筛选器会进一步缩小该视图的范围。 完整架构以及表格、卡片、列表和地图示例请参阅 架构和视图。选择视图前,请检查所需插件 和视图专属设置。

属性和公式参考

  • 笔记属性来自 frontmatter:note.author 或 author。
  • 文件属性描述文件:file.name、file.mtime 等。
  • 公式属性引用定义:formula.my_formula 必须对应 formulas 下的 my_formula 条目。
  • 检查相关笔记中是否存在缺失值,并确认数据类型。属性不必在每篇笔记中都存在;使用可选输入时应进行保护。

有关完整的文件属性表、this 的行为和公式示例,请参阅 属性和公式。

常见问题

YAML 引号

表达式中包含双引号时,请使用单引号。对于 YAML 可能会解析为结构的显示字符串,也应加上引号,例如冒号后跟空格的字符串。

Incorrect: displayName: Status: Active
Correct:   displayName: "Status: Active"

Incorrect: label: "if(done, "Yes", "No")"
Correct:   label: 'if(done, "Yes", "No")'
时长和缺失值

相减日期会返回一个 Duration。应用数值函数前,请访问 .days、 .hours、.minutes、.seconds 或 .milliseconds 等数值字段。

Incorrect: (now() - file.ctime).round(0)
Correct:   (now() - file.ctime).days.round(0)

转换或相减可选日期输入前,应先进行保护:

formulas:
  days_until_due: 'if(due_date, (date(due_date) - today()).days, "")'

更多日期表达式请阅读 日期运算。

嵌入数据库

![[MyBase.base]]


![[MyBase.base#View Name]]

验证

  • 将实际的 .base 解析为 YAML。修复引号错误,并确认字段包含具体值,而不是架构中的备选项。
  • 验证每个被引用的 formula.X 都存在于 formulas 下;根据预期笔记检查笔记属性的名称和类型。
  • 根据所需结果检查筛选器、显示列、分组和汇总,包括存在可选值缺失的笔记。
  • 在 Obsidian 中打开 .base 并实际检查每个受影响的视图。确认公式、筛选器和汇总均正常工作,然后修正并重新检查故障。
  • 如果无法使用 Obsidian 或所需插件,请报告未经验证的视图或行为。仅解析 YAML 并不能证明渲染或公式正确。

参考资料

评论

支持 Markdown