LLM 调用
用于"论文分析"页面调用大模型生成中文摘要 / TLDR / 笔记。 填好之后点 测试连接 验证 key 和 model 是否可用。
/v1 结尾)。
arXiv 搜索类目
勾选后,"论文分析"页面的 arXiv 搜索结果只会来自这些类目(arXiv cat: 字段)。
默认勾选 cs 主流 6 类,覆盖 AI / NLP / CV / RL / IR 等方向。
GitHub 同步
同一个 PAT 同时用于 (1) 同步配置到 secret Gist — 后台 daily pipeline 拉这个 Gist 覆盖仓库 config.yaml;
(2) 保存论文到 GitHub — 在论文分析页点"📤 保存到 GitHub"会触发 save-paper.yml workflow。
没用 Gist / 没用论文保存功能可以跳过。
gist + repo;
fine-grained PAT:勾 Gists: Read and write + Actions: Read and write(或 Contents: Read and write 走 Contents API)。
Token 只存在浏览器,不上传。
📚 我的图书馆 — 跨设备同步
星标 / 阅读状态 / 笔记 / 回收站 用一个独立的 secret gist 同步,文件名
dpr-library.json。和上面的配置 gist 分开存,避免被 CI 误读。
首次点同步会自动创建 gist,把 library gist id 写到这里,无痕窗口粘上
同一 id 后点「拉取」就能从另一台设备恢复。
📦 导出我的图书馆
把当前星标 + 笔记打包成文献管理格式,全部在浏览器完成,纯前端。 包括 BibTeX (Zotero/Mendeley 通用)、CSL-JSON (Papers 3 等) 和 Obsidian ZIP (笔记 frontmatter + 自动归档布局)。
➕ 新增文献库(生成代码)
填好下表 → 复制生成的 TypeScript object 粘到
astro-src/lib/libraries.ts 里的 LIBRARIES 数组,
提交 + push 触发 Cloudflare Pages rebuild。
成员关系由 frontmatter 标签派生(选 task / method / type / venue
哪个 dim 的哪个 label 集)。
GitHub 保存论文 — 仓库配置
上面那个 GitHub PAT 同时也用来触发 save-paper.yml workflow。
这里只需要确认 owner / repo / workflow 文件名,默认值就是当前仓库,一般不用改。
.github/workflows/ 下的 workflow 文件名(不含路径)。
默认 save-paper.yml。
论文分析 — 自动同步
开启后,在论文分析页跑完一篇 arXiv 论文会自动把笔记(中文摘要 / TLDR /
动机·方法·结果·结论)推到 docs/papers/<id>-<slug>.md,
Vercel 重新部署后,首页日历 / 论文库 / 主题分类里就能看到。
关闭时,笔记只存本机 localStorage(原"📤 保存到 GitHub"按钮仍然可以手动点)。
repo /
Actions: write 权限);没配 PAT 时自动跳过,只显示提示 toast。
长文精读 (Deep Dive)
基于论文 PDF 全文的中文深度解读。完整 PDF 文本量可达 MB 级,部分 LLM provider 前面挂的
CDN/WAF(典型表现: Invalid page request. 错误)对请求体有大小限制。
这里控制 PDF 读取上限,超阈值会按 chunk 自动切段串行调用 LLM 再拼合。
搜集主题
影响后台 daily pipeline 抓哪些论文。每行一个 tag: 中文说明。
默认主题来自仓库内置 config.yaml,这里可以覆盖。
改动只存在浏览器,下次"同步配置到 Gist"会带上这一段。
arXiv CORS 代理
浏览器拉 arXiv 一定会被 CORS 拦,需要代理转发。
默认走站点自带的反代(https://daily-paper-reader.pages.dev/api/proxy),公共代理(corsproxy.io /
allorigins / thingproxy)经常挂。
留空走默认;自部署一个 Cloudflare Worker 永远稳定。
3 分钟自部署 Cloudflare Worker(永久稳定)
- 去 Cloudflare Workers 创建 Worker(免费)。
- 把下面这段代码整段粘进去,点 Deploy:
export default { async fetch(req) { const u = new URL(req.url); let target = u.pathname.replace(/^\/proxy\/?/, ''); if (!target) target = u.searchParams.get('url'); if (!/^https?:\/\//i.test(target)) return new Response('missing url', { status: 400 }); const r = await fetch(target, { headers: { 'User-Agent': 'Mozilla/5.0 (cf-worker-proxy/1.0)' }, redirect: 'follow', }); const h = new Headers(r.headers); h.set('Access-Control-Allow-Origin', '*'); h.set('Access-Control-Allow-Methods', 'GET, POST, OPTIONS'); h.set('Access-Control-Allow-Headers', '*'); return new Response(r.body, { status: r.status, headers: h }); }, }; - 部署完会拿到
https://<name>.<sub>.workers.dev地址,把它填到上方"自定义代理前缀"输入框。 - 之后 arXiv 搜索永久走你自己的代理,公共代理挂了也不影响。
🏷️ 用户标签
你在 /papers/ 抽屉里给论文打的自定义标签(兴趣 / 状态 / 分组 / 备注)。
列表存浏览器 localStorage(key = dpr_user_tags_v1);
配了 Gist Token + Gist ID 后,每次本地改动会异步同步到 Gist。
重置
清除所有浏览器配置(LLM / Gist / 主题 / 类目 / CORS 代理)。 无法撤销 — 如果用了 Gist 同步,先确认你能从 Gist 恢复。