josesiqueira/zotero-watch-folder

GitHub: josesiqueira/zotero-watch-folder

Zotero 8 插件,自动监控文件夹并智能导入文献、同步集合,解决手动整理效率低与重复录入问题。

Stars: 2 | Forks: 1

# zotero-watch-folder-zotero8 一个功能强大的 Zotero 8 插件,能够自动监控文件夹中的新文件,并使用元数据检索、智能整理和集合同步功能将其导入到您的 Zotero 库中。 ## 功能 ### 阶段一:自动导入 - **监视文件夹监控** - 自动检测指定文件夹中的新 PDF 文件 - **自动元数据检索** - 为导入的 PDF 从在线来源获取元数据 - **智能文件重命名** - 根据元数据使用可定制模式重命名文件(例如:`{firstCreator} - {year} - {title}`) - **首次运行检测** - 配置时选择是否导入现有文件 - **导入后操作** - 选择导入后保留、删除或移动文件 - **文件类型过滤** - 配置要监控的文件类型(PDF、EPUB 等) ### 阶段二:集合同步 - **双向镜像** - 同步 Zotero 集合与磁盘上的文件夹结构 - **项目移动跟踪** - 在集合之间移动项目会更新文件夹结构 - **文件夹到集合同步** - 在磁盘上创建文件夹会创建对应的集合 - **冲突解决** - 处理同步冲突的多种策略(Zotero 优先、磁盘优先、最新优先、保留两者) ### 阶段三:高级功能 - **智能规则引擎** - 根据以下条件自动分类导入: - 标题、作者、DOI、出版物、标签、文件名等 - 操作:添加到集合、添加标签、设置字段、跳过导入 - 支持嵌套集合路径(例如:"Research/AI/Papers") - **重复项检测** - 使用以下方法防止重复导入: - DOI 匹配(100% 置信度) - ISBN 匹配(100% 置信度) - 模糊标题匹配(可配置阈值) - 内容哈希匹配(可选) - **批量操作** - 库维护的批量操作: - 使用当前命名模式重新组织所有文件 - 重试失败项目的元数据 - 将智能规则应用于现有库项目 ## 系统要求 - Zotero 8.0 或更高版本 - Windows、macOS 或 Linux ## 安装 1. 从 [发布页面](../../releases) 下载最新的 `.xpi` 文件 2. 在 Zotero 中,依次点击 `工具` → `附加组件` 3. 点击齿轮图标,选择 `从文件安装附加组件...` 4. 选择下载的 `.xpi` 文件 5. 重新启动 Zotero ## 配置 安装完成后,在 `编辑` → `设置` → `监视文件夹` 中配置插件: ### 基本设置 - **启用监视文件夹** - 开启/关闭监控 - **源文件夹** - 要监控新文件的文件夹 - **目标集合** - 放置导入项目的位置(默认:"收件箱") - **轮询间隔** - 检查新文件的频率(秒) - **文件类型** - 要监控的扩展名列表(逗号分隔) ### 导入选项 - **导入模式** - 在 Zotero 中存储文件或链接到原始位置 - **导入后操作** - 导入后对源文件执行的操作 - **自动检索元数据** - 自动为 PDF 获取元数据 ### 文件命名 - **自动重命名** - 元数据检索后重命名文件 - **重命名模式** - 新文件名的模板 - 可用变量:`{firstCreator}`、`{creators}`、`{year}`、`{title}`、`{shortTitle}`、`{DOI}`、`{itemType}`、`{publicationTitle}` - **最大文件名长度** - 截断过长的文件名 ### 重复项检测 - **启用重复检查** - 导入前检查重复项 - **按 DOI/ISBN/标题匹配** - 配置检测方法 - **标题相似度阈值** - 用于模糊标题匹配(0.0-1.0) ## 从源代码构建 ``` # 克隆仓库 git clone https://github.com/josesiqueira/zotero-watch-folder-zotero8.git cd zotero-watch-folder-zotero8 # 安装依赖 npm install # 构建插件 npm run build # 打包为 XPI npm run package # 构建 + 打包 + 上传 XPI 到匹配的 GitHub 发布标签 npm run release ``` XPI 文件将在项目根目录中创建。 ## 项目结构 ``` zotero-watch-folder-zotero8/ ├── manifest.json # Plugin manifest for Zotero 8 ├── bootstrap.js # Plugin lifecycle (startup/shutdown) ├── prefs.js # Default preference values ├── content/ │ ├── watchFolder.mjs # Main orchestration service │ ├── fileScanner.mjs # Folder scanning logic │ ├── fileImporter.mjs # Zotero import integration │ ├── trackingStore.mjs # Import history tracking │ ├── metadataRetriever.mjs # PDF metadata fetching │ ├── fileRenamer.mjs # Template-based renaming │ ├── firstRunHandler.mjs # Initial setup wizard │ ├── collectionSync.mjs # Collection sync coordinator │ ├── collectionWatcher.mjs # Zotero collection observer │ ├── folderWatcher.mjs # Disk folder observer │ ├── pathMapper.mjs # Path ↔ collection mapping │ ├── syncState.mjs # Sync state persistence │ ├── conflictResolver.mjs # Sync conflict handling │ ├── smartRules.mjs # Rules engine │ ├── duplicateDetector.mjs # Duplicate detection │ ├── bulkOperations.mjs # Mass operations │ ├── utils.mjs # Shared utilities │ ├── preferences.xhtml # Settings UI │ └── preferences.js # Settings logic ├── locale/ │ └── en-US/ │ └── zotero-watch-folder.ftl # Localization strings └── build/ ├── build.mjs # Build script └── package.mjs # XPI packaging script ``` ## 技术细节 本插件为 Zotero 8 构建,使用现代 Web 技术: - **ES Modules**(`.mjs`) - 无遗留的 `.jsm` 文件 - **原生 async/await** - 无 Bluebird 承诺 - **IOUtils/PathUtils** - 现代 Mozilla 文件 API - **Fluent Localization** - 用于 i18n 的 `.ftl` 文件 ## 许可证 MIT 许可证 - 详见 [许可证文件](LICENSE) ## 贡献 欢迎贡献!请随时提交问题和拉取请求。 ## 致谢 - 为 [Zotero](https://www.zotero.org/) 构建 - 用于收集、整理和引用研究的免费易用工具
标签:EPUB导入, PDF导入, SEO, Tactics, Zotero, 云计算, 元数据检索, 元数据管理, 冲突解决, 去重, 双向同步, 学术工具, 批量操作, 技术栈, 插件, 数据可视化, 文件夹监控, 文件监控, 文献管理, 智能重命名, 研究工具, 自动化导入, 自定义脚本, 规则引擎, 集合同步