mcpField
W
wiki-narrate

wiki-narrate

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

关于 wiki-narrate

wiki-narrate 是一项 Agent Skill,可根据 Obsidian wiki 围绕主题生成带引用的 Markdown 阅读稿。它通过主张清单限制内容于有依据的库内证据,并仅在指定时保存。

主要功能

  1. 01检索与主题相关的库内页面
  2. 02支持 briefing、plain-language 和 lecturer 文风
  3. 03为事实主张标注库内页面引用
  4. 04标记推断及未解决的冲突
  5. 05仅在使用 --save 时保存阅读稿

适用场景

  1. 01围绕 wiki 主题生成带引用的叙述
  2. 02按指定文风制作简明阅读稿
  3. 03总结库内相互矛盾或不完整的证据
  4. 04按要求保存已完成的阅读稿

安装

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

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

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

附带文件references/voices.md

详细介绍

Wiki Narrate — 带引用的叙述式摘要

仅将此技能用于基于主题的 Markdown 摘要。不要添加标签或页面列表选择、先前查询输入、语音别名、HTML、PDF、幻灯片、渲染器移交或新编译的知识页面。

命令约定

/wiki-narrate <topic> [--voice briefing|plain-language|lecturer] [--save]

  • 必须提供非空的 <topic>。
  • 默认语音为 briefing。
  • 语音名称为规范名称,且区分大小写。不支持的值必须返回错误,并列出 briefing、plain-language 和 lecturer;不得搜索或写入。
  • --save 是唯一的持久化开关。
  • 如果缺少主题、选项格式错误或语音不受支持,则返回简短的用法说明或验证错误;不得搜索、写入、追加日志事件或更改 hot.md。

检索

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

  1. 使用 Config Resolution Protocol 解析配置,包括行内的 @name 知识库覆盖,然后在目标知识库中存在 AGENTS.md 时读取它。 起草引用之前加载 OBSIDIAN_LINK_FORMAT。
  2. 首先读取 hot.md 和 index.md。根据 frontmatter 和摘要筛选候选项,再读取正文。
  3. 配置了 QMD 时,先使用 QMD,再使用 rg;如果 QMD 不存在、未配置或运行失败,则继续使用索引和 rg 路径。将 QMD 输出视为候选项指引,而非证据:每项声明都必须以允许读取的知识库页面为依据。
  4. 遵循诸如“仅限公开内容”“面向用户”“不含内部内容”“以用户所见为准”和“排除内部内容”等过滤模式措辞。在此模式下,跳过标记为 visibility/internal 或 visibility/pii 的页面:绝不读取、引用或透露这些页面。
  5. 从候选项中排除 _readouts/、_raw/、_archives/、_meta/、index.md、log.md、hot.md 和 _insights.md。
  6. 先阅读匹配的章节,只有在无法通过其他方式确认事实声明时才阅读整页。保留相关的生命周期和时效性注释;不得提高页面的可信度。

声明台账与引用审计

撰写正文前先拟定台账。每项包含一项声明、作为依据的 [[vault page]] 链接,以及以下一种状态:有依据的事实、推断出的关联或模糊冲突。 当 OBSIDIAN_LINK_FORMAT=markdown 时,将同一支撑页面呈现为标准 Markdown 链接;否则使用知识库的 [[wikilink]] 格式。

确保每个事实句子旁都有支撑引用。将推断出的关联标记为 ^[inferred];将未解决的冲突标记为 ^[ambiguous]。绝不使用网络知识、模型记忆或虚构示例来填补缺口。省略缺乏依据的声明,并在 Coverage 中指出缺口。推断或模糊标记只是补充,不能替代相邻引用。

起草与输出

阅读 references/voices.md,并严格使用所请求语音的结构模板。所选语音可以改变措辞和顺序,但不能改变台账的事实边界。 仅返回 Markdown,结构如下:

  1. 标题须注明主题和所选语音。
  2. 按所选语音文档规定的顺序排列章节。
  3. 每个事实句子旁都附上引用,并按照 OBSIDIAN_LINK_FORMAT 呈现。
  4. 以 ## Coverage 作为页脚,列出引用的页面、推断声明的数量,以及已知证据缺口。

如果证据薄弱或相互矛盾,则只呈现有依据的部分。使用 ^[ambiguous] 标记每项未解决的冲突,并附上所有冲突页面的引用;在 ## Coverage 中列出其余缺口。

持久化

默认在对话中呈现结果。对于 --save,如有必要则创建 _readouts/,并将结果写入 _readouts/<slug>.md,其中包含 title、topic、voice、sources、created 和 updated frontmatter。根据主题生成确定且符合文件系统安全要求的 <slug>。保存与对话中返回的相同完整 Markdown 阅读报告。

阅读报告是派生输出:检索时排除 _readouts/,且不得更新 index.md 或 .manifest.json。只有 --save 成功后才能创建 _readouts/ 或阅读报告文件。

日志记录与热缓存

检索已启动的每次叙述尝试后,在 log.md 中追加一条 WIKI_NARRATE 事件:

obsidian-wiki memory log WIKI_NARRATE \
  topic="<topic>" voice=<voice> result_pages=<N> \
  mode=<normal|filtered> saved=<true|false> \
  outcome=<success|no_match|write_failed>

这是未使用 --save 的叙述唯一允许执行的写入操作。不得手动修改 index.md 或 hot.md。

  • 未使用 --save 时,在返回阅读报告后追加 saved=false 的事件; 不创建阅读报告,也不更改 hot.md。
  • 成功写入 --save 后,追加 saved=true 的事件,然后使用 obsidian-wiki memory hot --takeaways "<line>" 刷新热缓存,其中单行摘要需说明主题、语气、引用页面数和已保存阅读报告的路径。仅在成功保存后,且只能通过该命令更改 hot.md。
  • 如果起草后阅读报告写入失败,则在对话中返回完整阅读报告,说明保存失败;若 log.md 仍可写入,则追加带有 saved=false outcome=write_failed 的 WIKI_NARRATE 事件,且不得更新 hot.md。
  • 如果追加 log.md 失败,则保留阅读报告结果,并单独报告日志记录失败。绝不能将失败的日志记录或保存说成成功。

安全失败处理

  • 没有匹配页面: 说明知识库中没有该主题的相关材料。即使请求了 --save,也不得创建阅读报告文件,不得更改 hot.md;如果 log.md 可写入,则记录带有 outcome=no_match 的 WIKI_NARRATE 事件。
  • 证据薄弱或来源冲突: 不得借助外部知识解决。仅返回有依据的说法,在适用时标明歧义,并在 ## Coverage 中明确说明缺口;仍可保存成功生成的部分阅读报告。
  • QMD 不可用或未配置: 在工作进度更新中简要说明回退方案,并通过 index.md 和 rg 安全地继续;不能仅因 QMD 不可用就中止叙述。
  • 写入失败: 绝不能将不完整的阅读报告作为已保存结果呈现,绝不能更新 hot.md,也绝不能更新 index.md 或 .manifest.json。

评论

支持 Markdown