Export comment threads and tracked changes from an Overleaf project to Markdown + JSON, optimized for AI-agent consumption.
Project description
overleaf-comments-export
⚠️ Unofficial tool. This is a third-party utility that talks to Overleaf's undocumented internal HTTP endpoints. It is not affiliated with or endorsed by Overleaf. Endpoints may change without notice. Use at your own risk and in accordance with Overleaf's Terms of Service.
Export the comment threads and tracked changes from an Overleaf project into clean Markdown + structured JSON — designed so an AI assistant (Claude, ChatGPT, etc.) can ingest reviewer feedback and help you address it.
Why
Overleaf doesn't provide a way to export comments or tracked changes for use outside the editor. If you want to:
- have an AI agent draft point-by-point replies to reviewers,
- archive reviewer discussions outside of Overleaf,
- batch-address feedback across a large paper, or
- split feedback by reviewer to delegate work,
… you currently have to copy comments by hand. This tool automates that, given an Overleaf project URL and a logged-in browser session.
Install
pip install overleaf-comments-export
Requires Python 3.10+. Works on macOS, Linux, and Windows.
Quick start
CLI
overleaf-comments-export \
--project-url https://www.overleaf.com/project/<24-hex-id> \
--out ./paper-comments \
--browser safari
The first time you run it, sign in to Overleaf in your browser of choice; the tool reads the session cookie from there.
GUI
overleaf-comments-export --gui
Opens a small Tkinter window with all options surfaced. Best for non-technical users.
What it produces
In your output folder, by default:
| File | Purpose |
|---|---|
comments-<date>.md |
Human-readable Markdown grouped by file → section → line, with stable IDs (C001, C002, …) and source-context snippets around each anchor. |
comments.json |
Structured data — summary, top-level threads, files, comments, tracked_changes, etc. Schema described in agents.md. |
comments.jsonl |
One self-contained JSON record per comment for streaming/pipelines. |
agents.md |
A brief instruction file telling an AI agent how to consume the batch. |
by-reviewer/<name>.md |
(Optional, --per-reviewer) One Markdown per reviewer with only their threads. |
comments.log |
Diagnostic log for the run. |
Filtering
# Only open comments
overleaf-comments-export --project-url … --out ./out --no-resolved
# Only one reviewer's threads
overleaf-comments-export --project-url … --out ./out --reviewer "Emma"
# Compact (default) vs. detailed (multi-line code-fence) layout
overleaf-comments-export --project-url … --out ./out --render-mode detailed
# Per-reviewer sub-reports under ./out/by-reviewer/
overleaf-comments-export --project-url … --out ./out --per-reviewer
Full flag reference: overleaf-comments-export --help.
Browser authentication
The tool reads the overleaf_session2 cookie from your browser. Trade-offs
by browser on macOS:
| Browser | Notes |
|---|---|
| Safari | Recommended. No Keychain prompt; macOS may ask once for permission to read ~/Library/Cookies/. |
| Firefox | No Keychain prompt; plain SQLite cookie store. |
| Chrome / Edge / Brave | Cookies are AES-encrypted with a Keychain-stored key; you'll get a Keychain password prompt every run. Hidden behind an opt-in in the GUI. |
On Windows, Chrome 127+ uses App-Bound Encryption that browser-cookie3
doesn't fully decrypt yet — prefer Firefox or Edge on Windows.
On Linux, snap-packaged browsers sandbox their cookies — install browsers as native packages if you can.
Status & maintenance
This is a personal research utility published in case it's useful to others. It is provided as-is, with no guaranteed maintenance, no SLA, and no roadmap. Pull requests are welcome; issues may or may not be acted upon.
If Overleaf changes their internal API, this tool may stop working until someone (you?) adapts it.
License
MIT — see 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 overleaf_comments_export-0.2.0.tar.gz.
File metadata
- Download URL: overleaf_comments_export-0.2.0.tar.gz
- Upload date:
- Size: 38.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7b6e93e95a441ed4ea99299dd008b46ca48a4093fc31e55a77f8ed052ee6f82d
|
|
| MD5 |
ab3c6fc0728ccc32d182024c38c29752
|
|
| BLAKE2b-256 |
c06cfbdbb553d6dbaa50f1a006f6be0858214008fc196ce51d684d01ec66449d
|
Provenance
The following attestation bundles were made for overleaf_comments_export-0.2.0.tar.gz:
Publisher:
publish.yml on Mangluu/overleaf-comments-export
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
overleaf_comments_export-0.2.0.tar.gz -
Subject digest:
7b6e93e95a441ed4ea99299dd008b46ca48a4093fc31e55a77f8ed052ee6f82d - Sigstore transparency entry: 1563621946
- Sigstore integration time:
-
Permalink:
Mangluu/overleaf-comments-export@bffe699572f26f03705cf5d78f68fc2c8905d838 -
Branch / Tag:
refs/tags/v0.2.0 - Owner: https://github.com/Mangluu
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@bffe699572f26f03705cf5d78f68fc2c8905d838 -
Trigger Event:
release
-
Statement type:
File details
Details for the file overleaf_comments_export-0.2.0-py3-none-any.whl.
File metadata
- Download URL: overleaf_comments_export-0.2.0-py3-none-any.whl
- Upload date:
- Size: 35.1 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 |
f303136997b0d7d2b45cd96c8edf5a514b0529247e7d9130a44ff955cfff1c19
|
|
| MD5 |
e449cbd153263c64fabf34425d03aad7
|
|
| BLAKE2b-256 |
2aff267580ae2b094cdcf0429ede4c91201872a51fe6be1e319f2d18439add69
|
Provenance
The following attestation bundles were made for overleaf_comments_export-0.2.0-py3-none-any.whl:
Publisher:
publish.yml on Mangluu/overleaf-comments-export
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
overleaf_comments_export-0.2.0-py3-none-any.whl -
Subject digest:
f303136997b0d7d2b45cd96c8edf5a514b0529247e7d9130a44ff955cfff1c19 - Sigstore transparency entry: 1563621959
- Sigstore integration time:
-
Permalink:
Mangluu/overleaf-comments-export@bffe699572f26f03705cf5d78f68fc2c8905d838 -
Branch / Tag:
refs/tags/v0.2.0 - Owner: https://github.com/Mangluu
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@bffe699572f26f03705cf5d78f68fc2c8905d838 -
Trigger Event:
release
-
Statement type: