mcpField
T
tag-taxonomy

tag-taxonomy

github.com/ar9av生产力3.6k3.2k 次安装1 天前更新
代码仓库

关于 tag-taxonomy

tag-taxonomy 是用于 Obsidian wiki 的标签审计与规范化技能,依据库内的分类表统一标签。它还指导新页面选标签及将新标签加入分类表。

主要功能

  1. 01统计标签并发现别名与未知标签
  2. 02规范化标签并遵循每页最多五个的规则
  3. 03为新页面选择规范标签
  4. 04按类别将新标签加入分类表
  5. 05支持可见性标签的独立规则

适用场景

  1. 01检查 wiki 中的标签一致性
  2. 02将别名替换为规范标签
  3. 03为新页面选择分类表中的标签
  4. 04在确认后扩展标签分类表

安装

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

$npx skills add https://github.com/ar9av/obsidian-wiki --skill tag-taxonomy

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

详细介绍

标签分类体系 — Wiki 标签的受控词表

通过将标签规范化为受控词表,确保整个 Wiki 的标签保持一致。

开始之前

  1. 解析配置 — 遵循 llm-wiki/SKILL.md 中的配置解析协议(内联 @name 覆盖 → 沿 CWD 向上查找 .env → 全局配置 → 提示用户设置)。这会得到 OBSIDIAN_VAULT_PATH
  2. 阅读 $OBSIDIAN_VAULT_PATH/_meta/taxonomy.md — 这是规范标签列表
  3. 阅读 index.md,了解 Wiki 的范围

分类体系文件

规范标签词表位于 $OBSIDIAN_VAULT_PATH/_meta/taxonomy.md。其中定义了:

  • 规范标签 — 应使用的标签
  • 别名 — 应映射到规范形式的常见替代标签
  • 规则 — 每页最多 5 个标签,使用小写字母和连字符,优先使用宽泛标签而非狭窄标签
  • 迁移指南 — 针对已知不一致情况的具体重命名建议

添加标签前务必先阅读此文件。 它是唯一可信来源。

保留的系统标签

visibility/ 是一个保留标签组,适用特殊规则。这些标签不是领域标签或类型标签,并且与分类体系词表分开管理:

标签用途
visibility/public明确公开 — 在所有模式下显示(与不添加标签相同)
visibility/internal仅限团队 — 在筛选查询/导出模式下排除
visibility/pii敏感数据 — 在筛选查询/导出模式下排除

visibility/ 标签规则:

  • 不计入 5 个标签的上限
  • 每页只能有一个 visibility/ 标签
  • 内容明确公开时完全省略 — 无需添加标签
  • 不要仅因内容涉及技术就添加 visibility/internal;仅当知识确实受团队限制时才使用
  • 执行标签审计时,单独报告 visibility/ 标签的使用情况 — 不要将其标记为未知或非规范标签

规范化标签时,保持 visibility/ 标签不变 — 它们不适用别名映射。

模式 1:标签审计

当用户想查看当前标签状态时:

步骤 1:扫描所有页面
Glob: $VAULT_PATH/**/*.md (excluding _archives/, .obsidian/, _meta/)
Extract: tags field from YAML frontmatter
步骤 2:生成标签频率表

对找到的每个标签,统计使用该标签的页面数量。标记:

  • 未知标签 — 不在分类体系的规范标签列表中
  • 别名标签 — 使用了别名而非规范形式(例如,使用 nextjs 而非 react)
  • 标签过多的页面 — 标签超过 5 个的页面
  • 未添加标签的页面 — 没有标签或标签字段为空的页面
步骤 3:报告
## Tag Audit Report

### Summary

- Total unique tags: 47
- Canonical tags used: 32
- Non-canonical tags found: 15
- Pages over tag limit (5): 3
- Untagged pages: 2

### Non-Canonical Tags Found

| Current Tag | → Canonical | Pages Affected |
| ----------- | ----------- | -------------- |
| `nextjs`    | `react`     | 4              |
| `next-js`   | `react`     | 2              |
| `robotics`  | `ml`        | 1              |
| `windows98` | `retro`     | 3              |

### Unknown Tags (not in taxonomy)

| Tag          | Pages | Recommendation                   |
| ------------ | ----- | -------------------------------- |
| `flutter`    | 1     | Add to taxonomy under Frameworks |
| `kubernetes` | 2     | Add to taxonomy under DevOps     |

### Over-Tagged Pages

| Page                   | Tag Count | Tags                 |
| ---------------------- | --------- | -------------------- |
| `entities/jane-doe.md` | 8         | ai, ml, founder, ... |

模式 2:标签规范化

当用户想修正标签时:

步骤 1:运行审计(见上文)
步骤 2:应用修正

对于每个含有非规范标签的页面:

  1. 阅读页面
  2. 将别名标签替换为分类体系中的规范形式
  3. 如果页面有超过 5 个标签,建议删除哪些标签(保留最具体/最相关的标签)
  4. 写入更新后的 frontmatter

示例:

# Before
tags: [nextjs, ai, ml-engineer, windows98, creative-coding, game, 8-bit, portfolio]

# After
tags: [react, ai, ml, retro, generative-art]
步骤 3:处理未知标签

对于不在分类体系中且不是别名的标签:

  • 如果某标签用于 2 个或更多页面,建议将其添加到分类体系
  • 如果某标签仅用于 1 个页面,建议将其替换为最接近的规范标签
  • 对未知标签进行更改前,先询问用户
步骤 4:更新分类体系

如果已商定新增规范标签,请将其追加到 _meta/taxonomy.md 中的正确章节。

模式 3:为新页面添加标签

创建 Wiki 页面并需要选择标签时:

  1. 阅读 _meta/taxonomy.md
  2. 选择最多 5 个最能描述该页面的标签:
    • 1-2 个领域标签(所属主题领域)
    • 1 个类型标签(内容类型)
    • 0-1 个项目标签(仅适用于特定项目时)
    • 0-1 个额外描述性标签
  3. 仅使用规范标签 — 切勿使用别名
  4. 如果没有合适的现有标签,请判断是否值得将其添加到分类体系

模式 4:添加新标签

当用户想要为词汇添加标签时:

  1. 检查是否已有标签涵盖该概念(如果有,则建议使用该标签)
  2. 如果确实是新标签,确定它所属的部分(领域、类型、项目)
  3. 将其添加到 _meta/taxonomy.md,并包含:
    • 规范标签名称
    • 标签的用途
    • 要重定向的任何别名

执行任何标签操作后

一次加锁调用即可更新日志、索引(标签会出现在索引条目中)和热缓存:

# audit
obsidian-wiki memory sync TAG_AUDIT \
  tags_normalized=<N> unknown_tags=<M> pages_modified=<P> \
  --takeaways "Tag audit: normalized 14 tags across 28 pages; 2 new canonical tags added."

# normalization
obsidian-wiki memory sync TAG_NORMALIZE \
  tags_renamed=<N> pages_modified=<M> new_tags_added=<P>

切勿手动编辑 index.md、log.md 或 hot.md——该命令会获取锁,以防并行写入者丢失你的更新。

完整流程请参阅 .skills/llm-wiki/references/MEMORY.md。

写入知识库后刷新 QMD

QMD 是搜索索引,而非事实来源。如果 $QMD_WIKI_COLLECTION 为空或未设置,请跳过此步骤。仅在此技能写入或重写知识库 Markdown 后运行。如果 QMD 刷新失败,不要回滚知识库更改;请单独报告 QMD 状态。

如果已设置 $QMD_CLI,请使用它;否则使用 qmd。

${QMD_CLI:-qmd} update

如果输出提示需要向量或嵌入可能已过期,请运行:

${QMD_CLI:-qmd} embed

使用以下任一方式验证集合:

${QMD_CLI:-qmd} ls "$QMD_WIKI_COLLECTION"

或者,在已知特定页面路径时:

${QMD_CLI:-qmd} get "qmd://$QMD_WIKI_COLLECTION/<page>.md" -l 5

记录以下其中一项:

  • QMD refreshed: update + embed + verified
  • QMD refreshed: update only + verified
  • QMD skipped: QMD_WIKI_COLLECTION unset
  • QMD skipped: qmd CLI unavailable
  • QMD failed: <short error summary>

评论

支持 Markdown