A CLI tool to analyze academic papers and extract their core value
Project description
Paper Fluff Cutter
A CLI tool that cuts through academic paper fluff to extract what actually matters.
Most research has close to zero value. This tool uses multimodal LLMs to analyze papers and answer the three questions every paper should be able to answer:
- Why should I care? - What problem does this address and why does it matter?
- What's the actual innovation? - What's the core idea in plain terms?
- Is the evidence convincing? - Do the experiments actually support the claims?
Installation
pip install fluff-cutter
Requires Python 3.10+.
Development install
git clone https://github.com/weijianzhg/paper-fluff-cutter.git
cd paper-fluff-cutter
pip install -e .
Configuration
Option 1: Interactive setup (recommended)
fluff-cutter init
This will prompt you for your API keys, default provider, and model preferences, then save them to ~/.fluff-cutter/config.yaml.
Option 2: Environment variables
export OPENAI_API_KEY=sk-your-key-here
export ANTHROPIC_API_KEY=sk-ant-your-key-here
export OPENROUTER_API_KEY=sk-or-your-key-here
export FLUFF_CUTTER_PROVIDER=anthropic # optional, default provider
export FLUFF_CUTTER_OPENAI_MODEL=gpt-5.2 # optional, override default model
export FLUFF_CUTTER_ANTHROPIC_MODEL=claude-sonnet-4-5 # optional, override default model
export FLUFF_CUTTER_OPENROUTER_MODEL=anthropic/claude-sonnet-4-5 # optional, override default model
Usage
Basic usage
fluff-cutter analyze paper.pdf
By default, the analysis is saved to a .md file with the same name as the input (e.g., paper.pdf → paper.md).
Analyze from URL
You can pass a URL directly instead of a local file. The PDF will be downloaded to the current directory and then analyzed:
fluff-cutter analyze https://arxiv.org/pdf/2411.19870
Arxiv abstract URLs (/abs/) are automatically converted to PDF URLs. If the PDF has already been downloaded, it will be reused without re-downloading.
Specify output file
fluff-cutter analyze paper.pdf --output analysis.md
Print to stdout
fluff-cutter analyze paper.pdf --print
Specify provider
fluff-cutter analyze paper.pdf --provider openai
fluff-cutter analyze paper.pdf --provider anthropic
fluff-cutter analyze paper.pdf --provider openrouter
Specify model
fluff-cutter analyze paper.pdf --provider openai --model gpt-5.2
fluff-cutter analyze paper.pdf --provider anthropic --model claude-sonnet-4-5
fluff-cutter analyze paper.pdf --provider openrouter --model google/gemini-2.5-pro
Long papers
For very long papers that exceed the model's token limit, you can limit the number of pages:
fluff-cutter analyze paper.pdf --max-pages 30
If you don't specify --max-pages and the paper exceeds the token limit, it will automatically truncate to the first 50 pages and retry.
Supported Providers
| Provider | Default Model | Environment Variable | Notes |
|---|---|---|---|
| OpenAI | gpt-5.2 | OPENAI_API_KEY |
Native PDF support |
| Anthropic | claude-sonnet-4-5 | ANTHROPIC_API_KEY |
Native PDF support |
| OpenRouter | anthropic/claude-sonnet-4-5 | OPENROUTER_API_KEY |
Access to 300+ models |
All providers support PDF input natively - no external dependencies like poppler needed.
Configuration Precedence
Configuration is loaded with the following precedence (highest to lowest):
- Command-line arguments (
--provider,--model) - Environment variables (
FLUFF_CUTTER_PROVIDER,FLUFF_CUTTER_*_MODEL) - Config file (
~/.fluff-cutter/config.yaml) - Provider defaults
License
MIT
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 fluff_cutter-0.4.0.tar.gz.
File metadata
- Download URL: fluff_cutter-0.4.0.tar.gz
- Upload date:
- Size: 20.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
998cd0cf2134a81f1d9b2aa4810bba60277176c531135014b7caef6918392ba8
|
|
| MD5 |
3f314343d356c6e050ddddbc98e3e312
|
|
| BLAKE2b-256 |
9bd7cdb3568321413f459b9434c87dec8a84588c33a5334a558da550a2997a91
|
Provenance
The following attestation bundles were made for fluff_cutter-0.4.0.tar.gz:
Publisher:
publish.yml on weijianzhg/paper-fluff-cutter
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
fluff_cutter-0.4.0.tar.gz -
Subject digest:
998cd0cf2134a81f1d9b2aa4810bba60277176c531135014b7caef6918392ba8 - Sigstore transparency entry: 939920636
- Sigstore integration time:
-
Permalink:
weijianzhg/paper-fluff-cutter@67de7a5977ead2629f2bcfc4cc0fb3fa986aa348 -
Branch / Tag:
refs/tags/v0.4.0 - Owner: https://github.com/weijianzhg
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@67de7a5977ead2629f2bcfc4cc0fb3fa986aa348 -
Trigger Event:
push
-
Statement type:
File details
Details for the file fluff_cutter-0.4.0-py3-none-any.whl.
File metadata
- Download URL: fluff_cutter-0.4.0-py3-none-any.whl
- Upload date:
- Size: 17.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
00056d5be283325b245f6cb6da37b97a07715b9b446b305509c5421a5f45ce83
|
|
| MD5 |
efc269cb90fe1c26423325aed3415080
|
|
| BLAKE2b-256 |
36a8e8a140340db9474fad408496bb16fbf7b0f3a34b1e46e83452502c7617be
|
Provenance
The following attestation bundles were made for fluff_cutter-0.4.0-py3-none-any.whl:
Publisher:
publish.yml on weijianzhg/paper-fluff-cutter
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
fluff_cutter-0.4.0-py3-none-any.whl -
Subject digest:
00056d5be283325b245f6cb6da37b97a07715b9b446b305509c5421a5f45ce83 - Sigstore transparency entry: 939920678
- Sigstore integration time:
-
Permalink:
weijianzhg/paper-fluff-cutter@67de7a5977ead2629f2bcfc4cc0fb3fa986aa348 -
Branch / Tag:
refs/tags/v0.4.0 - Owner: https://github.com/weijianzhg
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@67de7a5977ead2629f2bcfc4cc0fb3fa986aa348 -
Trigger Event:
push
-
Statement type: