arXiv Search Master
by @peterkouss
This skill provides powerful arXiv academic paper retrieval, download, and analysis capabilities, helping agents efficiently conduct academic literature rese...
clawhub install arxiv-search-master📖 About This Skill
arXiv 检索与分析 Skill
概述
本 skill 提供强大的 arXiv 学术论文检索、下载和分析功能,帮助智能体高效进行学术文献调研。支持关键词检索、作者检索、日期范围过滤、分类筛选等多种检索方式,并提供批量下载、元数据提取、论文总结等功能。
所有配置均通过命令行参数传入,无需配置文件。可选参数均有合理默认值。
目录结构
arxiv-search-skill/
├── skill.md # 本文件 - 使用说明与规范
├── README.md # 快速入门指南
├── requirements.txt # Python 依赖
├── arxiv_search.py # 统一入口(可选)
├── scripts/
│ ├── __init__.py
│ ├── utils.py # 工具函数
│ ├── search.py # 检索模块
│ ├── download.py # 下载模块
│ ├── metadata.py # 元数据处理模块
│ ├── batch_search.py # 批量检索模块
│ └── summarize.py # 论文总结模块
├── output/ # 输出目录
│ ├── pdfs/ # 下载的 PDF 文件
│ ├── metadata/ # 元数据 JSON 文件
│ └── summaries/ # 生成的摘要文件
└── examples/ # 使用示例
├── example_queries.jsonl
└── ids.txt
安装与配置
1. 安装依赖
pip install -r requirements.txt
2. 切换到 scripts 目录
所有脚本在 scripts/ 目录下运行:
cd scripts
核心功能
1. 检索模块 (search.py)
功能
在 arXiv 中按关键词、标题、摘要、作者、分类等检索论文,支持日期范围过滤。使用方法
python search.py --query "quantum computing" --max-results 50
命令行参数
#### 检索条件 (至少提供一个)
| 参数 | 简写 | 说明 | 必需 |
|------|------|------|------|
| --query | -q | 通用查询字符串 | 否 |
| --title | -t | 标题关键词 | 否 |
| --abstract | -a | 摘要关键词 | 否 |
| --author | -au | 作者名 | 否 |
| --category | -c | arXiv 分类 (如 cs.AI, quant-ph) | 否 |
#### 日期过滤 (可选)
| 参数 | 简写 | 说明 | 默认值 |
|------|------|------|--------|
| --start-date | -s | 起始日期 (YYYY-MM-DD) | - |
| --end-date | -e | 结束日期 (YYYY-MM-DD) | - |
#### 检索控制 (可选)
| 参数 | 说明 | 默认值 |
|------|------|--------|
| --max-results | 最大结果数 | 100 |
| --sort-by | 排序方式: relevance, lastUpdatedDate, submittedDate | relevance |
| --sort-order | 排序顺序: descending, ascending | descending |
| --timeout | 请求超时秒数 | 30 |
| --retry-attempts | 重试次数 | 3 |
#### 速率限制 (可选)
| 参数 | 说明 | 默认值 |
|------|------|--------|
| --requests-per-second | 每秒最大请求数 | 2.0 |
| --min-delay | 请求间最小延迟秒数 | 0.5 |
#### 输入输出
| 参数 | 简写 | 说明 |
|------|------|------|
| --id-list | - | 从文件读取 arXiv ID 列表进行检索 |
| --output | -o | 输出元数据 JSON 文件路径 |
#### 日志 (可选)
| 参数 | 说明 | 默认值 |
|------|------|--------|
| --log-level | 日志级别: DEBUG, INFO, WARNING, ERROR | INFO |
| --log-file | 日志文件路径 | - |
高级查询语法
# 标题中包含关键词
python search.py --query "ti:quantum AND ti:computing"摘要中包含关键词
python search.py --query "abs:machine AND abs:learning"组合条件
python search.py --query "cat:cs.AI AND (ti:neural OR abs:network)"
使用示例
# 基础关键词检索
python search.py --query "quantum computing" --max-results 50标题检索
python search.py --title "transformer" --max-results 30作者检索
python search.py --author "Smith, J" --max-results 100分类检索
python search.py --category "cs.AI" --start-date "2023-01-01"组合检索并保存结果
python search.py --query "deep learning" --category "cs.LG" --max-results 50 --output results.json
输出示例
{
"search_metadata": {
"query": "quantum computing",
"original_query": {
"query": "quantum computing",
"title": null,
"abstract": null,
"author": null,
"category": null,
"start_date": null,
"end_date": null
},
"timestamp": "2023-01-15T10:30:00Z",
"returned_results": 50
},
"papers": [
{
"arxiv_id": "2301.01234",
"arxiv_url": "https://arxiv.org/abs/2301.01234",
"pdf_url": "https://arxiv.org/pdf/2301.01234.pdf",
"title": "Quantum Computing for Machine Learning",
"authors": [
{"name": "John Smith"},
{"name": "Alice Johnson"}
],
"abstract": "We present a novel approach...",
"categories": ["quant-ph", "cs.LG"],
"primary_category": "quant-ph",
"published_date": "2023-01-05",
"updated_date": "2023-01-10",
"doi": "10.1234/arxiv.2301.01234",
"journal_ref": null,
"comments": "15 pages, 5 figures"
}
]
}
2. 下载模块 (download.py)
功能
下载单个或批量论文 PDF 文件。使用方法
python download.py --id 2301.01234
命令行参数
#### 输入源 (选择一个)
| 参数 | 说明 | 必需 |
|------|------|------|
| --id | arXiv ID(可多次指定) | 否 |
| --id-list | 包含 arXiv ID 列表的文本文件 | 否 |
| --metadata | 包含论文元数据的 JSON 文件 | 否 |
#### 输出选项 (可选)
| 参数 | 简写 | 说明 | 默认值 |
|------|------|------|--------|
| --output-dir | -o | 输出目录 | output/pdfs |
| --skip-existing | - | 跳过已存在的文件 | 默认启用 |
| --no-skip-existing | - | 覆盖已存在的文件 | - |
#### 下载控制 (可选)
| 参数 | 说明 | 默认值 |
|------|------|--------|
| --parallel | 并行下载数 | 3 |
| --chunk-size | 下载块大小字节 | 8192 |
| --verify-ssl | 验证 SSL 证书 | 默认启用 |
| --no-verify-ssl | 不验证 SSL 证书 | - |
#### 速率限制 (可选)
| 参数 | 说明 | 默认值 |
|------|------|--------|
| --requests-per-second | 每秒最大请求数 | 2.0 |
| --min-delay | 请求间最小延迟秒数 | 0.5 |
#### 日志 (可选)
| 参数 | 说明 | 默认值 |
|------|------|--------|
| --log-level | 日志级别: DEBUG, INFO, WARNING, ERROR | INFO |
| --log-file | 日志文件路径 | - |
使用示例
# 下载单个论文
python download.py --id 2301.01234下载多个论文
python download.py --id 2301.01234 --id 2302.05678从 ID 列表文件下载
python download.py --id-list ids.txt从元数据文件下载
python download.py --metadata results.json指定输出目录
python download.py --id 2301.01234 --output-dir my_papers/强制覆盖已存在的文件
python download.py --id 2301.01234 --no-skip-existing
3. 元数据处理模块 (metadata.py)
功能
提取论文元数据,支持多种格式导出(JSON、BibTeX、CSV、RIS),以及合并多个元数据文件。使用方法
python metadata.py --input results.json --format bibtex --output refs.bib
命令行参数
#### 输入方式 (选择一个)
| 参数 | 说明 | 必需 |
|------|------|------|
| --id | 单个 arXiv ID | 否 |
| --input | -i | 输入元数据 JSON 文件 | 否 |
| --merge | 合并多个元数据文件 | 否 |
#### 输出选项
| 参数 | 简写 | 说明 | 默认值 |
|------|------|------|--------|
| --format | -f | 输出格式: json, bibtex, csv, ris | json |
| --output | -o | 输出文件路径 | - |
#### 日志 (可选)
| 参数 | 说明 | 默认值 |
|------|------|--------|
| --log-level | 日志级别: DEBUG, INFO, WARNING, ERROR | INFO |
| --log-file | 日志文件路径 | - |
使用示例
# 获取单个论文元数据
python metadata.py --id 2301.01234从元数据文件导出 BibTeX
python metadata.py --input results.json --format bibtex --output refs.bib导出 CSV
python metadata.py --input results.json --format csv --output papers.csv导出 RIS
python metadata.py --input results.json --format ris --output papers.ris合并多个元数据文件
python metadata.py --merge result1.json result2.json --output merged.json
输出格式
#### BibTeX 格式
@article{smith:2023:quantum,
title = {Quantum Computing for Machine Learning},
author = {Smith, John and Johnson, Alice},
year = {2023},
month = {01},
journal = {arXiv preprint 2301.01234},
eprint = {2301.01234},
archivePrefix = {arXiv},
primaryClass = {quant-ph},
url = {https://arxiv.org/abs/2301.01234},
abstract = {We present a novel approach...}
}
4. 批量检索模块 (batch_search.py)
功能
从 JSONL 文件批量执行多个检索任务。使用方法
python batch_search.py --input queries.jsonl --output batch_results/
命令行参数
#### 输入 (必需)
| 参数 | 简写 | 说明 |
|------|------|------|
| --input | -i | 输入 JSONL 文件路径 |
#### 输出 (可选)
| 参数 | 简写 | 说明 | 默认值 |
|------|------|------|--------|
| --output | -o | 输出目录 | output/metadata |
| --no-individual | - | 不保存单独的查询结果 | - |
#### 检索控制 (可选)
| 参数 | 说明 | 默认值 |
|------|------|--------|
| --timeout | 请求超时秒数 | 30 |
| --retry-attempts | 重试次数 | 3 |
| --requests-per-second | 每秒最大请求数 | 2.0 |
| --min-delay | 请求间最小延迟秒数 | 0.5 |
#### 日志 (可选)
| 参数 | 说明 | 默认值 |
|------|------|--------|
| --log-level | 日志级别: DEBUG, INFO, WARNING, ERROR | INFO |
| --log-file | 日志文件路径 | - |
输入文件格式 (JSONL)
{"query": "deep learning", "max_results": 50}
{"query": "transformer architecture", "category": "cs.CL", "max_results": 30, "name": "transformer_2023"}
{"author": "Bengio, Y", "max_results": 100, "name": "bengio_papers"}
{"category": "cs.AI", "start_date": "2023-01-01", "max_results": 50}
JSONL 每行一个查询对象,支持的字段:
query / q: 通用查询title / t: 标题关键词abstract / a: 摘要关键词author / au: 作者名category / c / categories: 分类start_date / start-date / s: 起始日期end_date / end-date / e: 结束日期max_results / max-results / m: 最大结果数sort_by / sort-by: 排序方式sort_order / sort-order: 排序顺序name: 查询名称(用于输出文件名)使用示例
# 从 JSONL 文件运行批量检索
python batch_search.py --input queries.jsonl指定输出目录
python batch_search.py --input queries.jsonl --output batch_results/不保存单独查询结果,只保存合并文件
python batch_search.py --input queries.jsonl --no-individual
5. 论文总结模块 (summarize.py)
功能
生成论文摘要和关键点总结,以及文献综述概览。使用方法
python summarize.py --metadata results.json --overview --topic "deep learning"
命令行参数
#### 输入方式 (选择一个)
| 参数 | 说明 | 必需 |
|------|------|------|
| --id | 单个 arXiv ID | 否 |
| --metadata | 包含论文元数据的 JSON 文件 | 否 |
#### 输出选项 (可选)
| 参数 | 简写 | 说明 | 默认值 |
|------|------|------|--------|
| --output | -o | 输出文件路径 | - |
| --output-dir | - | 输出目录(用于批量模式) | output/summaries |
#### 功能选项 (可选)
| 参数 | 说明 |
|------|------|
| --overview | 生成文献综述概览 |
| --topic | 研究主题(用于综述) |
#### 日志 (可选)
| 参数 | 说明 | 默认值 |
|------|------|--------|
| --log-level | 日志级别: DEBUG, INFO, WARNING, ERROR | INFO |
| --log-file | 日志文件路径 | - |
总结内容
单篇论文总结包括:
文献综述包括:
使用示例
# 总结单篇论文
python summarize.py --id 2301.01234从元数据文件批量生成总结
python summarize.py --metadata results.json生成文献综述
python summarize.py --metadata results.json --overview --topic "deep learning" --output overview.json
常见 arXiv 分类
| 分类 | 说明 | |------|------| | cs.AI | Artificial Intelligence | | cs.CL | Computation and Language | | cs.CV | Computer Vision and Pattern Recognition | | cs.LG | Machine Learning | | cs.NE | Neural and Evolutionary Computing | | cs.RO | Robotics | | quant-ph | Quantum Physics | | stat.ML | Machine Learning (Statistics) | | math.OC | Optimization and Control | | physics.data-an | Data Analysis, Statistics and Probability |
API 使用示例 (Python 模块)
基础检索
from search import ArxivSearchsearcher = ArxivSearch()
简单关键词检索
results = searcher.search(
query="transformer architecture",
max_results=20,
sort_by="submittedDate"
)高级检索
results = searcher.search(
query="cat:cs.CL AND abs:transformer",
start_date="2023-01-01",
end_date="2023-12-31",
max_results=50
)
批量下载
from download import PaperDownloaderdownloader = PaperDownloader(output_dir="output/pdfs")
下载单个论文
downloader.download_by_id("2301.01234")批量下载
arxiv_ids = ["2301.01234", "2302.05678", "2303.09012"]
papers = [{"arxiv_id": id} for id in arxiv_ids]
downloader.download_batch(papers, skip_existing=True)
元数据处理
from metadata import MetadataExtractorextractor = MetadataExtractor()
获取元数据
metadata = extractor.get_metadata("2301.01234")导出为 BibTeX
papers = [metadata]
extractor.export_bibtex(papers, "references.bib")
完整工作流示例
# 1. 定义检索查询列表
cat > my_queries.jsonl << EOF
{"query": "large language model", "max_results": 50, "name": "llm"}
{"query": "chain-of-thought reasoning", "max_results": 30, "name": "cot"}
{"category": "cs.CL", "max_results": 100, "start_date": "2023-01-01", "name": "cl_2023"}
EOF2. 执行批量检索
python batch_search.py --input my_queries.jsonl --output my_results/3. 下载相关论文
python download.py --metadata my_results/merged_metadata.json --output-dir my_pdfs/4. 生成文献综述
python summarize.py --metadata my_results/merged_metadata.json --overview --topic "LLMs" --output llm_overview.json5. 导出 BibTeX
python metadata.py --input my_results/merged_metadata.json --format bibtex --output references.bib
输出规范
元数据 JSON 格式规范
见 search.py 输出示例。
错误处理规范
所有脚本遵循以下错误码规范:
| 错误码 | 含义 | |--------|------| | 0 | 成功 | | 1 | 通用错误 | | 2 | 参数错误 | | 3 | 网络错误 | | 4 | 文件IO错误 | | 5 | API 限流 |
日志规范
[INFO] 2023-01-15 10:30:00 - Starting search for query: "quantum computing"
[INFO] 2023-01-15 10:30:02 - Found 1500 results, returning first 50
[WARNING] 2023-01-15 10:30:03 - Rate limit approaching, slowing down
[ERROR] 2023-01-15 10:30:05 - Failed to download 2301.01234: Connection timeout
高级技巧
1. 检索优化
"graph neural network"transformer*AND, OR, ANDNOTti:, abs:, au:, cat:2. 分类组合
# 多个分类
python search.py --query "cat:cs.AI OR cat:cs.LG"排除分类
python search.py --query "cat:cs.* ANDNOT cat:cs.RO"
3. 时间范围检索
# 最近一个月 (Linux/Mac)
python search.py --query "deep learning" --start-date "$(date -d '1 month ago' +%Y-%m-%d)"特定年份
python search.py --query "transformer" --start-date "2023-01-01" --end-date "2023-12-31"
常见问题
Q: 如何提高检索速度?
A: 使用--max-results 限制返回数量,使用分类过滤减少结果集。Q: 遇到 rate limit 怎么办?
A: 脚本会自动处理限流。可通过--requests-per-second 和 --min-delay 调整速率限制参数。Q: 下载的 PDF 文件名格式是什么?
A: 默认格式:{arxiv_id}_{title_slug}.pdf,例如: 2301.01234_quantum-computing-for-machine-learning.pdfQ: 所有参数都有默认值吗?
A: 是的,所有可选参数都有合理的默认值。只需提供必需参数(如检索条件、输入源等)即可。更新日志
v1.1.0
v1.0.0
📋 Tips & Best Practices
Q: 如何提高检索速度?
A: 使用--max-results 限制返回数量,使用分类过滤减少结果集。Q: 遇到 rate limit 怎么办?
A: 脚本会自动处理限流。可通过--requests-per-second 和 --min-delay 调整速率限制参数。Q: 下载的 PDF 文件名格式是什么?
A: 默认格式:{arxiv_id}_{title_slug}.pdf,例如: 2301.01234_quantum-computing-for-machine-learning.pdf