公开我的Obsidian LLM Wiki的脚本(附双平台脚本)

0 阅读6分钟

没想到之前随手写的一个搭建思路有这么多人关注,感谢大家。

后面想了很久,要不要把我的脚本公开出来?

之前分享的时候写得比较仓促,大概就是配置了一整天下来,发现用插件这条路走不通,可能是英语苦手吧,改变思路后,用手头熟悉的工具去尝试,没想到达到预期效果了。

我还是决定放出来,因为它有一定的价值,可以让更多人在我的基础上修改出自己想要的版本,吸收到一些经验避开我踩过的坑,快速的去尝试这个方法是否适合自己。毕竟没处理时的多资料的Obsidian里,看到的图谱实际并没有呈现期待的知识关系。

特别说一下,第一次用的朋友也不用担心,脚本本身不会对已有的笔记做任何修改。她会读取笔记内容,让大语言模型处理为新的文件,保存到你指定的目录。觉得不满意随时可以删掉这个目录,不会造成任何对已有资料不可逆的行为。


脚本随着使用时间以及数据积累,后续还会迭代,目前来说,有这些问题还没找到解决方案:

  1. 识别实体的准确率
    • 对实体识别做了一些额外的限制:中英文取公认的,禁止中英混用,去复数、去除符号,去颜表情,技术缩写必须全为大写,首字母大写等。
    • 但实际使用下来还是会有实体识别不够准确的情况,可能这跟模型性能有关。解决的方向是,在定期维护时,通过有联网能力的模型去处理
  2. 近似词的识别和合并
    • 在创建实体页面时,做了以下措施:检查本地已有实体,去除多余符号,确保没有重复的词。

    • 随着数据量的提升,会发现近似词会变着花样出现。同样的,定期维护时可以去解决,单依赖脚本本身有局限性

脚本运行后的关系图谱效果是这样的

图片

目录:11-knowledge,就是我用来存放 知识卡片、实体的目录(如果想直接拿脚本的,可以直接滑到文章底部)
脚本有两段提示词,除此之外都是用Python去实现的。如果担心有安全问题,可以下载了压缩包之后先去检查。


用于提取知识卡片的提示词

# Role
你是一个资深的“语义解析与知识重构专家”。你的任务是忽略原始文本中的一切排版干扰和冗余信息,将其转化为高密度的、纯文字的原子化知识卡片。

# Rules (底层处理逻辑)
1. **字符级过滤**:严禁在输出中包含任何非文字的视觉装饰符号(禁止所有 Emoji、图标、ASCII 装饰线)。
2. **列表化输出**:【关键要点】必须使用 Markdown 无序列表(* 或 -)呈现。每行仅承载一个独立逻辑点,禁止将多个要点合并为段落。
3. **结构化去噪**:自动忽略 HTML 标签、元数据、社交媒体引导语等噪声。
4. **代码语义化**:遇到代码或指令,禁止展示源码,必须转译为其“实现的功能”或“核心逻辑”。
5. **输出规格**:全中文,纯文字,总字数 < 300 字。严禁输出任何引导性开场白。

# 实体命名协议 (Naming Protocol) - 强制执行
1. **去空格化**:专有名词中间严禁保留空格。例如:使用 `OpenClaw` 而非 `Open Claw`,使用 `PyAutoGUI` 而非 `PyAuto GUI`2. **大小写规范**:技术缩写必须全大写(如 `OCR`, `RPA`, `API`);普通专有名词使用首字母大写(如 `Obsidian`, `Python`)。
3. **术语唯一性**:若原文存在公认的英文术语,**仅输出英文**,禁止中英混写或仅输出中文(例如:使用 `Agent` 而非 `智能体`)。
4. **去复数与去符号**:实体名必须使用单数形式,严禁包含 `/`, ``, `-`, `_` 等连接符。

# Workflow
1. **语义解构**:从原始文本中提取核心信息。
2. **文件名安全命名**:拟定 20 字以内学术化标题。**禁止包含:/ \ : * ? " < > |**。
3. **关系建模**:依据【实体命名协议】提取专业名词,并执行双向链接。

# Output Format (严格执行)
必须且仅能输出以下结构,禁止包含任何 Emoji:

【卡片名称】:[生成的纯文字标题,将作为文件名使用]
【核心定义】:[一句话定义本质,严禁废话引导语]
【关键要点】:
* [高浓度事实 1]
* [高浓度事实 2]
* [高浓度事实 3]
* [高浓度事实 4]
【作者情绪】:[精准提炼立场或倾向]
【关联实体】:[[实体1]], [[实体2]]
【原文地址】:[[此处仅填入原文件的文件名,必须带扩展名,包裹在双中括号内]]

创建实体的提示词

你现在的任务是"实体库标准化审计"。 
以下是从知识卡片中提取的原始实体列表: 
{entities} 

请根据以下协议进行清洗:
1. 合并同义词:例如将 "AI代理""Agent" 统一为 "Agent"。 
2. 修正格式:移除空格,统一大小写(缩写全大写,专有名词首字母大写)。 
3. 语义去重:确保列表中没有重复含义的词。 仅输出 JSON 格式的字符串数组,例如:["Agent", "OCR", "Obsidian"]

过程里解决的问题你们就不用再处理这些问题了

  • 为知识卡片提炼限定长度的标题,而不是采用原文标题,避免流水式的标题;

  • 知识卡片里带上原文地址,方便确认(如果你不需要,可以在提示词里删除这部分);

  • 对文本去噪,避免影响大语言模型工作,包括编码、emoji、占位符、不可识别内容等影响正常工作;

  • 禁止代码块,必须将其转为人类可读的自然语言逻辑描述;

  • 去除口水话、语气助词,让输出内容更学术、中立;

  • 严格的输出格式,避免模型输出emoji、自发表述注释;

  • 确保实体都被双向链接包裹

  • 创建实体前先判断是否已有,若有则追加

  • 实体去重

  • 规范实体名称

  • 合并同义词的实体

使用流程脚本具备自动记忆功能,当你输入自己的值时,只要进入到下一步,它就会自动保存为默认值,下次无需再手动输入,不断回车就可以完成整个蒸馏过程。脚本在初次使用会自动安装依赖,在Python标准库的基础上安装
这样使用

  1. 双击,运行脚本

  2. 预设了 美团LongCat的模型。(可以换自己的大语言模型,表现会更好)

  3. 指定 要读取的目录(目录A)

  4. 指定 要保存知识卡片的目录(目录B)

  5. 等待处理完成会提示,指定 指定实体的目录(目录C)

  6. 完成!

图片下载脚本

gitee.com/kikun/Obsid…

Gitee国内直连


看到这里,给我点个赞、推荐、转发吧!你是好人!!

Mac脚本我测试过,Win的如果有问题,可以用Trae、CodeBuddy去修改

更多文章,微信公众号:男朋友的求生欲