mcpField
W
wiki-digest

wiki-digest

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

关于 wiki-digest

wiki-digest 用于生成 Obsidian wiki 近期活动的可读回顾,重点整理知识、主题、页面关联和待解决事项。它可直接在对话中输出,也可按要求保存为日志页面。

主要功能

  1. 01总结新增和更新的 wiki 页面
  2. 02识别重复标签与主题
  3. 03查找跨类别的页面链接
  4. 04呈现草稿和未解决事项
  5. 05可选保存为日志摘要

适用场景

  1. 01回顾过去一周积累的知识
  2. 02梳理近期更新页面中的共同主题
  3. 03发现值得重读的草稿与关联

安装

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

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

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

详细介绍

Wiki Digest — 知识简报生成器

生成一份易于阅读的近期 wiki 活动简报:有哪些新发现、哪些内容得到更新、出现了哪些主题,以及哪些内容值得回顾。这项技能总结的是知识,而不是来源——把它看作每周回顾,而不是摄取状态报告。

开始之前

写作风格配置: 在起草或改写自然语言 Markdown 之前,请阅读并遵循 llm-wiki/SKILL.md 中的 Writing Profile Resolution 部分。框架架构、来源信息、安全性和特定操作要求优先。 WRITING.md 中的偏好仅适用于新起草或改写的自然语言 Markdown;保留来源内容和结构化记录。

  1. 解析配置 — 遵循 llm-wiki/SKILL.md 中的 Config Resolution Protocol(内联 @name 覆盖 → 从 CWD 向上查找 .env → 全局配置 → 提示词设置)。由此获取 OBSIDIAN_VAULT_PATH 和 OBSIDIAN_LINK_FORMAT。
  2. 解析时间范围,根据用户请求确定:
    • “daily” / “today” / “yesterday” → 过去 24 小时
    • “weekly” / “this week” / 无参数(默认)→ 过去 7 天
    • “monthly” / “this month” → 过去 30 天
    • ISO 日期,例如 “since 2026-05-01” → 自该日期以来更新的页面
    • 明确的数字,例如 “last 14 days” → 指定天数
  3. 读取 $OBSIDIAN_VAULT_PATH/log.md 的最后 200 行,查找时间范围内的条目(时间戳位于以 ISO-8601 格式开头的行中)。
  4. 读取 $OBSIDIAN_VAULT_PATH/hot.md,了解当前会话的上下文。
  5. 如果 $OBSIDIAN_VAULT_PATH/_insights.md 存在,读取其中的 Anchor Pages 表;稍后用它判断哪些新页面成了中心页面。

第 1 步:收集时间范围内的活跃页面

遍历 $OBSIDIAN_VAULT_PATH 下所有 .md 文件。跳过特殊文件和系统文件:

  • index.md、log.md、hot.md、AGENTS.md、_insights.md
  • _meta/、_archives/、_raw/ 目录下的所有文件
  • 日志简报页面本身(journal/digest-*.md)

读取其余每个页面的 frontmatter:

  • created — 页面首次编写的时间
  • updated — 页面最后修改的时间

分类:

  • 新页面:created 在时间范围内
  • 已更新页面:updated 在时间范围内,但 created 早于该时间范围
  • 未更改页面:两个日期都不在时间范围内 → 跳过

如果活跃页面少于 5 个,请注明这一点并询问是否扩大范围:“过去 7 天内只有 3 个活跃页面——要改为生成月度简报吗?” 除非用户同意继续,否则到此为止。

对每个活跃页面,收集:title、category、tags、summary(frontmatter 字段)、lifecycle,以及正文中的任何 ^[ambiguous] 或 ^[inferred] 标记。

第 2 步:识别主题

统计所有活跃页面中各标签对应主题的出现频次:

For each tag across new + updated pages:
  count how many active pages carry it
Sort descending, take top 5

另外,读取 $OBSIDIAN_VAULT_PATH/_meta/taxonomy.md(如果存在)。标记第 1 步中未出现在分类体系里的标签——这些是本时间范围内出现的新词汇。

指出增长最多的类别(concepts/、entities/、skills/、synthesis/、references/ 等)。

第 3 步:找出值得关注的新联系

扫描新页面和已更新页面中的跨类别 wikilink——即连接不同知识层的链接。这些是本时间范围内最有思想价值的成果。

对每个活跃页面,提取所有 [[wikilink]] 目标。根据目标的类别前缀对链接分类。标记跨类别的链接(例如,concepts/ 页面链接到 entities/ 页面,或 synthesis/ 页面连接两个主题)。

按有趣程度为候选项排序:

  • 如果链接跨越两个很少相连的类别,则 +3(如果有 _insights.md 中的桥接数据,则使用该数据)
  • 如果目标页面是排名前 10 的中心页面(根据 _insights.md 中的锚点),则 +2
  • 如果链接出现在 synthesis/ 页面中(表示有意进行跨主题关联),则 +2
  • 如果来源页面标记为 ^[inferred](表示这是综合推断出的联系,而非直接陈述),则 +1

选出排名最高的 3–5 个联系。用通俗易懂的句子分别说明:不要只写“A → B”,还要说明这种联系为何有趣。

第 4 步:梳理未解决事项

扫描活跃页面和 _raw/,查找尚未完成的工作:

  • 草稿:带有 lifecycle: draft 或 lifecycle: stub 的页面
  • 含糊的说法:统计所有活跃页面中的 ^[ambiguous] 标记(不用逐个列出,只需给出数量,并指出标记最多的页面)
  • 尚未归档的笔记:统计 $OBSIDIAN_VAULT_PATH/_raw/ 中的文件数(其中的文件都尚未提升为正式内容)
  • 分类体系缺口:第 2 步中的标签里未收录在 _meta/taxonomy.md 中的标签

第 5 步:选择建议重读的页面

从 本周期之前 已有的页面中,找出 2–3 个值得结合本周新增的背景信息重新阅读的页面。

启发式方法:找出与第 1 步中的活跃页面共享标签最多的本周期之前的页面。这些是基础页面,其主题在本周期得到了延伸——新页面建立在这些页面之上,但用户可能没有重新阅读基础内容。

另外,还要包括任何一个现在新增了 2 个或更多活跃页面入链的本周期之前的页面(它的关联度刚刚提升,说明它可能是承重页面)。

为每条推荐写出具体原因:“[[concepts/attention-mechanism]] — 这是你的基础页面;本周导入的 3 篇新论文都对其进行了扩展”,而不只是写页面标题。

第 6 步:生成摘要

生成结构清晰、便于快速浏览的 Markdown 报告。标题部分最重要——它应像一份优质简报的开篇,综合提炼实际洞见,而不是罗列页面名称。

使用 llm-wiki/SKILL.md(“链接格式”部分)中的链接格式,并遵循 OBSIDIAN_LINK_FORMAT。默认格式为 [[wikilink]]。

# Wiki Digest — [Period Label]
> [N new pages · M updated pages · period: YYYY-MM-DD to YYYY-MM-DD]

## Headlines

- [Concrete insight #1 — synthesize the actual knowledge, not just "learned about X"]
- [Concrete insight #2]
- [Concrete insight #3]

## New Knowledge

### New pages ([count])
| Page | Category | Summary |
|---|---|---|
| [[concepts/foo]] | concept | One-sentence summary from frontmatter |
| [[entities/bar]] | entity | One-sentence summary |

### Notable updates ([count])
| Page | What changed |
|---|---|
| [[skills/react-hooks]] | Added patterns for useCallback with async effects |

*(If no updates, omit this subsection.)*

## Emerging Themes

- **#[tag]** ([N pages]) — [One sentence on why this topic was active]
- **#[tag]** ([N pages]) — [...]
- **#[NEW TAG]** ([N pages]) ⭐ *New vocabulary — not yet in taxonomy*

Most active category: **[category/]** ([N pages added or updated])

## Key Connections Made

- [[concepts/A]] → [[entities/B]] — [Plain-English reason this connection is interesting]
- [[synthesis/X]] created — bridges [[concepts/Y]] and [[concepts/Z]] for the first time
- *(up to 5 connections)*

## Open Threads

- **Drafts to compile** ([count]): [[concepts/foo]], [[concepts/bar]] — still in draft lifecycle
- **Ambiguous claims**: [N] `^[ambiguous]` markers across [M] pages — run `/wiki-synthesize` to resolve
- **Unstaged notes**: [N] files in `_raw/` — run `/wiki-ingest _raw/` to promote them
- **Taxonomy gaps**: Tags `#newtag1`, `#newtag2` used but not in taxonomy — run `/tag-taxonomy`

*(Omit any subsection where count is 0.)*

## Recommended Re-reads

- [[concepts/X]] — [Specific reason: "3 new papers this week all extend this concept"]
- [[synthesis/Y]] — [Specific reason: "2 new pages created this week reference it"]
- [[skills/Z]] — [Specific reason: "now has 4 new incoming links — it's become a hub"]

---
*Generated by wiki-digest · [TIMESTAMP] · [N pages scanned in [VAULT_PATH]]*

可见性:如果页面带有 visibility/pii 标签,则从所有表格和关联列表中排除(但应计入总数,并注明“+ N 个私密页面”)。如果用户明确说“包含私密页面”或“完整摘要”,则正常包含这些页面。

第 7 步:输出并视情况保存

默认(在聊天中输出): 直接打印摘要。末尾询问: “要我把它保存为 journal/digest-YYYY-MM-DD.md 吗?”

如果用户在请求前加上“save”或“write”(例如,/wiki-digest save 或“生成并保存我的每周摘要”):

  • 写入 $OBSIDIAN_VAULT_PATH/journal/digest-YYYY-MM-DD.md(每周/每月)或 journal/digest-YYYY-MM-DD-daily.md(每日)
  • 添加 frontmatter:
    ---
    title: "Wiki Digest — [Period Label]"
    category: journal
    tags: [digest, meta/review]
    sources: []
    created: TIMESTAMP
    updated: TIMESTAMP
    summary: "Weekly knowledge digest: [N new, M updated pages]. Top themes: [tag1], [tag2]."
    ---
    
  • 在 index.md 的 Journal 部分下添加新条目
  • 不要添加到 .manifest.json(摘要不是来源导入内容)

无论哪种情况,都要在 log.md 末尾追加:

- [TIMESTAMP] DIGEST period="7d" new_pages=N updated_pages=M themes=T connections=C saved=false

边缘情况

情况处理方式
活跃页面少于 5 个提议扩大时间范围;仅在用户确认后继续
知识库为空(没有任何页面)告知用户先运行一次导入,然后停止
没有 _meta/taxonomy.md跳过分类体系缺口检查;在“未解决事项”中省略该行
没有 _insights.md跳过第 3 步中基于中心页面的评分;仍需生成关联部分
所有页面都带有 visibility/pii 标签报告“本周期有 N 个私密活跃页面”,不提供详情;提供完整模式选项
时间范围涵盖 Wiki 重建在摘要中注明:“本周期内 Wiki 已重建——页面日期反映重建后的状态”

备注

  • 标题是摘要的精华所在。 不要罗列页面标题,而要综合提炼实际所学。如果有人本周学习了注意力机制,标题应概括洞见,而不只是说“新增了 3 个 Transformer 页面”。
  • 重读建议要具体。 “此页面相关”毫无用处。“本周的 3 篇论文都引用了此页面中的同一个说法”才有实际帮助。
  • 此技能只读取内容。 唯一的写入操作是可选的日志页面,以及向 log.md 追加内容。不会修改现有 Wiki 页面。
  • 不要与 wiki-status 的功能重复。 如果用户问“还有什么需要导入”或“有哪些增量”,请转到 wiki-status。此技能回答的是“我学到了什么”,而不是“还有什么待处理”。

Vault 写入后刷新 QMD

QMD 是搜索索引,不是事实来源。如果 $QMD_WIKI_COLLECTION 为空或未设置,请跳过此步骤。仅在此技能写入或重写了 Vault Markdown 后运行。如果 QMD 刷新失败,不要回滚 Vault 更改;请单独报告 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