paper-tracker 是一个面向计算生物学 / 生物信息学方向的论文追踪与筛选工具。它通过配置期刊清单与元数据来源,从 Crossref 等源拉取最新论文,再结合关键词规则与期刊分层进行打分,最终生成每日可读报告。
核心目标:
- 按期刊抓取最新论文元数据(Crossref)
- 从多个开放来源补全摘要 / PDF / 关联信息(Crossref、PubMed、arXiv、bioRxiv)
- 基于关键词与期刊层级进行评分
- 生成每日报告,便于快速浏览与筛选
pip install -r requirements.txtpip install -e .paper-tracker --help项目配置集中在 config/ 目录:
定义期刊列表与抓取参数(使用 Crossref 抓取):
venues:
- id: nature
name: "Nature"
issn:
print: "0028-0836"
online: "1476-4687"
fetcher: crossref
fetcher_params:
days_back: 1常用字段:
id/name/publisher/issn/websitetier:期刊层级,用于打分topics/notes:辅助信息fetcher/fetcher_params:抓取器与参数(当前实现为 Crossref)
定义元数据补全来源与优先级:
sources:
- id: pubmed
type: pubmed
enabled: true
provides: ["metadata", "abstract"]
search_by: ["doi", "title"]
priority:
abstract: 90
pdf: 10支持的 type:
crossrefpubmedarxivbiorxiv
priority 会与每个来源的 confidence 相乘,用于挑选最佳 abstract / pdf_url。
定义打分关键词:
include_keywords_1/include_keywords_2:需要同时命中的两组关键词exclude_keywords:可用于过滤不相关主题min_score:默认最低分阈值(报告筛选可用)
推荐的完整流程如下:
paper-tracker fetch-venues --days-back 1paper-tracker enrich-metadata --since-days 1paper-tracker score-papers --since-days 1 --version v1paper-tracker generate-daily-report --date 2025-12-16 --min-score 11paper-tracker cleanup --keep-days 90data/index/papers.jsonl- 主索引文件,记录论文的基础元数据与打分摘要
data/cold/abstracts/YYYY-MM.jsonl.gz- 全文摘要冷存储(按月分片)
reports/daily/YYYY-MM-DD.md- 每日报告输出
打分管线位于 src/paper_tracker/scoring/:
KeywordTitleScorer:标题必须同时命中两组关键词KeywordAbstractScorer:摘要必须同时命中两组关键词VenueScorer:根据venues.yml的tier映射成分值
综合分数为各子打分之和,版本号在 scoring/composite.py 中维护。
pytest.
├─ src/
│ └─ paper_tracker/
│ ├─ cli.py # CLI 入口
│ ├─ config.py # 配置加载与校验
│ ├─ models.py # Paper / ScoringResult 数据模型
│ ├─ storage.py # JSONL 索引读写与去重
│ ├─ utils.py # 元数据补全与摘要冷存储逻辑
│ ├─ venues/ # 期刊抓取器(Crossref)
│ ├─ sources/ # 元数据来源(Crossref/PubMed/arXiv/bioRxiv)
│ └─ scoring/ # 打分逻辑
├─ config/ # 期刊/来源/关键词配置
├─ data/ # 索引与冷存储数据
├─ reports/ # 每日报告输出
└─ tests/ # 单元测试
- 需要网络访问以调用 Crossref / PubMed / arXiv / bioRxiv API。
src/paper_tracker/venues/crossref.py与src/paper_tracker/sources/pubmed.py中的User-Agent/email仍为占位值,建议替换为自己的邮箱以符合服务要求。