PaperPush: Automated manuscript submission to journals, conferences, and preprint servers
Prepare manuscripts for submission to preprint servers, venues, and conferences with just a few commands. No need to spend hours filling out forms manually. Just provide a manuscript directory and submission venue of interest, and paperpush will fill out the submission portal for you.
Install
pip install paperpush
To install the playwright dependency and the required chromium browser, run:
playwright install chromium
Use with AI
git clone https://github.com/paperpush/paperpush.git
cd paperpush
Prepare my manuscript in /PATH/TO/MANUSCRIPT/DIRECTORY for submission to VENUE with PaperPush.
The Claude skill /paperpush-prepare-submission helps with this.
See docs/example-session.md for a full worked example of this flow.
MCP server
To drive paperpush from any MCP client — Claude Desktop, an IDE extension — run it as an MCP server:
pip install 'paperpush[mcp]'
{
"mcpServers": {
"paperpush": {
"command": "paperpush-mcp"
}
}
}
The server exposes the whole pipeline as tools. See AGENTS.md for
the tool list and the contract agents should follow.
Quickstart
paperpush subfile VENUE: creates a file VENUE.sub that is a template for the VENUE submission.- fill out VENUE.sub - 3 options:
- a. fill out manually
- b. Ask an LLM: Use Claude skill
/paperpush-autofill, or any AI agent followingAGENTS.md. - c.
paperpush autofill -d /PATH/TO/MANUSCRIPT/DIRECTORY --engine api VENUE.sub: Use an LLM API. Requires an API key.
paperpush validate VENUE.sub: run the pre-submission checks on the filledVENUE.sub, including the manuscript against the venue's author guidelines (paperpush requirements VENUEprints those; a.texmanuscript is compiled withlatexmk/pdflatex, if installed, to check its page count).paperpush login VENUE: log in to the VENUE submission portal.paperpush submit VENUE.sub: Fill out the VENUE submission portal. Will not actually submit the manuscript. We highly recommend reviewing the submission form in the venue portal before clicking submit.
Helper commands:
paperpush requirements VENUE: print VENUE's author guidelines, if available.paperpush options VENUE.FIELD: print the allowed values for FIELD in VENUE's submission form.
See the YouTube tutorial PaperPush Tutorial
Run the whole pipeline at once
scripts/paperpush_pipeline.py sequentially runs the commands above — subfile, autofill, validate, login, submit. This allows going from a manuscript directory to a filled submission portal in just one command.
python scripts/paperpush_pipeline.py -d /PATH/TO/MANUSCRIPT/DIRECTORY --engine api VENUE
See python scripts/paperpush_pipeline.py --help for the full list of options, grouped by step.
Supported venues
Preprint servers: arXiv, bioRxiv, medRxiv
Journals: Bioinformatics, BMC Bioinformatics, Cell, Cell Genomics, Cell Systems, Combinatorica, Discrete Mathematics, Genome Biology, Nature, Nature Biotechnology, Nature Methods, Nucleic Acids Research, PLOS Computational Biology, Science, Science Advances, Science Immunology, Science Robotics, Science Signaling, Science Translational Medicine
Conferences: ICLR 2027
View the list on the command line with paperpush --venues.
For more details, see venues.md
Documentation
Adding new venues
See CONTRIBUTING.md for instructions on adding new venues. See DEVELOPMENT.md for tips on adding new venues and running unit tests.
Each venue has a submission-form entry in paperpush/venues.json (the fields the portal asks for) and, optionally, a manuscript-requirements entry in paperpush/manuscript_requirements.json (what the venue's author guidelines demand of the manuscript: file formats and sizes, word/page limits, required sections and statements, title-page items, figure resolution and dimensions, reference rules). Both use a shared vocabulary across venues, each has a generated JSON schema, and paperpush validate checks a .sub against both (a venue without a requirements entry gets only the form checks).
For AI agents
If you are an AI agent asked to submit a manuscript on the user's behalf, read
AGENTS.md — or, if you are working from a pip install rather
than a clone of this repo, run paperpush --agent-guide, which prints the same
document from the copy that shipped with the installed version. It describes how to run the full pipeline while doing
your own field extraction (reading the manuscript and writing a
values.json for the default --engine manual) rather than relying on the
API-backed engine. It also asks the agent to check paperpush login --list
before it starts, and to tell you right away if you still need to run
paperpush login <venue> yourself — that sign-in is interactive and belongs in
your terminal. Claude Code should prefer the /paperpush-prepare-submission
and /paperpush-autofill skills, which encode the same contract.
License
This project is licensed under the BSD-2 License - see the LICENSE file for details.
Developed by Joe Rich
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 paperpush-0.2.0.tar.gz.
File metadata
- Download URL: paperpush-0.2.0.tar.gz
- Upload date:
- Size: 715.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.1.0 CPython/3.10.16
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6e573b91d21bddc558101e4f3ec5faa091c23e9fcae71e2fc4aa26ce367451fd
|
|
| MD5 |
a046765b56f204ec6312fb329689f371
|
|
| BLAKE2b-256 |
57c4ca501611ee161e6fa66f30e0b14e70c51eb981cdc5225b3c65d1cee7800e
|
File details
Details for the file paperpush-0.2.0-py3-none-any.whl.
File metadata
- Download URL: paperpush-0.2.0-py3-none-any.whl
- Upload date:
- Size: 722.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.1.0 CPython/3.10.16
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4e5a458b4bd9da75be1e8d0193bd0ffb32b5ec73f14c46851003e13662b2fad3
|
|
| MD5 |
5aed9c0282da1dab1e2e5a1e50395775
|
|
| BLAKE2b-256 |
d1956a7dd22febea400db330107fb0e524ee5cf828457ff2903bbdabad1eebf9
|