A CLI tool for searching, downloading, parsing, and summarizing academic papers.
Project description
Paper Parser 🛠️
Efficient arXiv Search, Download, and AI-Friendly Markdown Parsing.
paper-parser is a CLI tool designed to streamline the academic research workflow. It handles everything from finding a paper on arXiv to converting it into a clean, structured Markdown format that is optimized for LLMs and AI agents.
🚀 Why Use Paper Parser?
Standard PDF-to-text tools often produce one massive block of text, which leads to two major problems when working with AI:
- Context Overflow: Large papers can exceed an LLM's context window.
- Token Waste: Paying for the entire paper's context when you only need to analyze the "Methodology" or "Conclusion" is expensive and slow.
The Solution: paper-parser uses the MinerU V4 API to extract high-quality Markdown and then automatically splits the paper into chapters. This allows AI agents to read the paper section-by-section, enabling:
- ✅ Granular Context Management: Only read what matters.
- ✅ Significant Token Savings: Drastically reduce your API bills.
- ✅ Higher Accuracy: Focus the model's attention on specific sections.
✨ Key Features
- 🔍 Intelligent Search: Typos? No problem. Fuzzy-searches arXiv with relevance ranking.
- 📥 Smart Download: Downloads PDFs into organized, ID-based directories.
- 🧩 Section Splitting: Automatically splits papers into
01_Introduction.md,02_Methodology.md, etc. - 📦 Incremental Processing: Remembers what you've already downloaded and parsed—no redundant API calls.
- 🖼️ Image Extraction: Extracts images and maintains correct relative links within the Markdown chapters.
- 📝 Note Templates: Automatically generates
title.mdandsummary.mdfor your research notes.
🛠️ Installation
From PyPI (Recommended)
pip install paper-parser-skill
From Source
# Clone the repository
git clone https://github.com/KaiHangYang/paper-parser-skill.git
cd paper-parser-skill
# Install in editable mode
pip install -e .
⚙️ Configuration
The first time you run pp, it will create a configuration file at ~/.paper-parser/config.yaml.
MINERU_API_TOKEN: "your_token_from_mineru.net"
PAPER_WORKSPACE: "~/paper-parser-workspace"
MINERU_API_TIMEOUT: 600
[!IMPORTANT] You need an API token from MinerU to use the parsing features.
📖 Usage Guide
# 1. Search for a paper
pp search "LLaMA 3"
# 2. Complete workflow: Search -> Download -> Parse -> Meta
pp all "2303.17564"
# 3. Parse a local PDF file
pp parse ./my_local_paper.pdf
# 4. Find where a paper is stored
pp path "LLaMA"
📂 Output Structure
PAPER_WORKSPACE/
└── 2303.17564/ # ArXiv ID
├── paper.pdf # Original PDF
├── title.md # Paper metadata
├── summary.md # Note-taking template
└── markdowns/ # AI-Ready Content
├── 01_Introduction.md
├── 02_Methods.md
├── ...
└── images/ # Extracted figures & tables
🤝 Acknowledgments
- arXiv for the academic paper API.
- RapidFuzz for fast fuzzy string matching.
- MinerU (mineru.net) for high-quality PDF-to-Markdown parsing.
📜 License
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file paper_parser_skill-0.1.2.tar.gz.
File metadata
- Download URL: paper_parser_skill-0.1.2.tar.gz
- Upload date:
- Size: 11.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
69ab82a35c92d8b088531997debf92806cac134b24b56358de7e8a7e50bab128
|
|
| MD5 |
6657cb5cc2a1c42d2138ee0da49116ba
|
|
| BLAKE2b-256 |
06c4527e947d57689e56e6b5021feb5bac0fbf5d0cc5699392ac35e30b8e512c
|
Provenance
The following attestation bundles were made for paper_parser_skill-0.1.2.tar.gz:
Publisher:
publish.yml on KaiHangYang/paper-parser-skill
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
paper_parser_skill-0.1.2.tar.gz -
Subject digest:
69ab82a35c92d8b088531997debf92806cac134b24b56358de7e8a7e50bab128 - Sigstore transparency entry: 1295075176
- Sigstore integration time:
-
Permalink:
KaiHangYang/paper-parser-skill@2e6820ca372072caafdc3d6b551e70102342ae67 -
Branch / Tag:
refs/tags/v0.1.2 - Owner: https://github.com/KaiHangYang
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@2e6820ca372072caafdc3d6b551e70102342ae67 -
Trigger Event:
push
-
Statement type:
File details
Details for the file paper_parser_skill-0.1.2-py3-none-any.whl.
File metadata
- Download URL: paper_parser_skill-0.1.2-py3-none-any.whl
- Upload date:
- Size: 11.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6a80df357c475dea9a771d218886dc62f3df59e6cb0cf594181f897db2e4f967
|
|
| MD5 |
a2ccb2d929e4fefa10f20699fb76f4f0
|
|
| BLAKE2b-256 |
345778119544305093bac06bbf7f1ea02f8ffc6236b6a1c236b021a1b556b851
|
Provenance
The following attestation bundles were made for paper_parser_skill-0.1.2-py3-none-any.whl:
Publisher:
publish.yml on KaiHangYang/paper-parser-skill
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
paper_parser_skill-0.1.2-py3-none-any.whl -
Subject digest:
6a80df357c475dea9a771d218886dc62f3df59e6cb0cf594181f897db2e4f967 - Sigstore transparency entry: 1295075216
- Sigstore integration time:
-
Permalink:
KaiHangYang/paper-parser-skill@2e6820ca372072caafdc3d6b551e70102342ae67 -
Branch / Tag:
refs/tags/v0.1.2 - Owner: https://github.com/KaiHangYang
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@2e6820ca372072caafdc3d6b551e70102342ae67 -
Trigger Event:
push
-
Statement type: