Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

251 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

鹅的书签插件

概述

  • 参考 Notion的极简风格,基于 Vue 3 + Vite + UnoCSS + Pinia + Naive UI(Image 组件)实现。
  • 支持深浅色、二级分组、搜索、高可用的图标匹配与持久化(依赖本机网络)。
  • 默认字体使用 DM Sans,UnoCSS reset 保证一致的基础样式。

授权

本项目为闭源专有软件,未授予公开使用、复制、修改或分发源码的许可。详情见 LICENSE。项目使用的第三方组件仍分别遵循其各自许可证。

图标持久化策略

  • 首选本地文件缓存:图标抓取后写入 utools.getPath('userData')/bookmarks-icons,Pinia 仅存文件路径 + hash。
  • 域级冷却 24h:同一域名 24h 内不重复抓取,除非图标缺失或用户批量补全缺失图标。
  • 书签编辑:修改 URL 时,如该书签当前无图标则触发重新获取;已有图标则不重拉。
  • 批量补全:设置页提供“匹配缺失图标”操作,使用本机网络批量抓取缺失项。
  • 回退:抓取失败或文件缺失时回退到文字首字母图标,不阻塞加载。
  • 导出:默认导出引用(路径 + 元数据),必要时再扩展 base64 内联导出。

功能规划

  • 书签:创建/编辑/删除,二级分组管理,搜索(标题/描述/标签/URL),置顶。
  • 图标:本机网络抓取站点图标;缓存到本地文件;缺失补全;文字回退。
  • 设置:无效地址检测(本机 HEAD/GET)、缓存清理、缺失图标批量匹配、数据导入导出(JSON/HTML/网址精灵 data.json)。
  • 体验:卡片布局展示图标+标题+描述+域名,hover 快捷操作;键盘导航与高亮搜索词(迭代)。

快捷键

  • Ctrl + 数字 (1-9, 0):按住 Ctrl 键会在前 10 个书签上显示数字提示,按下对应数字可快速打开该书签。

模板书签(快捷搜索)

支持在书签 URL 中使用 {占位符} 语法创建快捷搜索书签,自动注册到 uTools 主搜索。

使用方式:

  1. 创建书签时,URL 填入带占位符的地址,例如:

    • Google:https://www.google.com/search?q={query} - 百度:https://www.baidu.com/s?wd={关键词} - GitHub:https://github.com/search?q={repo}
  2. 唤出 uTools → 输入书签标题 → 按 Tab 进入参数输入 → 输入搜索词 → Enter 打开

已实现亮点

  • 新建书签弹窗:可选分组/二级分组,支持临时创建分组/二级;未选二级时自动落在“未分组”。
  • 默认仅提供一级分组(含默认“未分组”子分类),用户按需扩展。
  • 设置入口已包含:缺失图标一键补全、无效地址检测。

运行与开发

  • 安装依赖:pnpm install
  • 开发:pnpm dev(无需额外执行时勿重复)
  • 构建:pnpm build
  • UnoCSS 已启用,避免额外手写样式文件;主题通过 CSS 变量驱动。
  • uTools 调试:插件中心 -> 开发者工具 -> 选择本目录;控制台在右上角“查看控制台”打开。

当前实现

  • Vite+Vue3+Pinia+UnoCSS+Naive UI 骨架,DM Sans 全局字体。
  • 书签二级分组、搜索、快速添加、卡片展示(图标/标题/描述/域名)。
  • 图标服务:本机网络抓取并写入 userData/bookmarks-icons,24h 冷却;缺失图标可在设置页一键补全;编辑 URL 时若无图标会自动尝试获取。
  • 设置页:缺失图标批量匹配、无效地址探测(HEAD 请求,3s 超时)、多来源导入(JSON/HTML/网址精灵 data.json)。

MCP(uTools 原生工具)

本插件采用 uTools 当前提供的 MCP 工具契约,而不是另起一个无法被 uTools 调用的 HTTP/stdio 服务:plugin.json 负责声明 JSON Schema,preload 使用 utools.registerTool 注册,再经受限的事件桥接访问 React/Pinia 中的本地书签数据。

  • 新增 get_mcp_capabilities:返回协议、传输方式、完整工具清单和写入安全提示,供 MCP 客户端先发现能力。
  • 可读取分组树、分页列出/搜索/读取书签,也可打开书签;支持分组、子分组、书签和归属位置管理。
  • 参数在 preload 侧会再次限制为 JSON 兼容的有限深度/大小,并过滤原型污染字段;具体字段仍以 plugin.jsoninputSchema 为准。
  • MCP 写入工具会修改本机书签数据。调用方应先取得用户确认。

开发验收:bun run test:mcp 校验声明、注册表及一次 preload → 渲染层请求/响应往返;bun run build 校验插件构建。

目录预期

  • src/ 应用入口与视图组件
  • src/stores/ 书签与偏好状态
  • src/services/ 图标缓存、网络请求、无效检测
  • plugin.json uTools 插件清单
  • utools-bookmarks-spec.md 需求规格

后续迭代提示

  • 书签列表虚拟化以支撑 1000+ 规模。
  • 导出时可选 base64 内联以便跨设备迁移。
  • 允许从 UnoCSS 图标集手动选图标作为替代。

About

鹅的书签 — 极简风格书签管理器,支持二级分组、AI 补全、多形态打包

Resources

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages