给 obsidian 写个 AI 生成标签的插件

AI Tags Generator

:sparkles: 主要特性

  • :robot: 支持多个主流 AI 服务商

    • OpenAI (GPT-4o-mini, GPT-4o, GPT-3.5-turbo)
    • Gemini (Gemini-1.5-flash, Gemini-2.0-flash)
    • DeepSeek - 深度求索 (deepseek-chat, deepseek-coder)
    • DeepSeek - 火山引擎
    • Claude (测试中)
  • :wrench: 灵活的配置选项

    • 支持自定义 API 接口地址
    • 支持自定义模型选择
    • 兼容 OneAPI 等中转服务
  • :bullseye: 智能标签生成

    • 基于文档内容智能推荐标签
    • 支持手动编辑和筛选推荐标签
    • 自动更新文档的 frontmatter

:rocket: 安装方法

方法一:插件商店安装(推荐)

  1. 打开 Obsidian 设置
  2. 进入第三方插件页面
  3. 在插件市场中搜索 “AI Tags Generator”
  4. 点击安装
  5. 启用插件

注:插件已提交至官方商店审核,正在等待通过。

方法二:手动安装

  1. GitHub Releases 页面下载最新版本的以下文件:
    • main.js
    • manifest.json
    • styles.css
  2. 在你的 Obsidian 库的 .obsidian/plugins/ 目录下创建 obsidian-ai-tags 文件夹
  3. 将下载的文件放入 obsidian-ai-tags 文件夹中
  4. 重启 Obsidian
  5. 在设置 > 第三方插件中启用 AI Tags Generator

:gear: 配置说明

  1. 在 Obsidian 设置面板中找到 “AI Tags Generator” 设置项
  2. 选择你想使用的 AI 服务商
  3. 配置对应服务商的设置:
    • API 密钥
    • API 接口地址(可选,默认使用官方接口)
    • 选择要使用的模型

API 配置示例

OpenAI 配置

Gemini 配置

:memo: 使用方法

  1. 打开任意 Markdown 文档
  2. 点击左侧边栏的标签图标按钮
  3. 插件会自动分析文档内容并生成推荐标签
  4. 在弹出的标签选择框中,你可以:
    • 勾选/取消勾选推荐的标签
    • 编辑标签内容
    • 点击确认将选中的标签添加到文档中

:framed_picture: 功能展示



:red_question_mark: 常见问题

Q: 为什么标签生成失败?
A: 请检查:

  1. API 密钥是否正确配置
  2. 网络连接是否正常
  3. API 余额是否充足

Q: 如何使用第三方 API 代理?
A: 在设置中修改 API 地址为你的代理服务地址即可,格式需与原始 API 格式保持一致。

:page_facing_up: 开源协议

本项目采用 MIT 协议开源,欢迎贡献代码或提出建议。

:folded_hands: 鸣谢

感谢所有为本项目提供反馈和建议的用户。

18 个赞

太强了!

佬友强:+1:

好先mark一下 :grinning:

太强了!!

佬。之前不是有一个ds的插件也是标签,我看到论坛有人推的。。这也是你的?

1 个赞

ds 的插件 啥东西

1 个赞

佬,这个标签可以自定义候选集合吗?起到ai自动分类的功能

1 个赞

你的意思是说只把笔记打上已有标签吗,这个可以融合进去


目前obsidian应该不支持这种分类的做法

2 个赞

嗯是的,已有的也挺好。
生成新的也很有用,可以标注区分一下。
标签自己就是一个分类,能筛选就行。

1 个赞

明天加上优先选择已有标签的功能

我自己用的还是比较多的,这个插件

1 个赞

感谢佬,用的上,晚点试试

1 个赞

感谢你的分享

1 个赞

谢谢佬友,请问插件是将文档所以内容都传给大模型么,文档超长的时候会不会出错

主要是看模型的上下文长度限制,一般的笔记都不会超叭

我本地很多笔记3w字起步,仓鼠档看到好的就会摘录进去

不过我这种情况应该不多

那推荐用 deepseek v3 模型,64k 上下文,能支持 10w 左右

对中文语料处理也好

好嘞 谢谢佬友

你这玩意的gemini用个代理就用不了了,希望你可以把bug修一下再发

  getFullApiUrl(provider) {
    if (provider === "gemini") {
      return `${this.config.apiUrl}${this.config.model}:generateContent?key=${this.config.apiKey}`;
    }
    return this.config.apiUrl;
  }

用代理不配帮忙拼接URL吗