obsidian_base_use
SKILL.md
obsidian_base_use
Instructions
Provide clear, step-by-step guidance for Claude.
BASE 数据库使用指南
BASE 数据库概述
BASE 是 Obsidian 的数据库功能,允许您基于文件属性、标签和内容创建动态视图。
创建和嵌入 BASE
创建方式
- 命令面板:"Bases: Create new base"
- 文件管理器:右键文件夹 → "New base"
- 工具栏:点击创建新base图标
嵌入方式
- 嵌入文件:
![[文件名.base]] - 嵌入代码块:使用
base代码块
BASE 语法结构详解
完整语法示例
# 基础配置
name: "项目数据库"
description: "项目管理数据库"
# 过滤器 - 定义包含哪些文件
filters:
and:
- file.hasTag("项目")
- file.inFolder("Projects")
- file.name != "模板"
# 属性定义 - 显示哪些属性
properties:
优先级:
displayName: "优先级"
type: "select"
options: ["高", "中", "低"]
截止日期:
displayName: "截止日期"
type: "date"
进度:
displayName: "进度"
type: "number"
min: 0
max: 100
# 公式属性 - 动态计算属性
formulas:
总价: "单价 * 数量"
状态: 'if(进度 == 100, "✅ 完成", if(截止日期 < today(), "⚠️ 逾期", "🔄 进行中"))'
剩余天数: '(截止日期 - today()).toFixed(0)'
# 视图配置 - 不同的展示方式
views:
- type: table
name: "项目表格"
filters:
and:
- '优先级 == "高"'
order:
- 截止日期
- file.name
groupBy: 状态
- type: kanban
name: "项目看板"
groupBy: 状态
order:
- 优先级
- type: calendar
name: "项目日历"
dateProperty: 截止日期
属性类型详解
笔记属性(Frontmatter)
- 存储在笔记 YAML frontmatter 中的属性
- 示例:
tags: [项目, 重要]
文件属性
file.name- 文件名file.path- 文件路径file.size- 文件大小file.ctime- 创建时间file.mtime- 修改时间
公式属性
- 基于其他属性计算的动态值
- 支持数学运算、字符串操作、条件判断
视图类型功能
表格视图
- 类似 Excel 的表格展示
- 支持排序、筛选、分组
- 适合数据分析和概览
卡片视图
- 卡片式布局
- 适合展示笔记摘要
- 支持自定义卡片模板
日历视图
- 按日期组织笔记
- 适合时间线管理
- 支持拖拽调整日期
看板视图
- 类似 Trello 的看板
- 适合项目管理
- 支持状态流转
过滤器功能详解
基本过滤条件
filters:
and:
- file.hasTag("项目") # 包含特定标签
- file.inFolder("Projects") # 在特定文件夹
- file.name.contains("重要") # 文件名包含文本
- '优先级 == "高"' # 属性值等于
- '进度 > 50' # 数值比较
- '截止日期 > today()' # 日期比较
逻辑运算符
filters:
or:
- file.hasTag("项目")
- file.hasTag("任务")
and:
- file.inFolder("工作")
- not: file.hasTag("已完成")
公式功能详解
数学运算
formulas:
总价: "单价 * 数量"
平均分: "(分数1 + 分数2 + 分数3) / 3"
折扣价: "原价 * 0.8"
字符串操作
formulas:
全名: "姓氏 + ' ' + 名字"
状态: 'if(完成, "已完成", "进行中")'
优先级显示: '"优先级:" + 优先级'
日期处理
formulas:
剩余天数: '(截止日期 - today()).toFixed(0)'
创建天数: '(today() - file.ctime).toFixed(0)'
是否逾期: '截止日期 < today()'
BASE 数据库创建流程
1. 确定需求
- 明确要管理的数据类型
- 确定需要的视图和功能
2. 设计结构
- 定义过滤器条件
- 设置属性字段
- 设计公式计算
3. 创建 BASE
- 使用命令面板创建新 BASE
- 配置语法结构
- 测试功能完整性
4. 嵌入使用
- 在相关笔记中嵌入 BASE
- 设置合适的显示位置
实用示例模板
项目管理 BASE
name: "项目管理数据库"
filters:
and:
- file.inFolder("Projects")
properties:
优先级:
displayName: "优先级"
type: "select"
options: ["高", "中", "低"]
截止日期:
displayName: "截止日期"
type: "date"
进度:
displayName: "进度"
type: "number"
min: 0
max: 100
formulas:
状态: 'if(进度 == 100, "✅ 完成", if(截止日期 < today(), "⚠️ 逾期", "🔄 进行中"))'
剩余天数: '(截止日期 - today()).toFixed(0)'
views:
- type: table
name: "项目概览"
order:
- 优先级
- 截止日期
- type: kanban
name: "项目看板"
groupBy: 状态
读书笔记 BASE
name: "读书笔记数据库"
filters:
and:
- file.hasTag("书籍")
properties:
作者:
displayName: "作者"
总页数:
displayName: "总页数"
type: "number"
已读页数:
displayName: "已读页数"
type: "number"
开始日期:
displayName: "开始日期"
type: "date"
formulas:
阅读进度: '(已读页数 / 总页数 * 100).toFixed(1)'
状态: 'if(阅读进度 == 100, "✅ 已读完", "📖 阅读中")'
views:
- type: table
name: "阅读清单"
filters:
and:
- '阅读进度 < 100'
order:
- 开始日期
任务管理 BASE
name: "任务管理数据库"
filters:
and:
- file.hasTag("任务")
properties:
截止日期:
displayName: "截止日期"
type: "date"
优先级:
displayName: "优先级"
type: "select"
options: ["紧急", "重要", "一般"]
状态:
displayName: "状态"
type: "select"
options: ["待开始", "进行中", "已完成", "已取消"]
formulas:
是否逾期: '截止日期 < today()'
状态显示: 'if(状态 == "已完成", "✅ " + 状态, if(是否逾期, "⚠️ " + 状态, 状态))'
views:
- type: kanban
name: "任务看板"
groupBy: 状态
order:
- 优先级
- 截止日期
Examples
Show concrete examples of using this Skill.