Smart journal paper tracker — RSS subscription, AI literature analysis, workflow progress, email reports.
- RSS 订阅 — 添加多个学术期刊 RSS 源,自动每日抓取新论文
- 订阅源批量管理 — 支持全部刷新和批量删除订阅源
- 关键词匹配 — 设置研究关键词,支持批量添加,AI 自动分析论文标题和摘要相关性
- AI 文献汇总分析 — 支持 OpenAI / DeepSeek 等兼容 API,输出相关性评分、匹配主题词和中文摘要
- 分析结果页 — 独立查看论文标题、摘要、作者、期刊、原文链接、AI 评分和分析总结
- 阅读队列 — 手工保存外部论文/文章,AI 分析结果可直接加入阅读队列
- 工作流进度 — 抓取、分析、邮件、WebDAV 备份都有执行记录、节点日志和进度条
- 分析任务控制 — 长时间 AI 分析支持暂停、继续、取消;抓取并分析时总数按本次新抓取论文计算
- 界面偏好 — 支持中英语言切换、深色模式和白天模式,偏好保存在当前浏览器
- 北京时间定时任务 — 每日自动工作流可设置为北京时间的具体几点几分,后端按
Asia/Shanghai调度 - 邮件推送 — 高相关性论文每日自动推送到邮箱,支持 SMTP SSL/STARTTLS,邮件正文包含摘要
- WebDAV 同步 — 订阅源、关键词、论文和 AI 分析结果可备份到坚果云等 WebDAV 服务
- 论文分类 — 按期刊、关键词、相关性分值筛选
- 链接清洗 — 自动移除 ScienceDirect
dgcid、utm_*等 RSS 跟踪参数,保留干净原文链接 - Web UI — 仪表盘、订阅管理、论文浏览、关键词管理、设置
- Zotero 插件原型 —
zotero-plugin/可将 Zotero 9 选中条目发送到 PaperPulse 后端分析,并写回标签/笔记
git clone https://github.com/noaul/PaperPulse.git
cd PaperPulse
docker compose up -d
# 访问 http://localhost:18095默认端口只绑定本机:127.0.0.1:18095 -> 8000。如需外网访问,请在反向代理中转发到 127.0.0.1:18095。
常用命令:
docker compose ps
docker compose logs -f
docker compose up -d --build数据默认保存在 ./data/paperpulse.db,升级镜像不会删除历史论文和 AI 分析结果。不要在升级时删除项目根目录的 data 文件夹;如配置了 WebDAV,备份文件也会包含论文和分析结果。
# 后端
cd backend
pip install -r requirements.txt
uvicorn app.main:app --reload
# 前端
cd frontend
npm install
npm run dev在 Web UI 的设置页面配置:
- AI 配置 — 填入 API 地址、Key、模型名(如 DeepSeek:
https://api.deepseek.com/v1) - 邮件配置 — SMTP 服务器信息
- WebDAV 配置 — WebDAV 地址和凭证
- 定时任务 — 设置每日按北京时间执行的具体时间
- 添加 RSS 订阅源(如 Nature:
https://www.nature.com/nature.rss) - 添加研究关键词(如 "nickel alloy", "superalloy", "高温合金"),可在关键词页批量粘贴
- 点击「一键抓取并分析」或等待每日自动执行
- 在仪表盘查看执行进度、已分析数量、总数、主题词相关数量
- 如分析耗时较长,可暂停、继续或取消
- 在「分析结果」页面查看 AI 分析详情、原文链接,并可直接加入阅读队列
- 在「阅读队列」中保存需要稍后阅读的外部论文或文章
- 配置邮件后自动推送每日报告
主要接口:
POST /api/analysis/run-background— 后台运行最新抓取批次中尚未分析论文的汇总分析POST /api/analysis/fetch-and-analyze-background— 后台抓取并分析,本次进度总数等于新抓取论文数POST /api/analysis/{id}/add-to-reading-queue— 将某条 AI 分析结果加入阅读队列POST /api/zotero/analyze— Zotero 插件调用的分析入口,返回评分、标签和笔记 HTMLPOST /api/feeds/fetch-all— 刷新全部启用的订阅源,并记录最新抓取批次POST /api/feeds/bulk-delete— 批量删除订阅源POST /api/keywords/bulk— 批量添加关键词,支持换行、逗号、分号分隔GET /api/executions— 查看最近工作流执行记录GET /api/executions/{id}— 查看执行详情和节点日志POST /api/executions/{id}/pause— 暂停分析POST /api/executions/{id}/resume— 继续分析POST /api/executions/{id}/cancel— 取消分析GET /api/reading-queue— 阅读队列列表,支持search、status、tag、分页POST /api/reading-queue— 添加阅读队列条目PUT /api/reading-queue/{id}— 更新条目或切换待读/已读DELETE /api/reading-queue/{id}— 删除条目
说明:暂停/取消采用协作式控制,当前正在请求中的单篇 AI 分析会先完成,然后再暂停或取消后续论文。
插件原型位于 zotero-plugin/,目标为 Zotero 9。它通过 Tools -> PaperPulse: Analyze Selected Items 读取 Zotero 当前选中的常规条目,调用 PaperPulse 后端 /api/zotero/analyze,再将 PaperPulse:* 标签和 AI 分析笔记写回 Zotero。
构建:
cd zotero-plugin
powershell -ExecutionPolicy Bypass -File .\scripts\build-xpi.ps1输出文件:zotero-plugin/dist/paperpulse-zotero-analyzer.xpi。
- RSS Subscriptions — Add multiple journal RSS feeds, auto-fetch daily
- Feed Bulk Management — Refresh all enabled feeds and delete feeds in bulk
- Keyword Matching — Set research keywords, bulk-add keywords, and let AI analyze title and abstract relevance
- AI Literature Analysis — Supports OpenAI / DeepSeek compatible APIs with scores, matched keywords, and Chinese summaries
- Analysis Results Page — Review paper titles, abstracts, authors, journals, source links, AI scores, and summaries
- Reading Queue — Save external papers or AI analysis results with tags, search, unread/read status, and notes
- Observable Workflows — Fetch, analyze, email, and WebDAV backup steps are persisted with execution logs and progress
- Analysis Controls — Long-running AI analysis can be paused, resumed, or cancelled
- Interface Preferences — Switch Chinese/English copy plus dark mode and day mode, persisted in the browser
- Beijing-Time Scheduling — Configure the exact daily run time in
Asia/Shanghai - Email Push — Daily auto-push of highly relevant papers with abstract content; supports SMTP SSL/STARTTLS
- WebDAV Sync — Backup feeds, keywords, papers, and AI analysis results to WebDAV services
- Paper Classification — Filter by journal, keyword, relevance score
- Clean Source Links — Removes RSS tracking parameters such as ScienceDirect
dgcidandutm_* - Web UI — Dashboard, feed management, paper browser, keyword management, settings
- Zotero Plugin Prototype —
zotero-plugin/sends selected Zotero 9 items to PaperPulse and writes tags/notes back
git clone https://github.com/noaul/PaperPulse.git
cd PaperPulse
docker compose up -d
# Open http://localhost:18095The default compose file binds only to localhost: 127.0.0.1:18095 -> 8000. Use a reverse proxy for public access.
Useful commands:
docker compose ps
docker compose logs -f
docker compose up -d --buildApplication data is stored in ./data/paperpulse.db; image rebuilds do not remove papers or AI analysis results. Do not delete the project data directory during upgrades. WebDAV backups include papers and AI analysis results when configured.
- Add RSS feeds (e.g., Nature:
https://www.nature.com/nature.rss) - Add keywords, including bulk paste input (e.g., "nickel alloy", "superalloy", "precipitation hardening")
- Click "Fetch & Analyze" or wait for daily auto-run
- Track progress on the dashboard: analyzed count, total count, and keyword-related count
- Pause, resume, or cancel long-running analysis jobs when needed
- Review detailed AI results on the Analysis page and add important results to the Reading Queue
- Save external papers or articles to the Reading Queue for later
- Configure email for automatic daily reports
POST /api/analysis/run-background— Run background analysis for unanalyzed papers from the latest fetch batchPOST /api/analysis/fetch-and-analyze-background— Fetch and analyze in the background; total count equals newly fetched papersPOST /api/analysis/{id}/add-to-reading-queue— Add an AI analysis result to the Reading QueuePOST /api/zotero/analyze— Analysis endpoint used by the Zotero pluginPOST /api/feeds/fetch-all— Refresh all enabled feeds and persist the latest fetch batchPOST /api/feeds/bulk-delete— Delete feeds in bulkPOST /api/keywords/bulk— Bulk-add keywords separated by newlines, commas, or semicolonsGET /api/executions— List workflow executionsGET /api/executions/{id}— Get execution detail and node logsPOST /api/executions/{id}/pause— Pause analysisPOST /api/executions/{id}/resume— Resume analysisPOST /api/executions/{id}/cancel— Cancel analysisGET /api/reading-queue— List reading queue items withsearch,status,tag, and paginationPOST /api/reading-queue— Create a reading queue itemPUT /api/reading-queue/{id}— Update an item or toggle unread/read statusDELETE /api/reading-queue/{id}— Delete an item
MIT