# ppfind - paper citations & links finder
A command-line tool to find paper citations, ArXiv links, and GitHub repository links easily.
[](https://pypi.org/project/ppfind/)
## Features
1. **Citation Fetching**: Get paper citations through Google Scholar API (SerpAPI)
2. **ArXiv Links**: Search and get related paper ArXiv links through ArXiv API
3. **GitHub Links**: Search and get related code repository links through GitHub REST API
4. **Batch Processing**: Supports CSV & XLSX file batch processing and customized column name
5. **Interactive Mode**: Supports interactive continuous querying
## Installation
### From PyPI (Recommended)
```bash
pip install ppfind
```
### From Source
```bash
git clone https://github.com/Disapole-Xiao/ppfind.git
cd ppfind
pip install -e .
```
## API key
Get a free or paid API Key at [SerpAPI](https://serpapi.com/) for Google Scholar API use. The free plan offers 250 search per month.
## Usage
Type `ppfind --help` or `ppfind <cmd> --help` to see all available options.
### 1. Interactive Mode
```bash
ppfind i
```
### 2. Direct Query
```bash
# Query single paper
ppfind q "Attention Is All You Need"
# Query multiple papers
ppfind q "Attention Is All You Need" "ResNet: Deep Residual Learning for Image Recognition"
```
Output example:
```
### Attention Is All You Need
- Citations: 193680
- ArXiv Link: http://arxiv.org/abs/1706.03762v7
- GitHub Link: https://github.com/jadore801120/attention-is-all-you-need-pytorch
```
**Note**: You may need to wait for a few seconds to get results.
### 3. File Processing
Currenly, CSV and XLSX files are supported.
By default, `ppfind` gets paper titles at `title` column and outputs results to `citations`, `arxiv_link` and `github_link`. Modify this by adding options or in config.
```bash
# Basic usage (output file will be {original_name}_new.csv)
ppfind f papers.csv
# Specify column names
ppfind f papers.xlsx --title-col "Paper Title" --citation-col "Citation Count"
```
### 4. Configuration
Set default options so that you don't have to input options every time.
```bash
# Set options
ppfind config --api-key YOUR_SERP_API_KEY --title-col "Paper Title" --citation-col "Citations" --arxiv-col "Arxiv Link" --github-col "Github Link"
# Show current configuration
ppfind config --show
# Reset to defaults
ppfind config --reset
```
## Notes
- To avoid incorrect matches, please search using the full paper title.
- This tool is intended for reference only. Please confirm the accuracy of the results on your own.
Raw data
{
"_id": null,
"home_page": "https://github.com/Disapole-Xiao/ppfind",
"name": "ppfind",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.6",
"maintainer_email": null,
"keywords": "papers, citations, arxiv, github, search, cli, api, academic",
"author": "Disapole",
"author_email": "disapolexiao@gmail.com",
"download_url": "https://files.pythonhosted.org/packages/46/a7/4b582f7cb5e3f031d7d912d9c685ad96fd0fc285239c1713e5fea0e1690e/ppfind-1.1.0.tar.gz",
"platform": null,
"description": "# ppfind - paper citations & links finder\r\n\r\nA command-line tool to find paper citations, ArXiv links, and GitHub repository links easily.\r\n\r\n[](https://pypi.org/project/ppfind/)\r\n\r\n## Features\r\n\r\n1. **Citation Fetching**: Get paper citations through Google Scholar API (SerpAPI)\r\n2. **ArXiv Links**: Search and get related paper ArXiv links through ArXiv API \r\n3. **GitHub Links**: Search and get related code repository links through GitHub REST API\r\n4. **Batch Processing**: Supports CSV & XLSX file batch processing and customized column name\r\n5. **Interactive Mode**: Supports interactive continuous querying\r\n\r\n## Installation\r\n\r\n### From PyPI (Recommended)\r\n\r\n```bash\r\npip install ppfind\r\n```\r\n\r\n### From Source\r\n\r\n```bash\r\ngit clone https://github.com/Disapole-Xiao/ppfind.git\r\ncd ppfind\r\npip install -e .\r\n```\r\n\r\n## API key\r\n\r\nGet a free or paid API Key at [SerpAPI](https://serpapi.com/) for Google Scholar API use. The free plan offers 250 search per month.\r\n\r\n## Usage\r\n\r\nType `ppfind --help` or `ppfind <cmd> --help` to see all available options.\r\n\r\n### 1. Interactive Mode\r\n\r\n```bash\r\nppfind i\r\n```\r\n\r\n### 2. Direct Query\r\n\r\n```bash\r\n# Query single paper\r\nppfind q \"Attention Is All You Need\"\r\n\r\n# Query multiple papers\r\nppfind q \"Attention Is All You Need\" \"ResNet: Deep Residual Learning for Image Recognition\"\r\n```\r\nOutput example:\r\n```\r\n### Attention Is All You Need\r\n - Citations: 193680\r\n - ArXiv Link: http://arxiv.org/abs/1706.03762v7\r\n - GitHub Link: https://github.com/jadore801120/attention-is-all-you-need-pytorch\r\n```\r\n\r\n**Note**: You may need to wait for a few seconds to get results.\r\n\r\n### 3. File Processing\r\n\r\nCurrenly, CSV and XLSX files are supported.\r\n\r\nBy default, `ppfind` gets paper titles at `title` column and outputs results to `citations`, `arxiv_link` and `github_link`. Modify this by adding options or in config.\r\n\r\n```bash\r\n# Basic usage (output file will be {original_name}_new.csv)\r\nppfind f papers.csv\r\n\r\n# Specify column names\r\nppfind f papers.xlsx --title-col \"Paper Title\" --citation-col \"Citation Count\"\r\n```\r\n\r\n### 4. Configuration\r\n\r\nSet default options so that you don't have to input options every time.\r\n\r\n```bash\r\n# Set options\r\nppfind config --api-key YOUR_SERP_API_KEY --title-col \"Paper Title\" --citation-col \"Citations\" --arxiv-col \"Arxiv Link\" --github-col \"Github Link\"\r\n\r\n# Show current configuration\r\nppfind config --show\r\n\r\n# Reset to defaults\r\nppfind config --reset\r\n```\r\n\r\n## Notes\r\n\r\n- To avoid incorrect matches, please search using the full paper title.\r\n- This tool is intended for reference only. Please confirm the accuracy of the results on your own.\r\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "A command-line tool to find paper citations, ArXiv links, and GitHub repository links easily.",
"version": "1.1.0",
"project_urls": {
"Homepage": "https://github.com/Disapole-Xiao/ppfind"
},
"split_keywords": [
"papers",
" citations",
" arxiv",
" github",
" search",
" cli",
" api",
" academic"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "ca27112fa3a4ed0dbad2223b3e89615bf6d6716cf3e4f8a8c3e533385f06b203",
"md5": "5806cb3006f87afda2fc519e01895ffd",
"sha256": "b5a76bb39b917f9dbf47fee370dc32dd0e984847dc0bd7f9142291ef42da4f14"
},
"downloads": -1,
"filename": "ppfind-1.1.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "5806cb3006f87afda2fc519e01895ffd",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.6",
"size": 9490,
"upload_time": "2025-09-13T15:56:00",
"upload_time_iso_8601": "2025-09-13T15:56:00.418683Z",
"url": "https://files.pythonhosted.org/packages/ca/27/112fa3a4ed0dbad2223b3e89615bf6d6716cf3e4f8a8c3e533385f06b203/ppfind-1.1.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "46a74b582f7cb5e3f031d7d912d9c685ad96fd0fc285239c1713e5fea0e1690e",
"md5": "51ffbefb95f2a5b89154ef4ecd307b40",
"sha256": "1480d7fe6d67f5d32e3b002385cd4c28ca4182438882d9fbad95def6601eda60"
},
"downloads": -1,
"filename": "ppfind-1.1.0.tar.gz",
"has_sig": false,
"md5_digest": "51ffbefb95f2a5b89154ef4ecd307b40",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.6",
"size": 9940,
"upload_time": "2025-09-13T15:56:01",
"upload_time_iso_8601": "2025-09-13T15:56:01.909562Z",
"url": "https://files.pythonhosted.org/packages/46/a7/4b582f7cb5e3f031d7d912d9c685ad96fd0fc285239c1713e5fea0e1690e/ppfind-1.1.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-09-13 15:56:01",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "Disapole-Xiao",
"github_project": "ppfind",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"requirements": [
{
"name": "pandas",
"specs": []
},
{
"name": "requests",
"specs": []
},
{
"name": "arxiv",
"specs": []
},
{
"name": "google-search-results",
"specs": []
},
{
"name": "tqdm",
"specs": []
},
{
"name": "openpyxl",
"specs": []
}
],
"lcname": "ppfind"
}