mcpField
O
obsidian-organizer

obsidian-organizer

github.com/agents365-ai生产力971.8k 次安装2 周前更新
代码仓库

关于 obsidian-organizer

obsidian-organizer 是用于整理大型 Obsidian 知识库的技能,可为新笔记选择文件夹,也能审查和重组现有结构。它以知识库内的 Markdown 文件夹地图作为归档依据,并要求批量调整先提出方案、经确认后再执行。

主要功能

  1. 01依据库内文件夹地图归档笔记
  2. 02审查孤立笔记与无链接笔记
  3. 03比对疑似重复笔记
  4. 04重组前先提交方案并等待确认
  5. 05通过 CLI 移动、重命名和删除

适用场景

  1. 01将新笔记放入合适的现有文件夹
  2. 02整理收件箱或指定主题文件夹
  3. 03检查重复项、孤立笔记和链接
  4. 04重组前确认移动或合并计划

安装

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

$npx skills add https://github.com/agents365-ai/365-skills --skill obsidian-organizer

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

详细介绍

Obsidian 整理器

通过(1)将新笔记归入最合适的文件夹,以及(2)审查并重新整理现有结构,让大型 Obsidian 库长期保持整洁。这两种模式都依赖同一个理念:在知识库内部保存一份纯 Markdown 格式的“内容应该放在哪里”地图,确保它始终与实际情况一致。

此技能会调用 obsidian CLI(来自单独的 obsidian-cli 技能),通过它与正在运行的 Obsidian 桌面应用交互。应用必须处于打开状态。如果命令因连接或知识库错误而失败,请告诉用户打开 Obsidian,而不要自行猜测。

为什么地图要保存在知识库中(请先阅读)

每次都重新列出约 650 个文件夹,再为每条新笔记决定归属,既耗费资源,判断也容易偏离实际情况。把文件夹分类体系复制到 Claude 的私有记忆中会造成更严重的问题:副本过时后,会在不知不觉中与实际知识库不一致。

解决办法是将一个文件 00_Index/Folder_Map.md 直接保存在知识库中。它是归档决策的唯一事实来源。在归档或重新整理前,只需用一次低成本调用读取它——除非地图缺失或用户要求重建,否则不要重新遍历所有文件夹运行 obsidian folders。

obsidian read path="00_Index/Folder_Map.md"

它特意采用简单的 Markdown 格式(标题 + 项目符号,不要求 frontmatter),这样你和用户都可以在新类别出现时手动追加内容。创建新文件夹或类别时,请在此文件中添加一行,让下次归档时能参考。

如果地图不存在(已删除或这是一个新建的知识库),请根据实际知识库重建,而不要使用此技能中附带的副本——副本会与实际情况脱节,而这正是该文件要避免的问题。使用 obsidian vault="MyVault" folders 列出实际结构(深入查看时使用 folders folder=...),按顶层 PARA 文件夹分组,起草一份纯 Markdown 格式的地图,为每个文件夹附上简短的“内容应放于此处”说明和一条归档经验法则;与用户确认分组后,再创建文件: obsidian vault="MyVault" create path="00_Index/Folder_Map.md" content="..."。

知识库指定方式

上文的 MyVault 是占位符——请在所有位置替换为用户实际的知识库名称。如果用户有多个知识库,请在每条命令中明确指定目标知识库,避免因默认选择“最近聚焦的知识库”而将笔记误归档:

obsidian vault="MyVault" read path="00_Index/Folder_Map.md"

vault= 必须是第一个参数。此技能中唯一与具体知识库有关的值就是它——其他内容都来自该知识库自己的 Folder_Map.md。

唯一的硬性安全规则:绝不要用原始 Shell 命令操作知识库文件

移动或重命名文件时,始终使用 CLI 自带的 move / rename 命令。这些命令会通过 Obsidian API 执行,因此 Obsidian 内置的“自动更新内部链接”功能会重写整个知识库中的所有维基链接和反向链接,使其指向移动后的文件。对知识库中的路径直接使用 mv、rm、rmdir 或 find -delete,会跳过这项修复,并悄无声息地留下指向旧位置的失效链接。

因此,对于知识库目录下的任何内容:

  • 移动/重命名 → obsidian move ... 或 obsidian rename ...
  • 删除 → obsidian delete ...(除非指定 permanent,否则会移至废纸篓)
  • 绝不要对知识库内部路径使用 Bash mv / rm / rmdir / find -delete。

可以使用不会修改文件的工具读取文件内容;修改知识库文件只能通过 CLI 操作。


模式 1 — 归档笔记

目标:给定一篇笔记(已有路径,或即将撰写的标题和内容),将其放入最合适的文件夹。

  1. 阅读目录图一次:obsidian vault="MyVault" read path="00_Index/Folder_Map.md"。
  2. 匹配笔记主题与目录图中的目标位置,遵循其中的归档规则。优先选择已有的具体子文件夹,而不是通用文件夹(例如,Seurat 使用指南应归入 03_Research_Knowledge/Bioinformatics/seurat/,而不是通用分类)。
  3. 按最合适的位置操作:
    • 存在明显匹配的文件夹 → 将笔记归档到该文件夹。
      • 新建笔记:obsidian vault="MyVault" create path="03_Research_Knowledge/Bioinformatics/seurat/My Note.md" content="..." silent
      • 移动已有笔记:obsidian vault="MyVault" move path="00_Inbox/My Note.md" to="03_Research_Knowledge/Bioinformatics/seurat"(to 可以是文件夹或完整路径)。
    • 存在大致匹配但不够理想的位置(例如,没有专门子文件夹的工具)→ 使用目录图中的通用分类规则(例如 Bioinformatics/misc/),并告知用户笔记的归档位置。
    • 没有合适的分类 → 停止并询问用户,再创建文件夹。提出文件夹名称和位置;不要擅自创建新的分类体系。
  4. 记住新分类。 用户批准新文件夹后,在 00_Index/Folder_Map.md 的相应章节下追加一行描述,方便后续归档时参考(obsidian append path="00_Index/Folder_Map.md" content="...")。
  5. 简要报告最终路径。

CLI 说明:create 会按需创建中间文件夹;添加 silent,以免通过打开笔记抢占焦点。move 的 to 接受目标文件夹或完整路径;使用 rename name="New Title" 可在原位置更改标题。


模式 2 — 审查 / 重组

目标:给定一个范围(文件夹路径、“最近的收件箱笔记”或“整理 cellchat 笔记”等明确请求),查找问题,**提出计划,获得明确确认,然后执行。**绝不要在未告知的情况下批量移动、合并或删除。

步骤 1 — 收集范围内的信息

先阅读目录图以了解背景,然后使用结构命令。若命令支持按文件夹筛选,则将列表范围限定为相关文件夹。

  • obsidian vault="MyVault" files folder="<scope>" — 查看清单,并找出可能重复的标题(例如“CellChat analysis”和“CellChat Analysis v2”)。
  • obsidian vault="MyVault" orphans — 查找没有入链的笔记(没有其他笔记链接到它们;可考虑归档、合并或存档)。
  • obsidian vault="MyVault" deadends — 查找没有出链的笔记(通常是尚未完善的草稿或摘录)。
  • obsidian vault="MyVault" search:context query="<topic>" path="<scope>" — 在提议合并前,比较疑似近似重复笔记的内容。
  • obsidian vault="MyVault" backlinks path="<file>" — 合并或删除笔记前,查看有哪些笔记链接到它,避免留下失效引用。

没有专门的“重复项”命令;请通过比较 files 的标题,并用 search:context / read 确认来检测重复项。

步骤 2 — 提出计划(并等待确认)

提供具体的分项计划,然后停下来等待确认。按操作分组:

Proposed reorganization for Bioinformatics/cellchat/ (7 notes):

MERGE
- "CellChat analysis.md" + "CellChat analysis (1).md" → keep "CellChat analysis.md",
  fold unique content from the duplicate in, then delete the duplicate.

MOVE
- "Spatial CellChat.md" → Single_Cell/Spatial_Omics/ (topic is spatial, not the tool)

RENAME
- "untitled cellchat.md" → "CellChat LR database notes.md"

No change: 3 notes look fine.

Proceed? I won't move/merge/delete anything until you confirm.

如有不确定之处,请如实标注可能的猜测,以便用户否决。

步骤 3 — 仅在收到“是”之后执行

确认后,通过 CLI 按照能保持链接完整的顺序执行移动、重命名和删除操作(通常先合并内容,再删除已清空的重复项;若既要移动又要重命名,则先移动)。使用 move、rename、delete,以及 append/read 来合并;绝不要使用原始 shell 命令。报告更改内容,并将创建的任何新文件夹/分类追加到 00_Index/Folder_Map.md。

已知的待重组候选项

如果知识库的 Folder_Map.md 指出了已知问题区域(例如与新文件夹内容重叠的旧文件夹、积累了多个近似标题的子文件夹等),且这些区域在处理范围内,请将其列出;但仍需先提出方案并获得确认,再进行任何更改。


命令速查

需求命令
读取映射obsidian vault="MyVault" read path="00_Index/Folder_Map.md"
创建/归档新笔记obsidian vault="MyVault" create path="Folder/Note.md" content="..." silent
移动/重定位笔记obsidian vault="MyVault" move path="Old/Note.md" to="New/Folder"
就地重命名obsidian vault="MyVault" rename path="Folder/Note.md" name="New Title"
删除(移至废纸篓)obsidian vault="MyVault" delete path="Folder/Note.md"
列出文件夹中的文件obsidian vault="MyVault" files folder="<scope>"
孤立笔记/死胡同obsidian vault="MyVault" orphans · ... deadends
搜索并显示上下文obsidian vault="MyVault" search:context query="..." path="<scope>"
指向某条笔记的反向链接obsidian vault="MyVault" backlinks path="Folder/Note.md"
向映射追加内容obsidian vault="MyVault" append path="00_Index/Folder_Map.md" content="- ..."

运行 obsidian help <command> 以确认确切参数——CLI 才是权威依据。

评论

支持 Markdown