feat(obsidian): 描述去冗余 + 核心补 OFM 语法 + workflow 补 Web Clip
对标社区基准(kepano/obsidian-skills 31.8k★、AgriciDaniel/claude-obsidian
15 技能完整体系)后的 P1-P6 优化合集:
- P1: 8 个子技能 description 末尾去"伴随激活"冗余句(路由不识别该声明)
- P5: obsidian-plugins 描述聚焦环境层(插件/主题/CSS/Templates/快捷键/命令)
- P6: obsidian-workflow-pkm 描述加"多步骤复合需求优先匹配"前置引导
- P3: 核心 obsidian skill 增补 OFM 语法速查章节
(wikilinks/embeds/callouts/block refs/highlight/math 全表)
- P4: workflow-pkm 新增 Workflow 8 Web Clip → Permanent
(引用 defuddle 社区标准,WebFetch 兜底)
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
---
|
||||
name: obsidian-bases
|
||||
description: Obsidian 1.9+ 原生数据库视图(Bases):查询 .base 文件中的结构化视图(JSON/CSV/MD 输出)、在 base 中创建新条目。触发词:Bases、base 视图、数据库视图、结构化查询笔记、base query。不用于 Dataview(社区插件,用其原生 DQL 语法)。依赖 YAML frontmatter 属性,与 obsidian-meta 配合使用;需 Obsidian ≥ 1.9。检测到 .obsidian/ 时与核心技能同步激活。
|
||||
description: Obsidian 1.9+ 原生数据库视图(Bases):查询 .base 文件中的结构化视图(JSON/CSV/MD 输出)、在 base 中创建新条目。触发词:Bases、base 视图、数据库视图、结构化查询笔记、base query。不用于 Dataview(社区插件,用其原生 DQL 语法)。依赖 YAML frontmatter 属性,与 obsidian-meta 配合使用;需 Obsidian ≥ 1.9。
|
||||
---
|
||||
|
||||
# Obsidian Bases · 原生数据库视图
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
---
|
||||
name: obsidian-daily
|
||||
description: Obsidian 每日笔记工作流:读取/追加今日笔记内容、晨间规划注入、晚间回顾、AI 操作审计日志写入、快速灵感捕获。触发词:每日笔记、daily note、今天的笔记、晨间笔记、晚间回顾、写日志、快速捕获、quick capture。周报/月报汇总请用 obsidian-workflow-pkm,跨日搜索请用 obsidian-search。需 Obsidian Daily Notes 核心插件已启用。检测到 .obsidian/ 时与核心技能同步激活。
|
||||
description: Obsidian 每日笔记工作流:读取/追加今日笔记内容、晨间规划注入、晚间回顾、AI 操作审计日志写入、快速灵感捕获。触发词:每日笔记、daily note、今天的笔记、晨间笔记、晚间回顾、写日志、快速捕获、quick capture。周报/月报汇总请用 obsidian-workflow-pkm,跨日搜索请用 obsidian-search。需 Obsidian Daily Notes 核心插件已启用。
|
||||
---
|
||||
|
||||
# Obsidian Daily · 每日笔记工作流
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
---
|
||||
name: obsidian-history
|
||||
description: Obsidian 版本历史与同步管理:查看/恢复/对比 File Recovery 本地快照(`history:*`)、管理 Obsidian Sync 的暂停与恢复(`sync:*`)、从云端回收站恢复误删文件。触发词:误删、恢复笔记、文件历史、版本恢复、版本对比、diff 笔记、Obsidian Sync、同步暂停。不用于 git 版本控制(直接 Bash git 命令)。Sync 相关命令需付费 Obsidian Sync 订阅。检测到 .obsidian/ 时与核心技能同步激活。
|
||||
description: Obsidian 版本历史与同步管理:查看/恢复/对比 File Recovery 本地快照(`history:*`)、管理 Obsidian Sync 的暂停与恢复(`sync:*`)、从云端回收站恢复误删文件。触发词:误删、恢复笔记、文件历史、版本恢复、版本对比、diff 笔记、Obsidian Sync、同步暂停。不用于 git 版本控制(直接 Bash git 命令)。Sync 相关命令需付费 Obsidian Sync 订阅。
|
||||
---
|
||||
|
||||
# Obsidian History · 版本历史与同步
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
---
|
||||
name: obsidian-meta
|
||||
description: 管理 Obsidian 笔记元数据:YAML frontmatter 属性(status/tags/created/due 等)读写、tag 统计与体系治理、aliases 别名、bookmarks 书签、为 Dataview/Bases 设计字段规范。触发词:frontmatter、设置属性、tag、标签、别名、书签、属性读写。不用于全文搜索(obsidian-search)或 Bases 视图查询(obsidian-bases)。检测到 .obsidian/ 时与核心技能同步激活。
|
||||
description: 管理 Obsidian 笔记元数据:YAML frontmatter 属性(status/tags/created/due 等)读写、tag 统计与体系治理、aliases 别名、bookmarks 书签、为 Dataview/Bases 设计字段规范。触发词:frontmatter、设置属性、tag、标签、别名、书签、属性读写。不用于全文搜索(obsidian-search)或 Bases 视图查询(obsidian-bases)。
|
||||
---
|
||||
|
||||
# Obsidian Meta · 元数据管理
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
---
|
||||
name: obsidian-plugins
|
||||
description: 管理 Obsidian 环境配置:核心/社区插件的启用/禁用/安装/卸载、主题切换、CSS snippets 管理、Templates 模板管理、Obsidian 内置命令执行、快捷键查询。触发词:启用插件、社区插件、Obsidian 主题、CSS snippet、Templates、快捷键、hotkey、首次配置 vault。不用于笔记内容 CRUD(obsidian 核心技能)。检测到 .obsidian/ 时与核心技能同步激活。
|
||||
description: 管理 Obsidian 环境层配置——插件(核心/社区,启用/禁用/安装/卸载)、主题切换、CSS snippets、Templates 模板、内置命令(command id)、快捷键 hotkeys。高频场景:首次配置 vault 时批量装常用插件、按团队规范统一主题/CSS。触发词:启用插件、社区插件、Obsidian 主题、CSS snippet、Templates、快捷键、hotkey、内置命令、首次配置 vault、安装插件。不用于笔记内容 CRUD(obsidian 核心技能),不用于 frontmatter 属性(obsidian-meta)。
|
||||
---
|
||||
|
||||
# Obsidian Plugins · 环境配置管理
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
---
|
||||
name: obsidian-search
|
||||
description: Obsidian vault 全文搜索与链接图谱分析。触发场景:搜索笔记内容、查反链/出链、体检图谱健康度(孤立笔记 orphans、断头笔记 deadends、未解析链接 unresolved)、AI 回答前做语义召回(RAG)。触发词:搜索笔记、找笔记、反链、出链、孤立笔记、图谱体检、知识库体检。不用于 tag 查询(obsidian-meta)或 Bases 结构化查询(obsidian-bases)。检测到 .obsidian/ 时与核心技能同步激活。
|
||||
description: Obsidian vault 全文搜索与链接图谱分析。触发场景:搜索笔记内容、查反链/出链、体检图谱健康度(孤立笔记 orphans、断头笔记 deadends、未解析链接 unresolved)、AI 回答前做语义召回(RAG)。触发词:搜索笔记、找笔记、反链、出链、孤立笔记、图谱体检、知识库体检。不用于 tag 查询(obsidian-meta)或 Bases 结构化查询(obsidian-bases)。
|
||||
---
|
||||
|
||||
# Obsidian Search · 搜索与图谱分析
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
---
|
||||
name: obsidian-tasks
|
||||
description: 管理 Obsidian vault 中基于 Markdown 复选框(`- [ ]`/`- [x]`)的任务清单与 GTD 工作流:跨文件列出/筛选任务、切换单条任务状态、项目进度统计、收集-处理-执行流程。触发词:todo、待办、任务清单、完成任务、GTD、任务状态。不用于 Linear/飞书任务(linear/lark-task),不用于 frontmatter status 字段(obsidian-meta)。检测到 .obsidian/ 时与核心技能同步激活。
|
||||
description: 管理 Obsidian vault 中基于 Markdown 复选框(`- [ ]`/`- [x]`)的任务清单与 GTD 工作流:跨文件列出/筛选任务、切换单条任务状态、项目进度统计、收集-处理-执行流程。触发词:todo、待办、任务清单、完成任务、GTD、任务状态。不用于 Linear/飞书任务(linear/lark-task),不用于 frontmatter status 字段(obsidian-meta)。
|
||||
---
|
||||
|
||||
# Obsidian Tasks · 任务清单管理
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
---
|
||||
name: obsidian-workflow-pkm
|
||||
description: Obsidian PKM 高阶编排工作流,组合调用多个 obsidian-* 子技能完成端到端流程:Inbox → Zettelkasten 原子化、MOC 主题地图构建、PARA 项目归档、Karpathy LLM-Wiki、周报/月报汇总、季度知识库体检、文献批量导入。触发词:整理 inbox、原子化笔记、构建 MOC、PARA 归档、LLM wiki、周报、月报、知识库体检、Zettelkasten 流程。单一原子操作请用对应专项子技能。检测到 .obsidian/ 时与核心技能同步激活。
|
||||
description: Obsidian PKM 端到端编排层——专为"多步骤复合需求"设计,组合调用 obsidian-* 子技能。覆盖 Inbox→Zettelkasten 原子化、MOC 主题地图、PARA 项目归档、Karpathy LLM-Wiki、周报/月报汇总、季度知识库体检、文献批量导入、Web Clip→永久笔记。**优先匹配**:当用户说"整理 inbox/构建 MOC/做季度体检/汇总周报/clip 这篇文章"等多步骤指令时,先进入本技能(编排层)再下发子技能;单一原子操作(搜一篇笔记、改一个属性)请直接用 obsidian-search/meta 等专项子技能。触发词:整理 inbox、原子化笔记、构建 MOC、PARA 归档、LLM wiki、周报、月报、知识库体检、Zettelkasten 流程、web clip、网页剪藏、批量导入文献。
|
||||
---
|
||||
|
||||
# Obsidian Workflow · PKM 编排工作流
|
||||
@@ -22,6 +22,7 @@ description: Obsidian PKM 高阶编排工作流,组合调用多个 obsidian-*
|
||||
| 生成周报/月报 | **Workflow 5: 周报 / 月报汇总** |
|
||||
| 季度知识库健康度体检 | **Workflow 6: 季度体检** |
|
||||
| 从网页/PDF 批量导入并原子化 | **Workflow 7: 文献批量导入** |
|
||||
| 单篇网页剪藏 → 永久笔记 | **Workflow 8: Web Clip → Permanent** |
|
||||
|
||||
---
|
||||
|
||||
@@ -459,6 +460,120 @@ done
|
||||
|
||||
---
|
||||
|
||||
## Workflow 8 · Web Clip → Permanent(单篇网页剪藏)
|
||||
|
||||
**目标**:用户给一个 URL(或一段文字),AI 抓取→清洗→提炼→落 `30-Resources/` 或 `50-Zettel/`,比 Workflow 7(批量文献)更轻量、即时。
|
||||
|
||||
### 与 Workflow 7 的区别
|
||||
|
||||
| 维度 | Workflow 7 | Workflow 8 |
|
||||
|------|-----------|-----------|
|
||||
| 触发 | 一批 URL/PDF | 单条 URL/选文 |
|
||||
| 目录 | `20-Literature/` | `30-Resources/` 或 `50-Zettel/` |
|
||||
| 时机 | 批处理 | 即时单次 |
|
||||
| 决策点 | 一次全批确认 | 每次都确认 |
|
||||
|
||||
### 步骤
|
||||
|
||||
```
|
||||
┌──────────────────┐
|
||||
│ 1. 抓取网页正文 │ defuddle(社区标准)/ WebFetch / curl + readability
|
||||
└────────┬─────────┘
|
||||
↓
|
||||
┌──────────────────┐
|
||||
│ 2. 清洗为 Markdown│ 去广告/导航/评论;保留正文 + 图链 + 代码块
|
||||
└────────┬─────────┘
|
||||
↓
|
||||
┌──────────────────┐ ┌ 决策点 ┐
|
||||
│ 3. 用户预览原文 │ ───→│ 落库? │
|
||||
└────────┬─────────┘ └───┬────┘
|
||||
↓ ↓
|
||||
┌──────────────────┐
|
||||
│ 4. AI 提炼摘要+关键词│
|
||||
└────────┬─────────┘
|
||||
↓
|
||||
┌──────────────────┐
|
||||
│ 5. obsidian-search│ 找已有相关笔记
|
||||
│ 关联召回 │
|
||||
└────────┬─────────┘
|
||||
↓
|
||||
┌──────────────────┐
|
||||
│ 6. 创建笔记 │ frontmatter: source=url, type=clip
|
||||
│ + 双向链接 │
|
||||
└────────┬─────────┘
|
||||
↓
|
||||
┌──────────────────┐
|
||||
│ 7. daily:append │ 审计:URL + 落位路径
|
||||
└──────────────────┘
|
||||
```
|
||||
|
||||
### Bash 实现骨架
|
||||
|
||||
```bash
|
||||
#!/bin/bash
|
||||
# workflow_web_clip.sh
|
||||
|
||||
URL="$1"
|
||||
TARGET_DIR="${2:-30-Resources}" # 默认 30-Resources,可指定 50-Zettel
|
||||
|
||||
# 1. 抓取 + 清洗(按可用性优先级回退)
|
||||
if command -v defuddle &>/dev/null; then
|
||||
# 社区首选:defuddle 专门为 LLM 设计,去 chrome
|
||||
CLEAN=$(defuddle "$URL" --markdown)
|
||||
elif command -v readability-cli &>/dev/null; then
|
||||
CLEAN=$(readability-cli "$URL" --output md)
|
||||
else
|
||||
# 兜底:让 AI agent 走 WebFetch + 手工清洗
|
||||
CLEAN=$(echo "USE WebFetch tool with prompt: extract main content as clean markdown")
|
||||
fi
|
||||
|
||||
# 2. AI 提炼
|
||||
TITLE=$(echo "$CLEAN" | head -1 | sed 's/^#\s*//')
|
||||
SUMMARY="<AI 300 字摘要>"
|
||||
KEYWORDS="<AI 提炼关键词,逗号分隔>"
|
||||
|
||||
# 3. 关联召回
|
||||
RELATED=$(obsidian search query="$KEYWORDS" limit=5 format=json | jq -r '.[].path')
|
||||
|
||||
# 4. 落库
|
||||
SLUG=$(echo "$TITLE" | tr ' ' '-' | tr -dc 'a-zA-Z0-9-_一-龥')
|
||||
DATE=$(date +%Y-%m-%d)
|
||||
PATH_NEW="${TARGET_DIR}/${DATE}-${SLUG}.md"
|
||||
|
||||
obsidian create path="$PATH_NEW" content="---
|
||||
type: clip
|
||||
title: ${TITLE}
|
||||
source: ${URL}
|
||||
created: ${DATE}
|
||||
tags: [clip]
|
||||
related: [${RELATED}]
|
||||
---
|
||||
|
||||
## TL;DR
|
||||
${SUMMARY}
|
||||
|
||||
## 关键词
|
||||
${KEYWORDS}
|
||||
|
||||
## 正文(清洗后)
|
||||
${CLEAN}
|
||||
|
||||
## 与现有知识库
|
||||
- 见 frontmatter related 字段
|
||||
"
|
||||
|
||||
# 5. 审计
|
||||
obsidian daily:append content="\n- [web-clip] ${URL} → [[${PATH_NEW}]]"
|
||||
```
|
||||
|
||||
### 注意
|
||||
|
||||
- `defuddle` 是 Obsidian 团队官方维护的 web→markdown 清洗工具([github.com/kepano/defuddle](https://github.com/kepano/defuddle)),比 readability-cli 更专为 LLM 优化(去 token 浪费)
|
||||
- 没装 defuddle 时,AI agent 应主动用 **WebFetch 工具** 抓取并 prompt 模型"清洗为正文 markdown"
|
||||
- **去重检查**:落库前先 `obsidian search query="source: ${URL}"`,避免同一篇 clip 两次
|
||||
|
||||
---
|
||||
|
||||
## 通用工作流约定
|
||||
|
||||
### 1. 决策点 × 步骤 × 审计
|
||||
|
||||
@@ -138,6 +138,37 @@ obsidian open file=<name> newtab # 在 Obsidian 中打开
|
||||
|
||||
> ⚠ **只读优先**:AI agent 写入操作默认走 `append`/`create`;`move`/`delete` 前先 `backlinks` 检查依赖。
|
||||
|
||||
### Obsidian Flavored Markdown 语法速查
|
||||
|
||||
> AI 写入笔记内容时**必须遵守 OFM 语法**——它是普通 Markdown 的超集,下列特性 Obsidian 解析、其他渲染器忽略。
|
||||
|
||||
| 语法 | 写法 | 用途 | 注意 |
|
||||
|------|------|------|------|
|
||||
| **Wikilink** | `[[Note Title]]` | 内部笔记跳转 | 优先于 `[text](path.md)`;`obsidian move` 会自动重写它 |
|
||||
| Wikilink 别名 | `[[Note Title\|显示文本]]` | 改显示但保持跳转目标 | `\|` 前后无空格 |
|
||||
| **Embed(嵌入)** | `![[Note Title]]` | 嵌入整篇笔记内容 | 比 wikilink 多一个 `!` |
|
||||
| Embed 段落 | `![[Note Title#二级标题]]` | 只嵌入特定章节 | 标题区分大小写 |
|
||||
| Embed 块 | `![[Note Title#^blockid]]` | 嵌入单个块 | 配合下方块引用 |
|
||||
| **块引用 ID** | 段落末尾追加 ` ^blockid` | 给段落起锚点 | `^` 前要有空格,ID 不可含空格 |
|
||||
| **Callout** | `> [!note] 标题`<br>`> 正文` | 信息卡片 | 类型:note/info/tip/warning/danger/success/quote/abstract/example/question/fail/bug/todo |
|
||||
| Callout 可折叠 | `> [!note]+` 默认展开 / `> [!note]-` 默认折叠 | 长内容收纳 | `+`/`-` 紧跟类型后 |
|
||||
| **Tag** | `#tag` 或 `#parent/child` | 分类索引 | 不可有空格;嵌套用 `/` |
|
||||
| **Frontmatter** | 文件首行三横杠 YAML 块 | 笔记元数据 | 详细规范见 `obsidian-meta` 技能 |
|
||||
| **Highlight** | `==高亮文本==` | 视觉强调 | OFM 扩展 |
|
||||
| 数学公式 | 行内 `$E=mc^2$` / 块 `$$...$$` | LaTeX | MathJax 解析 |
|
||||
| 任务 | `- [ ]` / `- [x]` | 复选框 | 详细操作见 `obsidian-tasks` |
|
||||
| Mermaid | ` ```mermaid ` 代码块 | 图表 | 渲染器内置 |
|
||||
|
||||
**写入时高频陷阱**:
|
||||
|
||||
1. **CLI `content=` 参数里 `\n` 是换行**,写 callout 时每行都要加 `> ` 前缀:
|
||||
```bash
|
||||
obsidian append path="note.md" content="\n> [!warning] 注意\n> 这是第二行\n"
|
||||
```
|
||||
2. **Wikilink 不要扩展名**:写 `[[Daily/2026-04-09]]` 而非 `[[Daily/2026-04-09.md]]`
|
||||
3. **Embed 加 frontmatter 时**:被嵌入的笔记如果有 frontmatter,会**整块跟着嵌**——用块引用 `![[Note#^id]]` 精确控制
|
||||
4. **Callout 嵌套**:内层多一个 `>`,即 `>>` 开头
|
||||
|
||||
---
|
||||
|
||||
## 5. AI Agent 协作原则
|
||||
|
||||
Reference in New Issue
Block a user