关于 tag-taxonomy
tag-taxonomy 是用于 Obsidian wiki 的标签审计与规范化技能,依据库内的分类表统一标签。它还指导新页面选标签及将新标签加入分类表。
主要功能
- 01统计标签并发现别名与未知标签
- 02规范化标签并遵循每页最多五个的规则
- 03为新页面选择规范标签
- 04按类别将新标签加入分类表
- 05支持可见性标签的独立规则
适用场景
- 01检查 wiki 中的标签一致性
- 02将别名替换为规范标签
- 03为新页面选择分类表中的标签
- 04在确认后扩展标签分类表
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ ar9av/ obsidian-wiki --skill tag-taxonomy安装后在 Claude Code 中输入/tag-taxonomy确认已加载。
详细介绍
标签分类体系 — Wiki 标签的受控词表
通过将标签规范化为受控词表,确保整个 Wiki 的标签保持一致。
开始之前
- 解析配置 — 遵循
llm-wiki/SKILL.md中的配置解析协议(内联@name覆盖 → 沿 CWD 向上查找.env→ 全局配置 → 提示用户设置)。这会得到OBSIDIAN_VAULT_PATH - 阅读
$OBSIDIAN_VAULT_PATH/_meta/taxonomy.md— 这是规范标签列表 - 阅读
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:应用修正
对于每个含有非规范标签的页面:
- 阅读页面
- 将别名标签替换为分类体系中的规范形式
- 如果页面有超过 5 个标签,建议删除哪些标签(保留最具体/最相关的标签)
- 写入更新后的 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 页面并需要选择标签时:
- 阅读
_meta/taxonomy.md - 选择最多 5 个最能描述该页面的标签:
- 1-2 个领域标签(所属主题领域)
- 1 个类型标签(内容类型)
- 0-1 个项目标签(仅适用于特定项目时)
- 0-1 个额外描述性标签
- 仅使用规范标签 — 切勿使用别名
- 如果没有合适的现有标签,请判断是否值得将其添加到分类体系
模式 4:添加新标签
当用户想要为词汇添加标签时:
- 检查是否已有标签涵盖该概念(如果有,则建议使用该标签)
- 如果确实是新标签,确定它所属的部分(领域、类型、项目)
- 将其添加到
_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 + verifiedQMD refreshed: update only + verifiedQMD skipped: QMD_WIKI_COLLECTION unsetQMD skipped: qmd CLI unavailableQMD failed: <short error summary>