按引用次数对谷歌学者进行排序
](https://pypi.org/project/sortgs/)
sortgs是一个Python工具,用于根据引用次数对Google Scholar出版物进行排名。它有助于查找特定领域的相关论文。从Google Scholar获得的数据包括标题、引用、链接、排名和每年引用次数的新列。在后台,它首先尝试使用python请求获取结果。如果失败,它将使用硒来获取结果。
这个仓库现在还包含一个MCP服务器,它将CLI变成了一个工具驱动的研究管道:搜索论文、下载PDF、为RAG解析+块PDF、索引到ChromaDB中,以及使用OpenAI回答问题。MCP计划和架构记录在 MCP_PLAN.md.
项目意向(MCP)
MCP服务器(sortgs-mcp)旨在:
- 提供基于工具的访问,以搜索、下载和检查谷歌学术搜索结果。
- 为搜索会话构建本地PDF语料库。
- 解析和分块PDF以进行RAG索引(PyMuPDF+文本拆分器)。
- 索引本地向量存储(ChromaDB)中的块。
- 使用OpenAI在索引语料库上回答问题。
高水位流量:
- 生成关键字变体(OpenAI)。
- 搜索谷歌学者并创建会话。
- 下载会议的PDF文件。
- 解析和分块PDF。
- 在ChromaDB中索引块。
- 使用RAG查询语料库。
MCP服务器
安装
# Install dev deps
uv sync使用 uv run ... 对于所有命令(包括测试),使其在 项目环境,避免接触Python系统。
配置
- 复制
.env.example到.env. - 添加
OPENAI_API_KEY(关键字生成和RAG查询所需)。 - 可选覆盖:
- DATA_DIR (默认值: ./data) - LOG_LEVEL (默认值: INFO)
运行MCP服务器
uv run sortgs-mcp添加到克劳德代码
claude mcp add --transport stdio sortgs-mcp -- python -m sortgs_mcp.server您还可以在以下位置使用示例配置 examples/mcp_config.json.
MCP工具
generate_search_keywords
- 输入: query (str), num_variations (int,默认值:3) - 输出: {"keywords": [...]} (建议的关键字变体列表)
search_papers
- 输入: keywords (str), num_results (int), sort_by (str), start_year (int|无), end_year (int|无), languages (列表|无), debug (布尔) - 输出:会话元数据,包括 session_id, papers_found, csv_path
download_papers
- 输入: session_id (str), paper_indices (list\[int\]|无), max_papers (int) - 输出:下载包含计数和 download_metadata
index_papers
- 输入: session_id (str), chunk_size (int|无), chunk_overlap (int|无), max_chunks (int |无) - 输出:索引摘要 papers_indexed 和 chunks_created
query_papers
- 输入: question (str), session_id (str), top_k (int) - 输出:会话的答案+来源
list_sessions
- 输入:无 - 输出:包含元数据的已保存会话列表: session_id, keywords, created_at, papers_count, pdfs_downloaded, indexed
业绩说明
- 搜索使用
httpx.AsyncClient用于连接池的上下文管理器。 - 嵌入模型作为单例缓存;通过重新启动来更改模型
MCP服务器。
日志
结构化日志被写入 data/logs/sortgs_mcp.log 附加上下文 喜欢 session_id, paper_rank,以及 num_results. 看 TROUBLESHOOTING.md 了解常见问题和日志阅读提示。
归档工作计划
使用 archive_workplans.sh 将工作计划文件夹添加到tar.gz并删除原始文件夹。 档案始终保存在 .claude/workplans/archives/.
# Archive a workplan folder
./archive_workplans.sh .claude/workplans/task-06
# Optional custom archive name (still stored in .claude/workplans/archives/)
./archive_workplans.sh .claude/workplans/task-06 task-06.tar.gz安装
选项1(建议开发):使用 uv 用于快速安装
# from the repo root
uv sync
# run the CLI via uv
uv run sortgs "your keyword"选项2:通过pip(PyPI)
pip install sortgs用法
安装后,您可以运行 sortgs 直接从命令行:
sortgs "your keyword"替换 "your keyword" 使用您要搜索的任何关键字。名为的CSV文件 your_keyword.csv 将在您当前的目录中创建。
例子
- 默认搜索:
sortgs "machine learning"此命令搜索与“机器学习”相关的前100个结果,并将其保存为CSV文件。
- 按每年引用次数排序:
sortgs "machine learning" --sortby "cit/year"搜索“机器学习”并按每年引用次数排序。
- 指定日期范围:
sortgs "machine learning" --startyear 2005 --endyear 2015搜索2005年至2015年的论文。
- 搜索精确关键字:
sortgs "'machine learning'"- 将结果保存在特定路径中:
sortgs 'neural networks' --csvpath './examples/'这将把结果保存在名为“examples”的子文件夹下。
- 多个关键字:
sortgs '"deep learning" OR "neural networks" OR "machine learning"' --sortby "cit/year"- 语言筛选器:
sortgs "machine learning" --langfilter pt es fr de这将只包括葡萄牙语、西班牙语、法语和德语的文章。
输出示例
在跑步时, sortgs 将在终端中提供更新:
❯ sortgs "'machine learning'"
Running with the following parameters:
Keyword: 'machine learning', Number of results: 100, Save database: True, Path: /Users/wittmann/sort-google-scholar, Sort by: Citations, Plot results: False, Start year: None, End year: 2023, Debug: False
Loading next 10 results
Loading next 20 results
...
Replace `$PWD` with the absolute path to your results directory if you are not in the parent directory of `sortgs-results`.
## Contributing
We use `pytest` for our test suite. To run all tests:from repo root
uv run pytest
在提交PR之前,确保所有测试都通过;GitHub Actions还将在每次推送时执行测试套件。
## 关于机器人检查
由于验证码检查,Google Scholar可能会在太多重复请求后阻止访问。如果出现此问题,将使用硒来尝试获取结果。您可能会被要求手动解决验证码。理想情况下,你应该使用VPN来避免这个问题。使用硒时,您可能需要安装chromedriver。您可以从以下网址下载https://developer.chrome.com/docs/chromedriver/downloads并将其添加到您的PATH中。
## 许可证
- 麻省理工学院
## 更新
主分支已从master重命名。通过运行以下命令在本地更新它:
git branch -m master main git fetch origin git branch -u origin/main main git remote set-head origin -a
## 💖 支持项目
如果你觉得这个项目很有帮助,并想支持它的发展,可以考虑捐款。非常感谢您的支持!
[通过Wise捐款](https://wise.com/pay/me/fernandow21)