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 three questions:
- 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?
Acknowledgement: the design of the fluff-cutter wiki is inspired by Andrej Karpathy's gist on LLM Wiki: https://gist.github.com/karpathy/442a6bf555914893e9891c11519de94f
Quick Start
pip install fluff-cutter
fluff-cutter init # set up API keys and defaults
fluff-cutter analyze paper.pdf
Requires Python 3.10+.
Usage
# Local file
fluff-cutter analyze paper.pdf
# URL (arxiv /abs/ links are auto-converted to PDF)
fluff-cutter analyze https://arxiv.org/pdf/2411.19870
# Options
fluff-cutter analyze paper.pdf --output analysis.md # custom output path
fluff-cutter analyze paper.pdf --print # stdout only, no file
fluff-cutter analyze paper.pdf --provider openai # openai, anthropic, openrouter
fluff-cutter analyze paper.pdf --model gpt-5.2 # override default model
fluff-cutter analyze paper.pdf --max-pages 30 # limit pages for long papers
Wiki workflow
For persistent research tracking, you can keep a markdown wiki alongside the raw PDFs:
# Create a wiki project
fluff-cutter wiki init ./research-wiki
# `wiki init` saves this as your default wiki root, so later commands work
# from anywhere unless you explicitly override with --root
fluff-cutter wiki add https://arxiv.org/pdf/2411.19870
# Inspect the wiki
fluff-cutter wiki ls
fluff-cutter wiki status
fluff-cutter wiki query "agents planning"
# Maintenance
fluff-cutter wiki rebuild --root ./research-wiki
fluff-cutter wiki doctor --root ./research-wiki
fluff-cutter wiki remove paper-slug --root ./research-wiki --delete-pdf
The wiki layout looks like this:
research-wiki/
├── fluff-cutter.yaml
├── raw/
│ └── pdfs/
└── wiki/
├── papers/
├── topics/
├── concepts/
├── queries/
├── index.md
├── overview.md
└── log.md
By default, results are printed to the terminal and saved as a .md file next to the input PDF.
Model output streams live during analysis (provider-side streaming), so you see tokens immediately instead of waiting for full completion.
Supported Providers
| Provider | Default Model | Env Variable |
|---|---|---|
| OpenAI | gpt-5.2 | OPENAI_API_KEY |
| Anthropic | claude-sonnet-4-5 | ANTHROPIC_API_KEY |
| OpenRouter | anthropic/claude-sonnet-4-5 | OPENROUTER_API_KEY |
All providers support native PDF input -- no external dependencies like poppler needed.
Configuration
Run fluff-cutter init for interactive setup, or set environment variables directly:
export OPENAI_API_KEY=sk-your-key-here
export FLUFF_CUTTER_PROVIDER=anthropic # default provider
export FLUFF_CUTTER_ANTHROPIC_MODEL=claude-sonnet-4-5 # override model
Config is read in this order (highest priority first): CLI flags, env variables, ~/.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.5.1.tar.gz.
File metadata
- Download URL: fluff_cutter-0.5.1.tar.gz
- Upload date:
- Size: 30.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 |
d593dfffd3325627cf783ba48ac8d92d28aa4553d496a1f6ca8b5e63743a318b
|
|
| MD5 |
6dfdd51091c8b278b6a0efb080e5bbe8
|
|
| BLAKE2b-256 |
590064cd941c9ef9efd61efe3bab7fab1ffc63d871623e8950d6b8ff9da6428b
|
Provenance
The following attestation bundles were made for fluff_cutter-0.5.1.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.5.1.tar.gz -
Subject digest:
d593dfffd3325627cf783ba48ac8d92d28aa4553d496a1f6ca8b5e63743a318b - Sigstore transparency entry: 1340672823
- Sigstore integration time:
-
Permalink:
weijianzhg/paper-fluff-cutter@8e73d95d2afb0f2efd1c732316200e3792765c09 -
Branch / Tag:
refs/tags/v0.5.1 - Owner: https://github.com/weijianzhg
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@8e73d95d2afb0f2efd1c732316200e3792765c09 -
Trigger Event:
push
-
Statement type:
File details
Details for the file fluff_cutter-0.5.1-py3-none-any.whl.
File metadata
- Download URL: fluff_cutter-0.5.1-py3-none-any.whl
- Upload date:
- Size: 23.6 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 |
cf7d2c653c5f88a48317a71f1e7e92c53386976f3d1e17c0b5e87de0d6257b01
|
|
| MD5 |
410496c1d3bbf017bd4256110a6570c2
|
|
| BLAKE2b-256 |
1e24a43ac7f17b8b6a6ad520a1665bca921bec731926e5b9d8d9da7354041ca4
|
Provenance
The following attestation bundles were made for fluff_cutter-0.5.1-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.5.1-py3-none-any.whl -
Subject digest:
cf7d2c653c5f88a48317a71f1e7e92c53386976f3d1e17c0b5e87de0d6257b01 - Sigstore transparency entry: 1340672826
- Sigstore integration time:
-
Permalink:
weijianzhg/paper-fluff-cutter@8e73d95d2afb0f2efd1c732316200e3792765c09 -
Branch / Tag:
refs/tags/v0.5.1 - Owner: https://github.com/weijianzhg
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@8e73d95d2afb0f2efd1c732316200e3792765c09 -
Trigger Event:
push
-
Statement type: