开发者指南:将obsidian-ava作为API库集成到自定义Obsidian插件的完整教程

开发者指南:将obsidian-ava作为API库集成到自定义Obsidian插件的完整教程 开发者指南将obsidian-ava作为API库集成到自定义Obsidian插件的完整教程【免费下载链接】obsidian-avaQuickly format your notes with ChatGPT in Obsidian项目地址: https://gitcode.com/gh_mirrors/ob/obsidian-avaobsidian-ava 是一款基于 ChatGPT 的 Obsidian AI 助手插件可以帮你快速格式化笔记、生成段落、链接相关笔记甚至用选中文字直接生成图片。但许多开发者不知道的是它不仅在界面上好用还公开了一套简洁的 API能像普通 JS 库一样被直接调用。无论你想在 Templater 模板里一键生成图片还是在自己的 Obsidian 插件代码中复用 AI 能力都可以把 obsidian-ava 当作 API 库来集成。这份开发者指南会从安装配置、核心方法、Templater 脚本到自定义插件调用一步步带你完成集成。obsidian-ava是什么能当库用的ChatGPT笔记助手obsidian-ava 的核心定位是用 ChatGPT 快速格式化你的笔记。在它的设置项里你只需要填入 OpenAI API Key 即可使用全部 AI 能力包括生成段落Write Paragraph改写选中文字Rewrite Selection语义搜索并关联笔记Link Notes根据文字生成图片Generate Image向你的知识库提问Ask而可作为库使用这一设计才是它区别于其他 AI 插件的地方。项目在 src/main.tsx 的插件类上把核心能力全部暴露成了公开方法任何能拿到插件实例的代码比如 Templater 脚本、其他 Obsidian 插件都能直接调用。官方还专门写了 docs/USING_AS_API.md 来讲解库用法。安装与配置obsidian-avaAPI集成前的3分钟准备在写任何代码之前先让 obsidian-ava 在你的库中跑起来打开 Obsidian 设置 → 第三方插件 → 社区插件市场搜索并安装 obsidian-ava启用插件点击侧边栏的魔法帽图标或通过命令面板运行引导教程进入插件设置页填入你的 OpenAI API Key部分功能需要登录获取 token。配置完成后插件会在加载时自动初始化 API 绑定并把 token、vault 标识等写入设置。之后你只需要确保插件处于启用状态就可以在任何地方通过app.plugins.plugins.ava拿到它的实例了。obsidian-ava核心API速览5个方法覆盖全部AI能力打开 src/main.tsx 可以看到插件公开了 5 个核心方法它们就是你在集成时最常打交道的接口方法作用返回值要点createImage(request)根据提示词生成图片并保存到指定目录{ imagePaths: string[] }complete(prompt, options)文本补全支持流式输出非流式返回字符串流式返回 SSE 事件源search(query)对整个库做语义搜索{ similarities: [{path, score}] }clearIndex()清空语义索引状态信息indexWholeVault()为整个库建立索引配合 search 使用其中createImage的实现位于 src/stableDiffusion.ts支持size、limit、prompt、outputDir等参数complete与search的实现位于 src/utils.tscomplete额外支持temperature、maxTokens、stop等大模型常见参数。在Templater脚本中调用obsidian-ava API最快上手路径对多数人来说集成 obsidian-ava 最省事的方式就是通过 Templater 插件写脚本。官方示例的配置是模板放在Templates/Templater脚本放在Templates/Scripts。示例一选中文字一键生成图片把下面脚本保存为Templates/Scripts/descriptionToArt.js模板里用% tp.user.descriptionToArt() %调用const descriptionToArt async () { document.body.style.cursor wait; const selection window.getSelection().toString(); const outDir app.vault.adapter.basePath / app.workspace.getActiveFile().parent.path; const {imagePaths} await app.plugins.plugins.ava.createImage({ prompt: selection, outputDir: outDir, size: 512, }); if (imagePaths.length 0) { new Notice(No image was generated); return; } document.body.style.cursor default; return ${selection}\n\n![[${imagePaths[0].split(/).pop()}]]\n\n; } module.exports descriptionToArt;这段代码演示了createImage的完整用法读取选中文字作为 prompt把生成目录指向当前笔记所在文件夹最后把图片以嵌入语法插回笔记。示例二语义搜索关联笔记如果想让选中文字自动关联库里的相关笔记可以用search方法。注意使用前需在 obsidian-ava 设置中启用 Links并手动运行一次 Load vault 命令建立索引const search async () { new Notice( Ava Links - Searching for selection); const msg window.getSelection().toString(); const results await app.plugins.plugins.ava.search(msg); return msg \n\n results.similarities.map((r) - [[${r.path}]]).join(\n); } module.exports search;search返回的similarities数组中每一项都包含笔记路径path和相似度分数score你可以自由决定如何展示比如转成[[双向链接]]。示例三用 complete 生成 Wikipedia 链接complete是最通用的方法配合精心构造的 prompt 可以实现各种玩法比如生成相似主题的 Wikipedia 链接、把选中文字转为 LaTeX 公式等const wikipedia async (title, text) { const prompt Title: title \n text \nWikipedia links of similar topics:\n- https://; const completion await app.plugins.plugins.ava.complete(prompt, {stream: false}); return \n\nSimilar topics Wikipedia URLs:\n\n- ${completion}; } module.exports wikipedia;在自定义Obsidian插件中集成obsidian-ava API进阶方案如果你正在开发自己的 Obsidian 插件集成方式同样简单通过app.plugins.plugins.ava拿到插件实例后直接调用即可。// 在 onLayoutReady 之后调用确保 obsidian-ava 已完成初始化 const ava app.plugins.plugins.ava; // 生成图片 const { imagePaths } await ava.createImage({ prompt: a white horse in a field, outputDir: app.vault.adapter.basePath /attachments, }); editor.replaceSelection(![[${imagePaths[0].split(/).pop()}]]); // 语义搜索 const { similarities } await ava.search(Henry VIII horses); console.log(similarities.map((s) s.path)); // 流式补全监听 SSE 的 message 与 error 事件 const source await ava.complete(The white horse of Henry VIII is, { stream: true, temperature: 0.7, }); source.addEventListener(message, (e) { const payload JSON.parse(e.data); editor.replaceSelection(payload.choices[0].text); }); source.addEventListener(error, onError); source.stream();几点开发提示调用时机务必在插件加载完成后再访问app.plugins.plugins.ava例如放到onLayoutReady回调里否则可能拿到 undefined流式输出complete的stream: true走 SSE 通道事件源定义在 lib/sse.js事件名为message和error文件写入createImage使用 Node 的fs写入图片因此图片生成功能主要面向桌面端。obsidian-ava集成常见问题与排错指南search 返回空结果先检查是否在设置中启用了 Links并手动运行一次 Load vault 命令建立索引报错需要登录部分接口要求先登录获取 token确认设置页里 API Key / token 已正确填写笔记太长被拒语义链接对单篇笔记有 25,000 字符限制见 src/utils.ts 的EMBED_CHAR_LIMIT改写功能限制为 5,800 字符超长请先拆分笔记拿不到插件实例确认 obsidian-ava 已启用且已加载完成必要时打印Object.keys(app.plugins.plugins)检查。结语把 obsidian-ava 当作 API 库来集成是扩展 Obsidian AI 能力的最短路径你不需要重新对接 OpenAI也不用自己维护索引和鉴权只要调用几个公开方法就能在自己的插件或模板里拥有文本生成、语义搜索、文生图等一整套 AI 能力。从今天开始试着用app.plugins.plugins.ava写一个属于你自己的 AI 工作流吧【免费下载链接】obsidian-avaQuickly format your notes with ChatGPT in Obsidian项目地址: https://gitcode.com/gh_mirrors/ob/obsidian-ava创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考