Skip to content

MuLabPKU/paper-recommender

Repository files navigation

论文推荐系统 · Paper Recommender

每天自动从 arXiv 抓取最新论文,用 LLM 按你的研究方向打分,筛出最值得读的 10 篇。你越投票,它越懂你。 image

支持两种使用方式:

本地网页版 飞书推送版
使用方式 浏览器打开网页 每天直接推到手机飞书
投票反馈 网页点击 👍 👎 飞书消息卡片点击
需要额外配置 不需要 需要创建飞书应用
适合场景 坐在电脑前 随时随地,手机查看

第一步:安装

git clone https://github.com/ccandee/paper-recommender
cd paper-recommender
python3 -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt

安装慢或失败? 换国内镜像源:

.venv/bin/pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple

macOS 用户如果遇到 SSL 错误,运行一次:/Applications/Python\ 3.10/Install\ Certificates.command


第二步:配置

复制配置模板并填写:

cp .env.example .env

打开 .env,至少填一个 LLM API Key:

# 选一个填就行,优先级从上到下
ANTHROPIC_API_KEY=sk-ant-...
OPENAI_API_KEY=sk-...
GEMINI_API_KEY=...
DEEPSEEK_API_KEY=...
GROQ_API_KEY=...

# 每天几点抓论文(24小时制,默认早8点)
SCHEDULE_HOUR=8

# 每次抓多少篇(越多越全,LLM花费也越高)
ARXIV_MAX_RESULTS=100

# 允许手动触发(建议开启)
ENABLE_RUN_NOW=true

LLM 选哪个?

  • 想省钱:用 Gemini Flash 或 DeepSeek,近乎免费
  • 想效果好:用 claude-sonnet 或 gpt-4o,每天约 $0.05–0.10

第三步:设置研究方向

启动 app,浏览器打开 http://localhost:5001/profile,填写:

  • 你的研究兴趣(这是最重要的打分依据)
  • 你发表过的论文(帮助 LLM 理解你的风格)
  • 可选:Google Scholar ID,一键导入你的论文列表

方式一:本地网页版

启动(需要两个终端)

# 终端 1 — 网页服务
python app.py
# 浏览器打开 http://localhost:5001

# 终端 2 — 每日定时任务(每天 SCHEDULE_HOUR 自动跑)
python scheduler.py

网页功能

页面 地址 说明
每日推荐 / 浏览论文、看摘要、投票
论文详情 /paper/<id> 查看完整摘要和原文链接
研究档案 /profile 修改研究兴趣、导入论文
设置 /settings 关注机构、清除数据
投票历史 /history 查看你投过票的论文

方式二:飞书推送版

每天早上论文直接推到你的飞书,卡片里可以直接点 👍 👎 投票,偏好模型实时更新。

2.1 创建飞书应用

  1. 打开 open.feishu.cn,登录你的飞书账号
  2. 创建「企业自建应用」,填写应用名称(如「论文推荐」)
  3. 添加应用能力 → 开启「机器人」
  4. 权限管理 → 开通:
    • im:message(发消息)
    • contact:user.id:readonly(查用户 ID)
  5. 机器人 → 消息卡片请求方式 → 选「使用长连接接收回调
  6. 凭证与基础信息 → 复制 App ID 和 App Secret

2.2 获取你的 open_id

在飞书里发一条消息给机器人,或者用 curl 测试(把 token 换成你的):

# 先拿 tenant_access_token
curl -X POST https://open.feishu.cn/open-apis/auth/v3/tenant_access_token/internal \
  -H 'Content-Type: application/json' \
  -d '{"app_id":"你的AppID","app_secret":"你的AppSecret"}'

# 再用手机号查 open_id
curl -X POST 'https://open.feishu.cn/open-apis/contact/v3/users/batch_get_id?user_id_type=open_id' \
  -H 'Authorization: Bearer 上一步的token' \
  -H 'Content-Type: application/json' \
  -d '{"mobiles":["你的手机号"]}'

2.3 填入配置

.env 追加:

FEISHU_APP_ID=cli_xxxxxxxxxxxxxxxx
FEISHU_APP_SECRET=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
FEISHU_OPEN_ID=ou_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

如果手机号查不到 open_id(个人版飞书通讯录限制),可以先发一条消息给机器人,从消息事件里获取 open_id,或在飞书 API 调试台手动测试。

2.4 发布应用

版本管理与发布 → 创建版本 → 申请发布(自动审核,秒过)

2.5 启动

# 终端 1 — 网页服务 + 飞书长连接(接收点赞)
python app.py

# 终端 2 — 每日定时任务(每天 SCHEDULE_HOUR 自动抓论文并推飞书)
python scheduler.py

启动后飞书里会收到这样的卡片:

📚 今日论文推荐 · 2026-04-07
─────────────────────────────
🥇 [9.2] Attention Is All You Need
   论文完整摘要...
   [👍 有用]  [👎 没用]  [查看原文 ↗]
─────────────────────────────
🥈 [8.7] Scaling Laws for ...
   ...

推荐系统是怎么工作的

每次运行按以下步骤处理:

1. 读取研究档案     — 你填的研究兴趣和论文
2. 抓取新论文       — 只抓上次没见过的(水印去重,不重复花钱)
3. LLM 打分        — 每篇 0–10 分,按语义相关性评分(批量处理省 token)
4. ML 偏好模型      — 用你的历史投票训练,越用越准
5. 机构声誉加成     — 你关注的机构发的论文额外加分
6. 生成综合分数     — 多维信号合并,取最高 10 篇
7. 生成摘要         — 每篇 3 句话摘要
8. 推送             — 发到网页 / 飞书

综合分数构成:

综合分 = LLM相关性 (0–10, 主导)
       + ML偏好分  (0–2,  投票训练)
       + 机构加成  (0–1.5)
       + 作者历史  (±1.0)
       + 机构历史  (±1.0)
       + 话题信号  (±1.0)
       → 上限 10.0

越用越准: 每次点 👍 👎 都会更新偏好模型。投票越多,推荐越个性化。


费用参考

每次运行,ARXIV_MAX_RESULTS=100 时:

模型 每次费用
claude-sonnet ~$0.05–0.10
gpt-4o ~$0.08–0.15
gemini-2.0-flash ~$0.001
deepseek-chat ~$0.002
groq llama 免费额度内

停止服务

如果在后台启动了服务,用以下命令找到并终止进程:

# 查找进程
ps aux | grep -E "app\.py|scheduler\.py" | grep -v grep

# 按 PID 终止(把 <PID> 换成上面看到的数字)
kill <PID>

# 或者一键终止所有相关进程
pkill -f "app\.py"; pkill -f "scheduler\.py"

项目结构

paper-recommender/
├── app.py              # Flask 网页服务 + 飞书 webhook
├── scheduler.py        # 每日定时任务
├── config.py           # 读取 .env 配置
├── feishu/
│   ├── bot.py          # 飞书 API:发消息卡片
│   └── longconn.py     # 飞书长连接:接收卡片点击
├── db/
│   ├── database.py     # 所有数据库操作
│   └── schema.sql      # 建表语句
├── services/
│   ├── arxiv_fetcher.py   # arXiv 抓取(水印去重)
│   ├── recommender.py     # Pipeline 主流程
│   ├── llm_client.py      # 多 LLM 统一接口
│   ├── ml_ranker.py       # TF-IDF + Ridge 偏好模型
│   └── scholar.py         # Google Scholar 同步
├── templates/          # 网页模板
├── static/             # CSS / JS
└── data/               # SQLite 数据库(自动创建)

环境要求

  • Python 3.10+
  • 至少一个 LLM API Key
  • 飞书推送版额外需要:飞书账号 + 自建应用

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors