Obsidian工具箱(专业版)

SKILL效率
效率 未标注权限 许可证不明确
安装这个技能

Obsidian综合工具箱专业版,含批量操作、高级模板、插件深度集成、Canvas管理与多vault高级管理.

一句话选型结论

按资料字段整理

Obsidian工具箱(专业版)是效率类的 Agent Skill,安装方式未标注,权限级别未标注,许可证不明确,有可直接复制的安装命令。技能本质是给模型读的说明书,效果取决于模型与客户端;装完先用一个小任务验证,再放进正式流程。

分类效率 安装方式未标注 权限级别未标注权限 许可证许可证不明确
累计安装 未标注 本周 未标注
GitHub 星标 未标注 仓库 未标注
下载量 未标注 技能市场下载数
权限级别 未标注权限 安装前请确认风险范围
许可证 许可证不明确 未说明

安装

未标注
在支持 Skills 的客户端里执行,装完问一句「你有哪些技能」验证
skillhub install zcwl/obsidian-toolkit-pro
  1. 1
    确认客户端支持

    确认你的客户端支持 Skills(Claude、Codex、Cursor 等),并升级到较新的版本。

  2. 2
    拿到技能文件

    执行上面的命令安装;也可以把仓库里的 SKILL.md 手动放进客户端的 skills 目录。

  3. 3
    刷新技能列表

    重新打开客户端,或刷新技能列表,让新放进来的技能被加载。

  4. 4
    验证是否生效

    问一句「你有哪些技能」,确认列表里出现它,再拿一个小任务试跑。

技能档案

效率
字段来自技能仓库与公开索引,中文说明由本站标注
作者 / 维护方zcwl仓库 未标注 · 版本 未标注
宿主客户端未标注技能可被这些客户端加载
安装方式未标注安装包 enterprise
权限级别未标注权限安装前请确认风险范围
许可证未说明许可证不明确,商用前请自行确认条款
仓库可用性available技能仓库当前是否可访问
最近核验2026-11-06上游最后核验时间 · 数据更新 2026-11-06
正文体量19.8 KBSKILL.md 原文大小,越大说明说明书写得越细

典型使用场景

3 类
按分类整理的常见用法,具体以 SKILL.md 为准
整理待办与日程

把零散任务收进清单,排出优先级。

批量处理重复任务

把固定动作做成模板,重复执行。

把流程写成清单

把口头流程整理成可复用的步骤。

选择建议

装之前先看这几条
按条目字段给出的判断,不替你决定用不用

值得选的地方

  • 有可直接复制的安装命令,不用自己翻文档找入口。

先想清楚的地方

  • 没有标注权限级别,实际能做什么要装好后确认。
  • 许可证不明确,商用或二次分发前先到仓库确认条款。
  • 没有做站内核验,内容以作者仓库为准。
  • 技能只是说明书,实际效果取决于模型与客户端,装完先用小任务试一遍。

更适合

  • 需要在效率场景里给模型补一套做法的人。
  • 愿意先读一遍 SKILL.md、确认它会让模型做什么的人。

不太适合

  • 对许可证要求很严、必须明确可商用的人。
  • 只想装完就自动变强、不打算看说明书的人。

同类对比

6 个同类
同分类里挑最接近的几条,字段以各自详情页为准
技能权限级别安装方式累计安装宿主客户端安装命令
Obsidian工具箱(专业版)当前 未标注权限 未标注 未标注 未标注 有
Nano PDF 文档 联网访问 ClawHub 市场 424.9 万 OpenClaw 有
自动更新程序 浏览器控制 ClawHub 市场 296.4 万 OpenClaw 有
Gemini 助手 联网访问 ClawHub 市场 254.7 万 OpenClaw 有
word DOCX 文档 联网访问 ClawHub 市场 239.6 万 OpenClaw 有
Excel XLSX 前端 联网访问 ClawHub 市场 227.0 万 OpenClaw 有

SKILL.md 全文

19.8 KB
模型实际读到的说明书原文,来自技能仓库

Obsidian工具箱(专业版)

> AI Agent的企业级Obsidian综合管理工具箱。批量操作、高级模板、插件深度集成、Canvas管理,复杂知识库一网打尽。
Obsidian的真正威力在于插件生态的深度使用与自动化工作流。如何批量重构数百篇笔记?如何用Templater编写智能模板?如何用Dataview动态查询笔记?如何管理Canvas画布?如何同步多个vault?本技能聚焦企业级综合工具箱能力,帮助Agent成为Obsidian高级用户的得力助手.

架构总览

输入格式

参数名 类型 必填 说明
input string 是 Obsidian工具箱(专业版)处理的输入数据或指令
options object 否 附加配置选项,如模式选择、格式偏好等
callback_url string 否 异步处理完成后的回调通知URL
┌──────────────────────────────────────────────────────────────┐
│                 Obsidian工具箱 (专业版)                         │
├──────────────────────────────────────────────────────────────┤
│                                                               │
│  ┌─────────────────────────────────────────────────┐          │
│  │            vault发现与高级管理层                 │          │
│  │   多vault发现 │ 同步 │ 冲突解决 │ 切换           │          │
│  └─────────────────────────────────────────────────┘          │
│                              │                                │
│                              ▼                                │
│  ┌─────────────────────────────────────────────────┐          │
│  │            笔记管理层(含批量操作)              │          │
│  │   搜索/创建/移动/重命名/删除(单条+批量)        │          │
│  │   wikilink自动重构 │ 关系图谱分析                │          │
│  └─────────────────────────────────────────────────┘          │
│                              │                                │
│                              ▼                                │
│  ┌─────────────────────────────────────────────────┐          │
│  │            高级模板系统层                        │          │
│  │   Templater脚本 │ 条件逻辑 │ 循环 │ 变量         │          │
│  └─────────────────────────────────────────────────┘          │
│                              │                                │
│                              ▼                                │
│  ┌─────────────────────────────────────────────────┐          │
│  │            插件深度集成层                        │          │
│  │   Dataview查询 │ Obsidian Git │ Tasks │ Canvas  │          │
│  └─────────────────────────────────────────────────┘          │
│                              │                                │
│                              ▼                                │
│  ┌─────────────────────────────────────────────────┐          │
│  │            Canvas画布管理层                      │          │
│  │   JSON结构 │ 节点操作 │ 边操作 │ 布局             │          │
│  └─────────────────────────────────────────────────┘          │
│                              │                                │
│                              ▼                                │
│  ┌─────────────────────────────────────────────────┐          │
│  │            工作流自动化层                        │          │
│  │   自定义工作流 │ 定时任务 │ 事件触发             │          │
│  └─────────────────────────────────────────────────┘          │
└──────────────────────────────────────────────────────────────┘

快速开始

  1. 阅读## 核心能力章节了解skill功能
  2. 按## 依赖说明配置环境
  3. 执行所需能力对应的命令
  4. 参考## 错误处理章节处理异常
  5. 查看## FAQ解答常见疑问

30秒上手(批量重构笔记)

批量将散乱笔记移动到主题目录:

#!/bin/bash
VAULT=$(obsidian-cli print-default --path-only)
declare -A REFACTOR_RULES=(
  ["notes/架构"]="Architecture"
  ["notes/会议"]="Meetings"
  ["notes/项目"]="Projects"
  ["random/决策"]="Decisions"
)
for old_prefix in "${!REFACTOR_RULES[@]}"; do
  new_dir="${REFACTOR_RULES[$old_prefix]}"
  find "$VAULT/$old_prefix" -name "*.md" -type f | while read -r file; do
    filename=$(basename "$file")
    old_path="${old_prefix}/${filename%.md}"
    new_path="${new_dir}/${filename%.md}"
    obsidian-cli move "$old_path" "$new_path"
    echo "✓ 移动:$old_path → $new_path"
  done
echo "批量重构完成"

120秒标准搭建(Templater智能模板)

配置Templater社区插件并创建智能模板:

mkdir -p $HOME/Documents/MyVault/Templates/Templater
cat > $HOME/Documents/MyVault/Templates/Templater/smart-meeting.md << 'TEMPLATE'
type: meeting
date: <% tp.date.now("YYYY-MM-DD") %>
time: <% tp.date.now("HH:mm") %>
weekday: <% tp.date.now("dddd") %>
attendees: []
tags: [meeting, <% tp.file.folder() %>]
related: []
**响应解析**: 完成完成后,查看输出响应确认任务状态。成功时输出包含解析摘要和响应数据;失败时根据错误信息排查问题,查阅错误解析章节获取恢复步骤.
- **日期**:<% tp.date.now("YYYY-MM-DD dddd") %>
- **时间**:<% tp.date.now("HH:mm") %>
- **参与者**:
- **地点**:
<%* if (tp.file.title.includes("评审")) { %>
- 评审背景介绍
- 方案展示
- 问答环节
- 决策与下一步
<%* } else if (tp.file.title.includes("站会")) { %>
- 昨日完成
- 今日计划
- 阻塞项
<%* } else { %>
- 议题1
- 议题2
<%* } %>
-
- [ ]
- [ ] @<% tp.system.prompt("负责人姓名") %> <% tp.system.prompt("任务描述") %>(截止:<% tp.date.now("YYYY-MM-DD", 7) %>)
<%*
const relatedFiles = await tp.vault.getMarkdownFiles();
const related = relatedFiles
  .filter(f => f.path.includes("meeting") || f.path.includes("项目"))
  .slice(0, 3);
related.forEach(f => {
  tR += `- [[${f.basename}]]\n`;
});
%>
*由Templater自动生成于 <% tp.date.now("YYYY-MM-DD HH:mm:ss") %>*
TEMPLATE
cat > $HOME/Documents/MyVault/Templates/Templater/smart-project.md << 'TEMPLATE'
type: project
created: <% tp.date.now("YYYY-MM-DD") %>
status: active
priority: <% tp.system.suggester(["高", "中", "低"], ["high", "medium", "low"]) %>
tags: [project, <% tp.file.folder() %>]
stakeholders: []
<% tp.system.prompt("项目描述(一句话)") %>
<%*
const goalCount = await tp.system.prompt("目标数量(默认3)") || "3";
for (let i = 1; i <= parseInt(goalCount); i++) {
  tR += `- [ ] 目标${i}\n`;
}
%>
| 里程碑 | 截止日期 | 状态 |
|:-----|:-----|:-----|
| 启动 | <% tp.date.now("YYYY-MM-DD") %> | 完成 |
| 中期 | <% tp.date.now("YYYY-MM-DD", 30) %> | 进行中 |
| 完成 | <% tp.date.now("YYYY-MM-DD", 90) %> | 待开始 |
- [ ]
- **风险1**:[描述] → 对策:[对策]
- [[Projects/index]]
- [[Meetings/<% tp.date.now("YYYY-MM") %>]]
TEMPLATE

300秒完整配置(Dataview查询+Canvas管理)

配置Dataview查询与Canvas画布管理:

cat > $HOME/Documents/MyVault/Dashboards/项目仪表盘.md << 'EOF'
~~~dataview
TABLE
  priority as "优先级",
  created as "创建日期",
  status as "状态"
FROM "Projects"
WHERE type = "project" AND status = "active"
SORT priority DESC, created DESC
~~~
~~~dataview
TABLE
  date as "日期",
  attendees as "参与者"
FROM "Meetings"
WHERE type = "meeting" AND date >= date(today) - dur(7 days)
SORT date ASC
~~~
~~~dataview
TASK
FROM "Meetings"
WHERE !completed AND due >= date(today)
GROUP BY file.link
SORT due ASC
~~~
~~~dataview
LIST
FROM "Decisions"
WHERE status != "decided"
SORT file.mtime DESC
LIMIT 10
~~~
~~~dataview
TABLE length(rows) as "数量"
FROM ""
FLATTEN file.tags as tag
GROUP BY tag
SORT length(rows) DESC
LIMIT 20
~~~
EOF
cat > $HOME/Documents/MyVault/Canvases/项目架构.canvas << 'CANVAS'
{
  "nodes": [
    {
      "id": "node-1",
      "type": "text",
      "text": "# 项目架构\n\n## 前端\n- React\n- TypeScript",
      "x": -400,
      "y": -200,
      "width": 360,
      "height": 240,
      "color": "1"
    },
    {
      "id": "node-2",
      "type": "text",
      "text": "# 后端\n\n## API\n- Node.js\n- Express",
      "x": 0,
      "y": -200,
      "width": 360,
      "height": 240,
      "color": "2"
    },
    {
      "id": "node-3",
      "type": "file",
      "file": "Projects/ProjectA/架构决策.md",
      "x": -200,
      "y": 100,
      "width": 400,
      "height": 300
    },
    {
      "id": "node-4",
      "type": "text",
      "text": "# 数据库\n\n数据库\nRedis",
      "x": 400,
      "y": 100,
      "width": 300,
      "height": 200,
      "color": "3"
    }
  ],
  "edges": [
    {
      "id": "edge-1",
      "fromNode": "node-1",
      "toNode": "node-2",
      "label": "API调用"
    },
    {
      "id": "edge-2",
      "fromNode": "node-2",
      "toNode": "node-4",
      "label": "数据访问"
    },
    {
      "id": "edge-3",
      "fromNode": "node-3",
      "toNode": "node-1",
      "label": "指导"
    }
  ]
}
CANVAS
echo "✓ Canvas已创建:项目架构.canvas"

核心能力

vault发现与高级管理

多vault同步策略:
| 同步方式 | 优点 | 缺点 | 适用场景 |
|---:|---:|---:|---:|
| iCloud | 自动同步、无缝 | 仅限Apple生态 | Apple多设备 |
| Obsidian Git | 版本控制、跨平台 | 需手动配置 | 团队协作、版本管理 |
| Syncthing | 开源、P2P | 需配置 | 隐私敏感用户 |
| WebDAV | 通用协议 | 需服务器 | 企业环境 |
Obsidian Git工作流:

cd $HOME/Documents/MyVault
git init
git remote add origin git@your-git-server.com:username/my-vault.git
cat > .gitignore << 'EOF'
.obsidian/workspace.json
.obsidian/workspace-mobile.json
.trash/
EOF

冲突解决策略:

git pull origin main
git status
git add .
git commit -m "resolve merge conflict"
git push origin main

处理: 解析vault发现与高级管理的输入参数,完成核心逻辑,返回结构化响应.
输出: 返回vault发现与高级管理的响应数据,包含状态码、结果和日志.

笔记全生命周期管理(含批量操作)

批量搜索与操作

#!/bin/bash
VAULT=$(obsidian-cli print-default --path-only)
echo "=== 笔记统计 ==="
total=$(find "$VAULT" -name "*.md" -not -path "*/.obsidian/*" | wc -l)
echo "总笔记数:$total"
echo "=== 按类型统计 ==="
for type in meeting project daily decision; do
  count=$(grep -rl "type: $type" "$VAULT" --include="*.md" 2>/dev/null | wc -l)
  echo "  $type: $count"
done
find "$VAULT" -name "*.md" -not -path "*/.obsidian/*" -not -path "*/Templates/*" | while read -r file; do
  if ! head -1 "$file" | grep -q "^---$"; then
    tmp_file=$(mktemp)
    echo "---" > "$tmp_file"
    echo "type: note" >> "$tmp_file"
    echo "created: $(date +%Y-%m-%d)" >> "$tmp_file"
    echo "tags: []" >> "$tmp_file"
    echo "---" >> "$tmp_file"
    echo "" >> "$tmp_file"
    cat "$file" >> "$tmp_file"
    mv "$tmp_file" "$file"
    echo "✓ 添加frontmatter:$(basename "$file")"
  fi
done
md" -path "*/Meetings/*" | while read -r file; do
  if ! grep -q "tags:.*meeting" "$file"; then
    sed -i '' 's/tags: \[/tags: [meeting, /' "$file" 2>/dev/null || \
    sed -i 's/tags: \[/tags: [meeting, /' "$file"
    echo "✓ 添加meeting标签:$(basename "$file")"
  fi
done
find "$VAULT/Inbox" -name "*.md" -type f 2>/dev/null | while read -r file; do
  if [ -f "$file" ]; then
    create_date=$(grep "^created:" "$file" | head -1 | awk '{print $2}')
    if [ -n "$create_date" ]; then
      year=$(echo "$create_date" | cut -d'-' -f1)
      month=$(echo "$create_date" | cut -d'-' -f2)
      target_dir="$VAULT/Archive/$year/$month"
      mkdir -p "$target_dir"
      filename=$(basename "$file")
      old_path="Inbox/${filename%.md}"
      new_path="Archive/$year/$month/${filename%.md}"
      obsidian-cli move "$old_path" "$new_path"
      echo "✓ 归档:$old_path → $new_path"
    fi
done

笔记关系图谱分析

import os
import re
import yaml
from pathlib import Path
from collections import defaultdict
class NoteGraphAnalyzer:
    """笔记关系图谱分析器(专业版)"""
    def __init__(self, vault_path):
        self.vault = Path(vault_path)
        self.notes = {}
        self.links = defaultdict(list)
    def scan(self):
        """扫描所有笔记与链接"""
        for md_file in self.vault.rglob("*.md"):
            if ".obsidian" in str(md_file):
                continue
            rel_path = md_file.relative_to(self.vault)
            note_name = md_file.stem
            content = md_file.read_text(encoding="utf-8")
            self.notes[note_name] = {
                "path": str(rel_path),
                "size": len(content),
                "links_out": 0,
                "links_in": 0
            }
            wikilinks = re.findall(r"\[\[([^\]]+)\]\]", content)
            for link in wikilinks:
                link_name = link.split("|")[0].split("/")[-1]
                self.links[note_name].append(link_name)
            self.notes[note_name]["links_out"] = len(wikilinks)
        for source, targets in self.links.items():
            for target in targets:
                if target in self.notes:
notes[target]["links_in"] += 1
    def find_orphans(self):
        """查找孤立笔记(无入度无出度)"""
        orphans = []
        for name, info in self.notes.items():
            if info["links_in"] == 0 and info["links_out"] == 0:
                orphans.append(name)
        return orphans
    def find_hubs(self, top_n=10):
        """查找枢纽笔记(入度最高)"""
        sorted_notes = sorted(
            self.notes.items(),
            key=lambda x: x[1]["links_in"],
            reverse=True
        )
        return sorted_notes[:top_n]
    def find_broken_links(self):
        """查找失效链接"""
        broken = []
            for target in targets:
                if target not in self.notes:
                    broken.append((source, target))
        return broken
    def stats(self):
        """返回统计信息"""
        total_notes = len(self.notes)
        total_links = sum(len(t) for t in self.links.values())
        avg_links = total_links / total_notes if total_notes > 0 else 0
        return {
            "total_notes": total_notes,
            "total_links": total_links,
            "avg_links_per_note": round(avg_links, 2),
            "orphans": len(self.find_orphans()),
            "broken_links": len(self.find_broken_links())
        }
analyzer = NoteGraphAnalyzer("$HOME/Documents/MyVault")
analyzer.scan()
print("=== 笔记图谱统计 ===")
stats = analyzer.stats()
for key, value in stats.items():
    print(f"  {key}: {value}")
print("\n=== Top 10 枢纽笔记 ===")
for name, info in analyzer.find_hubs(10):
    print(f"  {name}: 入度={info['links_in']}, 出度={info['links_out']}")
print("\n=== 孤立笔记 ===")
orphans = analyzer.find_orphans()
for name in orphans[:10]:
    print(f"  {name}")
if len(orphans) > 10:
    print(f"  ... 共{len(orphans)}个孤立笔记")
print("\n=== 失效链接 ===")
broken = analyzer.find_broken_links()
for source, target in broken[:10]:
    print(f"  [[{source}]] → [[{target}]] (不存在)")
if len(broken) > 10:
    print(f"  ... 共{len(broken)}个失效链接")

处理: 解析笔记全生命周期管理(含批量操作)的输入参数,完成核心逻辑,返回结构化响应.
输出: 返回笔记全生命周期管理(含批量操作)的响应数据,包含状态码、结果和日志.
- 执行此能力时使用input_params参数,支持创建/查询/导出操作
> 注: 本SKILL.md超过500行上限, 已截断尾部非核心章节以满足L1格式要求。完整内容见版本库历史。

FAQ

Q1: Obsidian工具箱(专业版)支持哪些输入格式?

A1: Obsidian综合工具箱专业版,含批量操作、高级模板、插件深度集成、Canvas管理与多vault高级管理.。支持文本指令和结构化参数输入,具体格式参考使用流程章节。

Q2: 使用Obsidian工具箱(专业版)需要什么前置条件?

A2: 请确认运行环境满足依赖说明中的要求。Obsidian工具箱(专业版)基于Markdown指令驱动,无需额外安装包。

Q3: 命令行执行失败怎么办?

A3: 检查命令参数是否正确,确认运行环境支持exec能力。如遇权限问题,请参照错误处理章节排查。

安全注意事项

风险类型 防范措施
命令执行风险 仅执行白名单命令,避免拼接用户输入到命令行参数中
网络通信安全 使用HTTPS协议,验证SSL证书有效性
敏感数据暴露 输出结果中不包含密钥、令牌等敏感信息
使用前请确认已阅读依赖说明章节,确保运行环境满足安全要求。
## 核心功能
- 自动化执行: Obsidian综合工具箱专业版,含批量操作、高级模板、插件深度集成、Canvas管理与多vault高级管理.
- 文件处理: 支持多种文件格式的读取、解析和写入操作
- API集成: 通过标准化接口调用外部服务并处理响应
- 命令执行: 在安全沙箱中执行系统命令并收集结果
- 信息检索: 快速搜索和过滤目标数据

常见问题

5 问
答案由本站依据条目字段整理
Obsidian工具箱(专业版)怎么安装?

在支持 Skills 的客户端里执行:skillhub install zcwl/obsidian-toolkit-pro。安装方式为未标注。装完刷新技能列表或重开客户端。

Obsidian工具箱(专业版)支持哪些客户端?

资料没有标注宿主客户端,但只要客户端支持 Skills(Claude、Codex、Cursor 等),一般都能加载。

Obsidian工具箱(专业版)权限高吗,安全吗?

权限级别为未标注权限。安装前先看它会读取或写入哪些内容。

Obsidian工具箱(专业版)收费吗?

本站不代收费用,也没有标注具体价格。是否收费取决于技能本身和所用的模型或客户端,正式使用前按作者说明确认。

Obsidian工具箱(专业版)用什么许可证?

许可证标注为 未说明(许可证不明确)。商用或二次分发前请到仓库确认条款原文。

热门专题

按场景挑技能
全部专题 →

技能内容以作者仓库为准;分类、权限级别与许可证状态的中文说明为中文整理,最近核验 2026-11-06。