一个面向本地论文库的轻量阅读器,支持 PDF / Word 文档管理、浏览器内阅读、Prompt 批量分析、离线阅读包导出、外部论文来源归档,以及后台任务处理。
- 本地论文库:自动扫描
PDF / .doc / .docx - 左侧紧凑论文列表,右侧大阅读区
- PDF 在线阅读、
.docx文本预览、.doc原文件打开 - Prompt 管理:可配置多个 Prompt,结果落盘为本地 Markdown
- 后台任务队列:自动处理新论文,也可批量补跑历史论文
- 离线阅读包:导出原论文 + Markdown + 本地 HTML 阅读器
- DONE 流程:已读论文可移入
DONE/ - Sources 页面:浏览外部抓取的论文归档,支持按天打包下载或一键导入主阅读器
- Insights 页面:基于已有“核心解读”生成历史脉络,并用时间线方式可视化
- 登录保护:进入阅读器前需要用户名和密码
- Host:
0.0.0.0 - Port:
8022
docs/papers/
这个目录中的文件会被自动扫描;你手动放进去的 PDF / Word 文件也会被识别。
- 用户名:
nolan - 密码:
kujyoai
安全限制:
- 连续输错密码 3 次后,会锁定 5 分钟
如果项目根目录存在 .env,系统会优先读取其中的登录配置;一旦配置了 .env,默认用户名和密码将不再生效。
可配置项:
PAPER_READER_LOGIN_USERNAMEPAPER_READER_LOGIN_PASSWORD
示例:
PAPER_READER_LOGIN_USERNAME=nolan
PAPER_READER_LOGIN_PASSWORD=replace-with-your-own-password说明:
.env已被.gitignore忽略,不会默认提交到 Git- 建议在部署后立即用你自己的密码覆盖默认密码
- 不要把你自己的真实密码写进 README 或提交到 GitHub
建议使用 Python 3.11+。
python3 -m venv .venv.venv/bin/pip install -r requirements.txt.venv/bin/python run.py如果你希望使用自定义登录信息,建议先在项目根目录创建 .env:
cat > .env <<'EOF'
PAPER_READER_LOGIN_USERNAME=nolan
PAPER_READER_LOGIN_PASSWORD=replace-with-your-own-password
EOF启动后访问:
- 本机:
http://127.0.0.1:8022 - 局域网其他机器:
http://<你的机器IP>:8022
如果你希望服务在后台持续运行,推荐用 tmux:
tmux new-session -d -s paper-reader 'cd /path/to/paper-reader && .venv/bin/python run.py'查看状态:
tmux attach -t paper-reader停止服务:
tmux kill-session -t paper-readerpaper-reader/
├── run.py
├── paper-reader-source/ # 外部来源抓取子项目
├── requirements.txt
├── src/paper_reader/
│ ├── app.py
│ ├── task_queue.py
│ ├── ai_summary.py
│ ├── prompt_manager.py
│ ├── offline_package.py
│ ├── source_archive.py
│ ├── static/
│ └── templates/
├── tests/
└── docs/papers/ # 本地论文库(默认)
支持格式:
.pdf.doc.docx
说明:
.pdf:浏览器内联阅读.docx:会提取文本并做浏览器预览.doc:通常不直接内联渲染,但仍可索引并打开原文件
“历史论文批量补跑”面板默认只显示 不在 DONE/ 文件夹里的论文。
如果你希望把已完成论文也纳入批量列表,可以在该面板中勾选:
批量列表包含 DONE 文件夹里的论文
这样就会把 DONE/ 下符合当前筛选条件的论文也一起显示出来。
系统现在支持一个独立的 Sources 页面,用来浏览外部归档的论文来源数据。
当前已接入:
- Hugging Face Daily Papers
在主阅读器底部工具区可以进入 Sources 页面。这个页面支持:
- 按年 / 月 / 日浏览抓取归档
- 查看每天保存下来的论文列表
- 打包下载某一天选中的 PDF
- 把选中的论文直接导入主阅读器
导入后的目标目录默认是:
Sources/HuggingFace/YYYY/MM/DD/
如果阅读器里启用了自动 Prompt,那么从 Sources 导入的论文也会自动进入后台任务队列。
默认会从下面这个目录读取外部归档数据:
paper-reader-source/data/huggingface_daily/
这个目录里的数据不会提交到 GitHub。
仓库里包含一个单独的子项目:
paper-reader-source/
它负责:
- 抓取 Hugging Face Daily Papers
- 按天保存 manifest
- 下载对应 PDF 到本地归档目录
直接运行一次采集:
PYTHONPATH=paper-reader-source python3 -m paper_reader_source.service \
--data-dir paper-reader-source/data/huggingface_daily \
--run-on-start --once长期运行定时服务:
PYTHONPATH=paper-reader-source python3 -m paper_reader_source.service \
--data-dir paper-reader-source/data/huggingface_daily或者直接用仓库里自带的脚本:
paper-reader-source/scripts/run_huggingface_daily_service.sh当前调度规则:
- 时区:
Asia/Shanghai - 每天执行时间:
18:30 - 默认保留
upvotes >= 5的论文
系统现在支持一个独立的 Insights 页面,当前先聚焦 AutoResearch 的第一步:
- 历史上的研究脉络
- 哪些论文是奠基点 / 转折点 / 主流化节点
- 这个方向为什么出现,以及为什么后来会切换路线
- 最近 30 / 60 / 90 天里哪些 topic / method / benchmark 正在升温
- 接下来哪些方向值得做:未解问题、薄弱 claim、拥挤方向、高回报低密度方向、跨领域迁移空白
这个页面会:
- 读取你已经生成好的
核心解读 - 从已有论文库里筛出主题主线
- 在后台生成一版历史脉络数据,并持续把进度写回磁盘
- 在后台生成一版
Momentum Radar,梳理最近 30 / 60 / 90 天的研究热区 - 在后台生成一版
Opportunity Map,产出更接近 next-bet memo 的研究机会判断 - 用时间线 / 阶段卡片 / 年度热度条做可视化
- 用 trend radar / momentum dashboard 的形式展示最近的增长主题、被 follow 的方法路线、benchmark 焦点和边缘信号
- 用 opportunity map / research gap report 的形式展示哪些方向值得继续下注
- 在页面上显示当前进度,支持
停止/继续 - 即使浏览器关闭、刷新,或者 Web 服务重启,重新进入后也能看到最新状态并继续任务
当前入口:
- 主阅读器顶部导航
- 主阅读器底部工具区
Sources页面顶部
如果你经常直接在文件系统里操作论文目录,比如:
- 手动复制 PDF 进去
- 在系统文件管理器里重命名文件
- 删除某些论文
可以在页面的“文件管理”区域点击:
快速扫描 Paper 文件夹
这个功能的设计目标是:
- 只做文件扫描和目录更新
- 不自动运行任何 Prompt
- 不调用任何 AI 模型
- 不做重型、耗时的解析
也就是说,它更适合在你手动改动了论文目录之后,快速让网页里的论文列表同步更新。
可以导出一个 zip 包,里面包含:
- 原始 PDF / Word 文件
- 已生成的 Markdown 结果
- 一个可离线打开的
index.html
解压后,直接双击 index.html 即可离线阅读。
运行测试:
.venv/bin/python -m unittest tests.test_app- 本地论文库
docs/papers/默认不会提交到 Git - 日志目录
logs/默认不会提交到 Git - 运行过程中生成的本地状态文件也已加入
.gitignore