关于 wiki-research
wiki-research 是用于 Obsidian wiki 的自主多轮研究技能,面向希望将网络研究整理为长期知识的用户。它检查现有 wiki、补充研究并生成相互链接的来源、概念、实体和综合页面。
主要功能
- 01按多个角度开展多轮网络研究
- 02检查 wiki 内容与研究配置
- 03整合可选命令行检索后端
- 04创建来源、概念、实体及综合页面
- 05更新索引、日志与研究记录
适用场景
- 01将新主题研究整理进 Obsidian wiki
- 02补充 wiki 中覆盖不足的问题
- 03依据来源创建可追溯的综合页面
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ ar9av/ obsidian-wiki --skill wiki-research安装后在 Claude Code 中输入/wiki-research确认已加载。
详细介绍
Wiki 研究——自主多轮研究
你正在围绕某个主题开展自主研究循环,综合所查内容,并将结果归档到 Obsidian wiki,作为永久知识。
开始之前
写作风格: 在起草或改写自然语言 Markdown 之前,请阅读并遵循 llm-wiki/SKILL.md 中的 Writing Profile Resolution 部分。框架架构、来源溯源、安全和特定操作要求优先适用。
WRITING.md 中的偏好仅适用于新起草或改写的自然语言 Markdown;请保留来源内容和结构化记录。
- 解析配置 — 遵循
llm-wiki/SKILL.md中的 Config Resolution Protocol(内联@name覆盖 → 沿 CWD 向上查找.env→ 全局配置 → 提示设置)。由此获取OBSIDIAN_VAULT_PATH和OBSIDIAN_LINK_FORMAT(默认值:wikilink)。 - 阅读
$OBSIDIAN_VAULT_PATH/index.md,了解 wiki 中已有的内容——不要重新研究 wiki 已充分覆盖的内容 - 如果
$OBSIDIAN_VAULT_PATH/hot.md存在,请阅读——其中汇总了近期背景信息 - 如果
$OBSIDIAN_VAULT_PATH/references/research-config.md存在,请查看——其中可能定义了此知识库的来源偏好、需跳过的域名或置信度规则 - 如果
$OBSIDIAN_VAULT_PATH/references/research-backends.md存在,请查看——其中登记了可选的 CLI 检索后端(社交媒体、视频转录文本、付费 API 等)。将所有可用后端加载到本次会话的工作状态中。
在生成的页面中撰写内部链接时,请根据 llm-wiki/SKILL.md 中的 Link Format 部分,应用 OBSIDIAN_LINK_FORMAT 的值。
如果研究主题不明确,请先向用户确认,然后继续。
研究配置(可选)
如果知识库中存在 references/research-config.md,请阅读并应用其中定义的规则:
- 来源偏好(例如,优先选择学术来源、避开特定域名)
- 需跳过的域名
- 置信度评分调整
- 特定主题的限制
如果文件不存在,请使用默认设置继续。
研究后端(可选)
如果知识库中存在 references/research-backends.md,请在开始研究前加载。该文件以 YAML 列表的形式定义零个或多个 CLI 检索后端:
backends:
- name: yt-dlp-transcript # friendly label
binary: yt-dlp # CLI binary (checked with `command -v`)
invoke: "yt-dlp --skip-download --write-auto-sub --sub-lang en --sub-format json3 -o /tmp/ytvid '{url}'"
when_to_use: YouTube video URLs, video transcripts
cost_tier: free # free | paid
env_key: "" # required env var for paid tiers (empty = always enabled)
output: text # json | text | markdown
- name: perplexity-sonar
binary: perplexity
invoke: "perplexity search '{query}'"
when_to_use: deep synthesis queries needing multi-source aggregation
cost_tier: paid
env_key: PERPLEXITY_API_KEY # skipped if unset
output: text
后端可用性检查(在会话开始时运行一次):
- 对于每个后端:运行
command -v <binary> 2>/dev/null——如果未找到,则标记为不可用,并在运行摘要中注明 - 对于
paid后端:还要检查$env_key是否非空——如果未设置,则标记为不可用,并注明 - 构建一份活跃后端列表(通过可用性和密钥检查),供第 1–2 轮使用
调用规则(研究期间按角度/URL 执行):
- 将
invoke模板中的{url}或{query}替换为当前 URL 或搜索查询 - 捕获标准输出;如果退出代码非零 → 跳过此角度下的该后端,记录简短错误,然后继续
- 将后端输出纳入同一套主张/概念/实体/矛盾提取流程,并引用后端返回的来源 URL(或查询模式后端的查询字符串)
- 后端故障绝不会中止研究;始终回退到
WebSearch/WebFetch
免费优先顺序: 对每个角度,先评估 free 后端,再评估 paid 后端。如果免费后端返回的内容足够,可以跳过同一角度的付费后端。
没有 research-backends.md → 完全跳过本节;行为与当前一致。
入门注册表模板
如果用户要求提供示例注册表,请在 $VAULT/references/research-backends.md 中提供此文件:
# Optional CLI backends for wiki-research. Delete rows you don't need.
# Skill docs: .skills/wiki-research/SKILL.md — Research Backends section
backends:
# --- free / local ---
- name: defuddle-fetch
binary: defuddle
invoke: "defuddle '{url}'"
when_to_use: any URL — cleaner extraction than WebFetch alone
cost_tier: free
env_key: ""
output: markdown
- name: yt-dlp-transcript
binary: yt-dlp
invoke: "yt-dlp --skip-download --write-auto-sub --sub-lang en --sub-format json3 -o /tmp/ytvid '{url}'"
when_to_use: YouTube video URLs for transcript extraction
cost_tier: free
env_key: ""
output: text
# --- paid / gated (skipped when env key is unset) ---
- name: perplexity-sonar
binary: perplexity
invoke: "perplexity search '{query}'"
when_to_use: deep synthesis queries needing multi-source aggregation
cost_tier: paid
env_key: PERPLEXITY_API_KEY
output: text
第 1 轮 — 广泛调研
目标: 全面了解该主题。
- 将主题拆分为 3-5 个不同角度(例如,对于“向量数据库”:它们是什么、何时使用、主流实现、权衡取舍、生产环境中的注意事项)
- 针对每个角度,使用不同表述运行 2-3 次
WebSearch查询 - 对每个角度下排名靠前的 2-3 个结果,使用
WebFetch(如果可用,也可以使用defuddle <url>— 提取结果更简洁)获取内容。对于每个 URL,还要调用when_to_use与之匹配的任何活跃后端(例如,YouTube URL 会触发yt-dlp-transcript);将其输出与WebFetch结果一并纳入提取,并引用后端返回的源 URL。 - 从每个获取的页面中提取:
- 关键主张 — 来源明确陈述的内容
- 概念 — 引入的思想、术语、框架
- 实体 — 提及的工具、人物、组织
- 矛盾 — 不同来源之间意见不一致之处
持续记录已覆盖和缺失的内容。
第 2 轮 — 补充空缺
目标: 补齐第 1 轮遗留的空缺。
回顾第 1 轮的产出:
- 来源提出了哪些问题,却没有给出答案?
- 来源之间有哪些矛盾?
- 哪些角度的资料覆盖不足?
针对这些空缺运行 最多 5 次定向搜索。优先选择一手资料、官方文档和权威分析,而非链接聚合网站。对于补缺查询,还要调用任何活跃的查询模式后端(例如,替换其 invoke 模板中的 {query},调用 perplexity-sonar);将结果连同后端名称作为引用上下文,一并纳入提取。
将发现添加到工作集。更新矛盾列表。
第 3 轮 — 综合核查
目标: 化解矛盾;确认资料深度充足。
如果仍有重大矛盾未解决:
- 最后进行一轮定向搜索(2-3 次),寻找权威的解释
- 如果无法解决,请在综合页面中明确标出该矛盾
如果矛盾较轻微,或第 2 轮后主题的覆盖已较充分,则跳过进一步搜索并开始归档。
停止条件: 达到所需深度或完成 3 轮后即停止 — 不要无限循环。
归档 — 编写 Wiki 页面
将所有发现整理到四个输出区域的 Wiki 页面中:
1. sources/ — 每个主要参考资料对应一个页面
对于每个重要来源(通常共 4-8 个页面):
---
title: >-
<Source title>
category: references
tags: [<2-4 domain tags>]
sources:
- "<URL>"
source_url: "<URL>"
created: <ISO-8601 timestamp>
updated: <obsidian-wiki memory now>
summary: >-
<1-2 sentences describing what this source covers, ≤200 chars>
provenance:
extracted: 0.X
inferred: 0.X
ambiguous: 0.X
base_confidence: <0.17 + 0.5 × classify(url) for a single source>
lifecycle: draft
lifecycle_changed: <obsidian-wiki memory now --date>
---
正文:标题、URL、涵盖内容、关键主张(带出处标记)、局限性。
2. concepts/ — 每个实质性概念对应一个页面
对于从来源中提取出的每个重要概念:
使用标准概念 frontmatter 和正文。将概念相互链接,并链接到来源页面。
3. entities/ — 工具、组织、人物
对于遇到的每个重要实体(工具、库、公司、重要作者):
使用标准实体 frontmatter。链接回使用该实体的概念,以及提及该实体的来源。
4. synthesis/Research: [Topic].md — 综合总览
主要产出:对所有发现进行结构化综合。
---
title: >-
Research: <Topic>
category: synthesis
tags: [<3-5 domain tags>, research]
sources: [<list of source URLs or page paths>]
created: <ISO-8601 timestamp>
updated: <obsidian-wiki memory now>
summary: >-
Synthesis of <N>-round research on <topic>. Covers <core findings in ≤200 chars>.
provenance:
extracted: 0.X
inferred: 0.X
ambiguous: 0.X
base_confidence: <min(N_unique_sources/3,1.0)×0.5 + avg_source_quality×0.5>
lifecycle: draft
lifecycle_changed: <obsidian-wiki memory now --date>
---
# Research: <Topic>
## Overview
<2-4 sentence executive summary of what the research found>
## Key Findings
<Bulleted list of the most important claims, each with a [[source page]] citation>
## Core Concepts
<Links to concept pages created, with one-line descriptions>
## Entities & Tools
<Links to entity pages, with one-line descriptions>
## Contradictions & Open Questions
<Where sources disagree or where the research hit limits>
## Sources Consulted
<Linked list of all source pages>
交叉链接
归档所有页面后:
- 每个概念页面都应至少链接到 2 个来源页面
- 每个来源页面都应链接到其提供参考的概念页面
- 综合页面应链接到所有生成的概念、实体和来源页面
检查 index.md 中是否已有相同主题的页面 — 合并到现有页面,而不是创建重复页面。
更新跟踪文件
.manifest.json —— 添加一个 research 条目:
{
"type": "research",
"topic": "<topic>",
"researched_at": "TIMESTAMP",
"rounds_completed": 3,
"sources_fetched": N,
"pages_created": ["..."],
"pages_updated": ["..."]
}
一次加锁调用即可更新索引、日志和热缓存:
obsidian-wiki memory sync WIKI_RESEARCH \
topic="<topic>" rounds=<N> sources_fetched=<N> \
pages_created=<M> backends_used="<name,...|none>" \
--takeaways "<the research topic and its core finding, in one line>"
不要在日志字段中列出你创建的每个页面——memory sync 会根据磁盘内容协调索引,而冗长的字段只会挤占热缓存。如果研究仍在进行,请记录下来:obsidian-wiki memory todo add "<open question>" --origin synthesis/<page>.md。
切勿手动编辑 index.md、log.md 或 hot.md——该命令会获取锁,防止并行写入者丢失你的更新。
完整流程请参阅 .skills/llm-wiki/references/MEMORY.md。
质量检查清单
- 已完成 3 轮(或因深度足够而停止)
- 综合页面已创建于
synthesis/Research: [Topic].md - 已为主要参考资料编写来源页面
- 已为重要条目编写概念和实体页面
- 已在综合页面中标记矛盾
- 所有页面均已交叉链接
- 已更新
index.md、log.md、hot.md、.manifest.json - 已报告后端摘要:哪些后端处于活动状态,哪些被跳过(可执行文件不可用/未设置密钥/发生错误),以及原因
写入知识库后刷新 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 已刷新:更新 + 嵌入 + 已验证QMD 已刷新:仅更新 + 已验证QMD 已跳过:QMD_WIKI_COLLECTION 未设置QMD 已跳过:qmd CLI 不可用QMD 失败:<简短错误摘要>