Extract OpenReview Comments
A Python command-line tool to extract OpenReview comments for a paper into markdown format for easy copy/pasting when writing rebuttals.
Features
- 📥 Extract all comments and reviews from any OpenReview forum
- 📝 Format comments as clean, readable Markdown
- 🔐 Support for both public and private content (with authentication)
- 📁 Save to a single file or split into separate files per comment
- 🔄 Preserves reply threads and nested discussions
- ⚡ Fast and easy to use
Installation
pip install extract-openreview-comments
Usage
Basic Usage
Extract comments from a public OpenReview forum:
extract-openreview-comments <forum_id>
This will save all comments to comments.md in the current directory.
With Authentication
For private content or to access additional information:
extract-openreview-comments <forum_id> -u your_email@example.com -p your_password
Save to Custom File
extract-openreview-comments <forum_id> -o my_reviews.md
Split into Separate Files
Save each comment to a separate file in a directory:
extract-openreview-comments <forum_id> --separate-files -d output_directory/
Finding the Forum ID
The forum ID is the unique identifier for a paper on OpenReview. You can find it in the URL:
https://openreview.net/forum?id=FORUM_ID_HERE
For example, in https://openreview.net/forum?id=rJXMpikCZ, the forum ID is rJXMpikCZ.
Command-Line Options
Usage: extract-openreview-comments [OPTIONS] FORUM_ID
Options:
-u, --username TEXT OpenReview username (optional for public content)
-p, --password TEXT OpenReview password (optional for public content)
-o, --output PATH Output file path (default: comments.md)
-s, --separate-files Save each comment to a separate file
-d, --output-dir PATH Output directory for separate files (default: comments/)
--baseurl TEXT OpenReview API base URL (default: https://api2.openreview.net)
--help Show this message and exit.
Output Format
The tool generates well-formatted Markdown with:
- Comment metadata (author, date)
- Review content (summary, strengths, weaknesses, questions)
- Ratings and confidence scores
- Nested reply threads
- Clear section separators
Example output:
# Paper Title
**Total Comments:** 5
---
## Comment by Reviewer_ABC
**Date:** 2024-01-15 10:30:00
**Review:**
This paper presents an interesting approach to...
**Rating:** 8: Top 50% of accepted papers
**Confidence:** 4: High
### Replies:
## Comment by Authors
**Date:** 2024-01-20 14:00:00
**Response:**
We thank the reviewer for their feedback...
---
Development
Running Tests
uv run pytest
Linting and Formatting
uv run ruff check .
uv run ruff format .
Type Checking
uv run pyright
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
License
This project is licensed under the MIT License - see the LICENSE file for details.
Acknowledgments
- Built using the OpenReview Python API
- CLI powered by Click
- Built using Claude Code
Links
Metadata
Release files for extract-openreview-comments 0.2.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| extract_openreview_comments-0.2.1.tar.gz | 15.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| extract_openreview_comments-0.2.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 25.6 kB
Release files / extract_openreview_comments-0.2.1.tar.gz
| Download URL | extract_openreview_comments-0.2.1.tar.gz |
|---|---|
| Size | 15.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
e9ced4223f457570a564157d733551f721dc39a9544fa6bad66b30e974af94c3
|
|
BLAKE2b-256 checksum How to use checksums |
c9968911e84f6294c34c1eb44bf819f541faccd720e35a0c62ab75c94bbe7c93
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Mar 24, 2026.
Transparency logRelease files / extract_openreview_comments-0.2.1-py3-none-any.whl
| Download URL | extract_openreview_comments-0.2.1-py3-none-any.whl |
|---|---|
| Size | 9.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
c9aae3c3f72be052dac1d443d0a2fff714e5acf28235c9662c3a3092a9579d7a
|
|
BLAKE2b-256 checksum How to use checksums |
474dc80bf3fac8b5dce02a5f00ee3c66cd06a6caa8e710fec67dd04d8124ed14
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Mar 24, 2026.
Transparency log