内容
TeX Scholar (`scitex-scholar`)
<pcenter">
<a://scitex <img src="citex-logo-blue-cropped.png" alt="SciTeX" width="400">
</a>
</p>
<p align="center"><b>科研论文搜索、丰富、PDF 下载与文献管理,助力可重复性研究。</b></p>
<p align="center">
<a href="https://scitex-scholar.readthedocs.io/">完整文档</a> · <code>uv pip install scitex-scholar]</code>
</p>
<!-- scitex-badges:start -->
<pcenter">
<="https:///project/scitex-scholar/"><img src://img.shields.io/pypi/v/scitex-scholar?label=pypi" alt="pypi"></a>
<a href="https://pypi.org/project/scitex-scholar/"><img src="https://img.shields.io/pypi/pyversions/scitex-scholar?label=python" alt="python"></a>
<a href="https://github.com/ywatanabe1989/scitex-scholar/actions/workflows/rtd-sphinx-build-on-ubuntu-latest.yml"><img src="https://img.shields.io/github/actions/workflow/status/ywatanabe1989/scitex-scholar/rtd-sphinx-build-on-ubuntu-latest.yml?branch=develop&label=docs" alt="docs"></a>
</p>
<p align="center">
<a href="https://github.com/ywatanabe1989/scitex-scholar/actions/workflows/pytest-matrix-on-ubuntu-py3-11-3-12-3-13.yml"><img src="https://img.shields.io/github/actions/workflow/status/ywatanabe1989/scitex-scholar/pytest-matrix-on-ubuntu-py3-11-3-12-3-13.yml?branch=develop&label=tests" alt="tests"></a>
<a href="https://codecov.io/gh/ywatanabe1989/scitex-scholar"><img src="https://img.shields.io/codecov/c/github/ywatanabe1989/scitex-scholar/develop?label=cov" alt="cov"></a>
<a href="https://www.gnu.org/licenses/agpl-3.0"><img src="https://img.shields.io/badge/license-AGPL_v3-blue.svg" alt="License: AGPL v3"></a>
</p>
<!-- scitex-badges:end -->
---
## 问题与解决方案
| # | 问题 | 解决方案 |
|---|---------|----------|
| 1 | **文献搜索碎片化** -- CrossRef / OpenAlex / Semantic Scholar / arXiv / PubMed 各自有不同的 API、速率限制、认证方式 | **统一搜索** -- `scitex scholar search "topic"` 跨多个平台搜索,自动去重,返回排序结果 |
| 2 | 缺少摘要 / DOI / 影响因子 手动准备浪费时间scitex scholar bib 丰富** -- 一解析 DOI,获取影响因子,规范格式 3 | **墙 PDF 需要机构登录** -- 手动登录下载瓶颈 | **浏览器自动化 + OAuth** -- 持久化 Chrome 配置文件,自动下载 |
## 问题
文献管理涉及多个工具和 API:搜索数据库、解析 DOI、通过机构访问下载 PDF、丰富 BibTeX 元数据、维护可重复的、去重的文献库。每个步骤都有不同的接口、认证流程和数据格式。
## 解决方案
`scitex-sch 提供统一的工作流- **搜索** 跨 CrossRef、、PubMed、arXiv 和 OpenAlex
- **解析** DOI;丰富 BibTeX 摘要、引用数、影响因子(JCR 2024)、PMID 和 arXiv ID
- **下载** PDF 通过机构访问(OpenAthens / SSO)与 Playwright 浏览器自动化
- **组织** 文献在 MASTER-hash 库中,每个项目在 `~/.scitex/scholar/library/` 下有符号链接
- **高亮** PDF 中的每个句子,按其修辞角色分类 — 声明、方法、局限性、支持性引用、矛盾引用 — 通过 Claude
- **自动化** 通过 CLI、Python API 或 SciTeX MCP 服务器执行相同操作
## 安装
```bash
pip install scitex-scholar # 核心
pip install "scitex-scholar[pdf]" # PDF 文本提取
pip install "scitex-scholar[mcp]" # MCP 服务器依赖(fastmcp)
pip install "scitex-scholar[browser]" # Playwright 自动化
pip install "scitex-scholar[all]" # 所有功能
```
## 4 种接口
<details open>
<summary><strong>Python API</strong></summary>
<br>
```python
from scitex_scholar import Scholar, Paper, apply_filters,ibtex
scholar()
papers = scholar.search("deep learning EEG", year_min=2020) # 自动丰富
papers.save("results.bib")
# 过滤 + 导出
top = apply_filters(papers, min_citations=50, min_impact_factor=5.0)
print(to_bibtex(top))
```
</details>
<details>
<summary><strong>CLI</strong></summary>
<br>
入口:`scitex-scholar <子命令>` (基于 Click)。
```bash
# 发现所有功能
scitex-scholar --help
scitex-scholar --help-recursive # 完整概述
scitex-scholar --version # 或 -V
# 论文
scitex-scholar paper fetch --doi 10.1038/nature12373 --project demo
scitex-scholar paper fetch-batch --dois 10.1038/xxx --dois 10.1126/yyy --project demo --num-workers 4
# BibTeX 文件
scitex-scholar bibtex import --bibtex refs.bib --project demo --output refs.enriched.bib
# PDF 后处理
scitex-scholar pdf highlight paper.pdf
# 文献库 — 日常工作流
scitex-scholar # 所有项目
scitex-scholar library list neurovista # 一个项目
scitex-scholar library open-urls neurovista --watch # 浏览器 + 自动导入
scitex-scholar library refresh neurovista # 一键维护
scitex-scholar library refresh neurovista --sync spartan # +rsync 推送
# 文献库 — 手动 PDF 导入(当数据库未索引时,或没有自动下载)
scitex-scholar paper fetch --doi 10./epi.700 --pdf-main ~/Downloads/Liu_2026 --pdf-sup/MOES_ESM.pdf \
attachment ~/Downloads/dataset --project neuro# 文献库布局 / 共享完整性
scolar library bind neurovista/neurovista 符号链接
scitex-scholar library export neuroformat bibtex
-scholar library audit-files --project neurovista
scitex-scholar library db build --dry-run
scitex library db audit --# 认证(机构 SSO — OpenAthensProxy / Shibbolethitex-scholar auth status # 退出 任何会话有效,1 否则
scitex-scholar auth login # 触发 SSO 流程()
scitex-scholar -y # 清的 cookie( 需要)
scitex-scholar auth refresh # 注销 + 登录
# MCP 服务器
scitex-scholar mcp start
scitex-scholar mcp list-tools --json
# Shell
scitex-sch-shell-completion --shell bash
scitex-scholar-completion --shell# 技能 API 自省
-scholar skills listitex-scholar listis -v
```
试 SSO 自动化浏览器自动化步骤都会在 `~/.scitexolar/cache/engine/screenshots/` 和 `~/./browser/cache/debug/`截图 + HTML 对。当选择器中断(例如 UI 刷新)`ls -lt件目录以获取帧的故事 — 截图的内容,HTML 显示推理的内容。参见 `_skills/scitex-browser/11_debugging-visuals.md` 获取完整模式异动词接受-run` 和 `---yes`。读取动词支持 `--json`。常见的论文/BibTeX 标志:`--browser-mode {stealth,interactive}`、`--chrome`、`--force`。
> **迁移(1.3.0):** CLI 移动到名词-动词组。旧的顶级命令(`single`、`parallel`、顶级 `bibtex --bib、`highlight`、`-tree`、`materialize`、`dematerializedb`)仍然会发出 `Deprec`,并将在 1.4.0 中删除。有关完整迁移表,请参见 [CHANGE](CHANGELOG.md)。
</details>
<details>
<summary><strong>MCP 服务器</strong></summary>
<br>
该软件包附带 MCP 工具处理程序,由统一的 `scitex serve` 服务器使用(前缀为 `scholar_*` 的工具)。`scitex_scholar.mcp_server` 服务器仍附带,但已弃用。请参阅 [技能文档](https://scitex-scholar.readthedocs.io/en/latest/skills获取完整的工具列表details>
<detailssummary><strong</strong></<br>
代理技能在 [scitex.readthedocs.io/en/latest/sk](httpsitex-scholar.readthedocs/latest/skills.html)。`semantic-highlight` 了 PDF 高亮。
</details>
## 核心 API
| 符号 | 目的-|---------|
|olar` | 主要 丰富 / 下载接口 |
| `、`Papers`篇论文 / 集合及其导出方法 |
|olarConfig` |、API 密钥丰富开关、 |
| `apply | 过滤 `Papers` 集合 |
to_bibtex_ris`_endnote`、`to_text_citation` | 导出格式 |
| `generate_cite_key`、`make_citation_key` | 确定性 BibTeX 键 |
| `CitationGraphBuilder`、`plot_citation_graph` | 可选的引用图 |
| `pdf_highlight.highlight_pdf` | 在 PDF 上叠加语义高亮 |
来源:`core/`、`search_engines/`、`metadata_engines/`、`pdf_download/`、`pipelines/`、`browser/`、`auth/`、`storage/`、`pdf_highlight/`、`_mcp/`。
## 语义 PDF 高亮
在 PDF 上叠加彩色编码的高亮,区分论文的 **声明**、**方法**、**局限性** 和相关工作的立场。高亮是标准的 PDF 注释对象,放置在源文件的副本上 — 原始字节保持不变,任何查看器都可以显示或剥离它们。
| 颜色 | 类别 | 含义 |
|---|---|---|
| 绿色 | `focal_claim` | 论文阐明、建议或证明的内容 |
| 紫色 | `focal_method` | 新方法、模型、队列或分析 |
| 红色 | `focal_limitation` | 自我承认的缺陷或有效性威胁 |
| 蓝色 | `related_supportive` | 支持论文发现的前期工作 |
| 橙色 | `related_contradictive` | 与论文发现相矛盾的前期工作 |
紧凑的色彩图例和签名(模型名称、时间戳)被印在最后一页的右下角。有关详细信息,请参见 [文档](https://scitex-scholar.readthedocs.io/en/latest/semantic_highlight.html)。
```bash
export ANTHROPIC_API_KEY=sk-ant-...
scitex-scholar pdf highlight paper # 句子iku,写入 paper.highlighted.pdf
scitex-scholar pdf highlight paper.pdf --stub # 离线关键词启发式(无 API 调用)
```
```python
from scitex_scholar.pdf_highlight import highlight_pdf
result = highlight_pdf("paper.pdf", output_path="paper.highlighted.pdf")
print(result.counts(), result.annotations_added)
```
也作为 `scholar_highlight_pdf` MCP(统一的itex serve` 服务器)和 `semantic-highlight` 代理技能(参见 [技能文档](https://scitex-scholar.readthedocs.io/en/latest/skills.html。
## 存储布局~/.sccholar/library/
├── MASTER/<HASH>/ # 规范的每篇论文存储(metadata.json + PDF)
└── <project>/<human-label> -> ../MASTER/<HASH>
```
缓存和认证状态存储在 `~/.scitex/scholar/cache/` 下(URL 解析器、Chrome 配置文件、OpenAthens cookie)。可通过 `SCITEX_DIR` 覆盖。
## 架构
```
scitex_sch├── __init__. 公共 APIolar、Paperapers、apply_filters_bibtex)
├── _cli_main.py `scitex-scholar` Click 入口点(名词-动词组)
├── core/ ← Scholar / Paper / Papers / ScholarConfig
├── search_engines/ ← CrossRef、OpenAlex、Semantic Scholar、arXiv、PubMed 联邦
├── metadata_engines/ ← DOI 解析、摘要 / 影响因子 / 引用├── auth/ ← OpenAthens / EZProxy / Shibboleth 自动化
/ ← Playwright 管理器(隐身 + 交互式)
├── url_finder/ ← PDF URL 发现(翻译器 + 启发式策略)
├── pdf_download/ ← `paper fetch` 策略(chrome、直接、备用 pdf_highlight/ ← 通过 Claude 进行声明局限性叠├── pipelines/ 终端到终端session-decorated
├── storage/ ← MASTER-hash 库符号链接
├──/ ← 可选的引用网络构建器 + 绘图
├── integration/ ← Zotero / Mendeley / RefWorks / EndNote / Paperpile 导入器
├── _mcp/ ← MCP 工具处理程序(`scholar_*` 适用于 `scitex serve`)
└── _skills/ ← 代理面向技能文件(semantic-highlight 等)
```
CLI 是 Python API 之上的薄层:每个 `scitex-scholar <名词> <动词>` 命令都分派到 `core/`、`pipelines/`、`storage/` 或 `auth/` 中的一个。MCP 服务器(`_mcp/`)将相同的处理程序作为 `scholar_*` 工具暴露给统一的 `scitex serve` 服务器。
## 演示
```mermaid
flowchart LR
Q["搜索查询<br/>或 .bib / DOI"] --> S["Scholar.search() /<br/>bibtex import"]
S --> E["metadata_engines<br/>(CrossRef · OpenAlex · arXiv ·<br/>PubMed · Semantic Scholar)"]
E --> P["Papers<br/>(去重、丰富)"]
P --> U["url_finder<br/>(翻译器 + 启发式)"]
U --> A["auth<br/>(OpenAthens / EZProxy /<br/>Shibboleth)"]
A --> D["pdf_download<br/>(Playwright 策略)"]
D --> L["~/.scitex/scholar/library/<br/>MASTER/<HASH>/"]
P -.-> H["pdf/>(声明 局限性) L -.-> M["MCP: 工具<br/>(scitex serve)"]
```
`scitex paper fetch --doi.1038/...` 演练整个,一次调用 → 解析 URL → 下载 →MASTER/<HASH 下,包含 + PDF + 项目。
## AGPL-3-only。
## Sci 组成部分
-scholar` 是 [**SciTeX://scitex 的一部分。通过 `itex[scholar,使用 `scolar`(Python `scitex`(CLI) 研究的四大>
> 0. **运行** 研究的自由 — 在您的机器上,按照您的条件。
1. **研究每个步骤如何 — 从原始最终稿。
>. **重新** 您的工作流,而不仅仅论文。
> 3. **修改任何模块并分享改进的>-3. 因为我们相信应该拥有与软件相同的自由 align="center <a href="https://scitex.ai="_blank"><="docs/scitex-icon-navy.png" alt="X" width"/></a>
>