协作办公
整理 Obsidian wiki 标签混乱时…
当需要审计、规范化或统一 Obsidian wiki 标签,或为新页面选择标签、扩展标签词表时使用。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 38/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 55/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 60/100 ×0.15
适用场景
整理 Obsidian wiki 标签混特定
解决思路
- 开始前,按 `llm-wiki/SKILL.md` 中的 Config Resolution Protocol 解析配置(内联 `@name` 覆盖 → 从 CWD 向上查找 `.env` → 全局配置 → 提示设置),以获取 `OBSIDIAN_VAULT_PATH`。
- 读取 `$OBSIDIAN_VAULT_PATH/_meta/taxonomy.md`,获取规范标签列表。
- 读取 `index.md`,理解 wiki 的范围。
- 将 `$OBSIDIAN_VAULT_PATH/_meta/taxonomy.md` 作为规范标签词汇表,其中定义:Canonical tags(应使用的规范标签)、Aliases(应映射到规范形式的常见替代标签)、Rules(每页最多 5 个标签、小写/连字符、优先宽泛而非狭窄)、Migration guide(已知不一致的具体重命名)。
- 在给任何 wiki 页面打标签前,始终先读取 `_meta/taxonomy.md`,它是唯一事实来源。
- 处理保留系统标签 `visibility/`:`visibility/public` 表示明确公开,所有模式可见(等同于无标签);`visibility/internal` 表示仅团队可见,在 filtered query/export 模式排除;`visibility/pii` 表示敏感数据,在 filtered query/export 模式排除。
- 对 `visibility/` 标签应用规则:不计入 5 个标签限制。
- 对 `visibility/` 标签应用规则:每页只能有一个 `visibility/` 标签。
- 对 `visibility/` 标签应用规则:内容明显公开时完全省略,不需要标签。
- 对 `visibility/` 标签应用规则:绝不因为内容技术性强就添加 `visibility/internal`;只用于真正团队受限知识。
- 对 `visibility/` 标签应用规则:运行标签审计时,单独报告 `visibility/` 标签使用情况,不要把它们标记为 unknown 或 non-canonical。
- 规范化标签时,保持 `visibility/` 标签不变,它们不受别名映射影响。
- Mode 1 Tag Audit:当用户想查看当前标签状态时,扫描所有页面:使用 Glob `$VAULT_PATH/**/*.md`,排除 `_archives/`、`.obsidian/`、`_meta/`;从 YAML frontmatter 提取 `tags` 字段。
- 构建标签频率表:对每个发现的标签,统计使用它的页面数量。
- 标记 Unknown tags:不在 taxonomy 的 canonical 列表中的标签。
- 标记 Alias tags:使用别名而非规范形式的标签,例如 `nextjs` 而不是 `react`。
- 标记 Over-tagged pages:标签数超过 5 的页面。
- 标记 Untagged pages:没有标签或 `tags` 字段为空的页面。
- 生成 `## Tag Audit Report`,包含 `### Summary`,列出总唯一标签数、已用规范标签数、非规范标签数、超过 5 个标签的页面数、未打标签页面数。
- 报告包含 `### Non-Canonical Tags Found` 表格,列为 Current Tag、→ Canonical、Pages Affected。
- 报告包含 `### Unknown Tags (not in taxonomy)` 表格,列为 Tag、Pages、Recommendation(例如建议加入 taxonomy 的分类)。
- 报告包含 `### Over-Tagged Pages` 表格,列为 Page、Tag Count、Tags。
- Mode 2 Tag Normalization:先运行上面的审计。
- 对每个含非规范标签的页面应用修复:读取页面。
- 将别名标签替换为 taxonomy 中对应的规范形式。
- 如果页面标签超过 5 个,建议删除哪些标签,保留最具体/相关的标签。
- 写入更新后的 frontmatter。
- 示例:将 `tags: [nextjs, ai, ml-engineer, windows98, creative-coding, game, 8-bit, portfolio]` 修改为 `tags: [react, ai, ml, retro, generative-art]`。
- 处理不在 taxonomy 中且不是别名的未知标签:如果该标签用于 2 个或更多页面,建议将其加入 taxonomy。
- 处理未知标签:如果该标签仅用于 1 个页面,建议用最接近的规范标签替换它。
- 在修改未知标签前询问用户。
- 如果同意新的规范标签,将其追加到 `_meta/taxonomy.md` 的正确章节。
- Mode 3 Tagging a New Page:创建 wiki 页面并需要选择标签时,读取 `_meta/taxonomy.md`。
- 选择最多 5 个最能描述页面的标签,按如下构成:1-2 个 domain tags(主题领域)、1 个 type tag(事物类型)、0-1 个 project tags(项目相关)、0-1 个额外描述性标签。
- 只使用规范标签,绝不使用别名。
- 如果没有现有标签适合,检查是否值得将其加入 taxonomy。
- Mode 4 Adding a New Tag:用户想向词汇表添加标签时,检查现有标签是否已覆盖该概念;若已覆盖则建议使用现有标签。
- 如果确实是新标签,确定它属于哪个章节(Domain、Type、Project)。
- 将其添加到 `_meta/taxonomy.md`,包含:规范标签名、用途、以及要重定向的别名。
- 任何标签操作之后,向 `log.md` 追加:`- [TIMESTAMP] TAG_AUDIT tags_normalized=N unknown_tags=M pages_modified=P`。
- 或者,规范化操作后追加:`- [TIMESTAMP] TAG_NORMALIZE tags_renamed=N pages_modified=M new_tags_added=P`。
- 读取 `$OBSIDIAN_VAULT_PATH/hot.md`(如果缺失,从 `wiki-ingest` 中的模板创建)。
- 用一行摘要更新 `hot.md` 的 **Recent Activity**,例如 `Tag audit: normalized 14 tags across 28 pages; 2 new canonical tags added.`。
- 在 `hot.md` 中保留最近 3 次操作。
- 更新 `hot.md` 中的 `updated` 时间戳。
- Vault 写入后的 QMD 刷新:QMD 是搜索索引,不是事实来源;如果 `$QMD_WIKI_COLLECTION` 为空或未设置,跳过此步骤。
- 仅在此技能写入或重写 vault markdown 之后运行 QMD 刷新。
- 如果 QMD 刷新失败,不要回滚 vault 更改;单独报告 QMD 状态。
- 如果设置了 `$QMD_CLI` 则使用它;否则使用 `qmd`。
- 运行:`${QMD_CLI:-qmd} update`。
- 如果输出说需要 vectors 或 embeddings 可能过期,运行:`${QMD_CLI:-qmd} embed`。
- 用以下任一方式验证 collection:`${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>`。
适用边界 · 注意事项
- 没有 Obsidian vault、未配置 `OBSIDIAN_VAULT_PATH` 或缺少 QMD 等依赖时,不要直接套用。
- 标签不在 Markdown YAML frontmatter 中,或不需要受控词表而要保持自由标签时,不适用。
- 仅想临时查看标签而不修改 vault,或不允许写 `log.md`/`hot.md`/QMD 时,应避免执行完整规范化流程。