Skip to main content

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.

CI PyPI License: MIT Python 3.10+

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

overleaf_comments_export-0.2.0.tar.gz (38.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

overleaf_comments_export-0.2.0-py3-none-any.whl (35.1 kB view details)

Uploaded Python 3

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

Hashes for overleaf_comments_export-0.2.0.tar.gz
Algorithm Hash digest
SHA256 7b6e93e95a441ed4ea99299dd008b46ca48a4093fc31e55a77f8ed052ee6f82d
MD5 ab3c6fc0728ccc32d182024c38c29752
BLAKE2b-256 c06cfbdbb553d6dbaa50f1a006f6be0858214008fc196ce51d684d01ec66449d

See more details on using hashes here.

Provenance

The following attestation bundles were made for overleaf_comments_export-0.2.0.tar.gz:

Publisher: publish.yml on Mangluu/overleaf-comments-export

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file overleaf_comments_export-0.2.0-py3-none-any.whl.

File metadata

File hashes

Hashes for overleaf_comments_export-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 f303136997b0d7d2b45cd96c8edf5a514b0529247e7d9130a44ff955cfff1c19
MD5 e449cbd153263c64fabf34425d03aad7
BLAKE2b-256 2aff267580ae2b094cdcf0429ede4c91201872a51fe6be1e319f2d18439add69

See more details on using hashes here.

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

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page