Skip to main content
Glama
rohangawhade

overleaf-resume

by rohangawhade

Overleaf Resume

Редактируйте и компилируйте свои резюме локально, а не на сайте Overleaf, с помощью MCP-сервера, который синхронизирует исходные файлы с Overleaf при необходимости. Работает с любым количеством проектов Overleaf бок о бок — каждый инструмент синхронизации принимает явный project_id, так что ничего не привязано к одному «единственному» проекту.

Создано для бесплатных аккаунтов Overleaf (без доступа к Git/API). Если ваш аккаунт имеет интеграцию с Git (платный план), просто git clone ваш проект — этот инструмент вам не нужен.

Как это работает

  • Ежедневное редактирование: после того как проект загружен (см. ниже), редактируйте его .tex-файл напрямую в projects/<name>/, затем компилируйте локально с помощью Tectonic — без обращения к Overleaf:

    tools/tectonic.exe projects/<name>/<main file>.tex

    Это создаёт PDF-файл рядом с ним. (tools/tectonic.exe — это автономный бинарник, уже настроенный в этом репозитории — он в gitignore, так как это большой загруженный бинарник, а не исходный код.)

  • Синхронизация с Overleaf: поскольку это бесплатный аккаунт Overleaf (без доступа к Git/API), MCP-сервер (overleaf_mcp/) управляет реальным, авторизованным сеансом Chromium с помощью Playwright, чтобы загружать исходники проекта и отправлять правки обратно в его онлайн-редактор — те же действия, которые вы бы выполняли вручную в браузере.

Related MCP server: LaTeX Resume MCP

Структура проекта

Каждый загруженный проект Overleaf попадает в свою собственную подпапку, поэтому несколько резюме могут сосуществовать без конфликтов:

projects/
  <your-project-name>/
    resume.tex (or whatever the project's main file is named)
    ...other pulled files (.cls, .sty, images)
    .backups/            # timestamped backups made before each re-pull
  <another-project-name>/
    ...

projects/ находится в gitignore — там хранится ваше реальное содержимое резюме (загруженное из Overleaf), поэтому оно остаётся локальным и никогда не попадает в коммиты.

Одноразовая настройка

Шаги 1–2 уже выполнены в этом репозитории (в .venv/ установлены зависимости и загружен браузер Chromium для Playwright; tools/tectonic.exe готов к использованию). Они перечислены здесь на случай, если вам нужно повторить их на другой машине или после чистой проверки.

  1. Создайте виртуальное окружение и установите зависимости:

    python -m venv .venv
    .venv\Scripts\activate
    pip install -r requirements.txt
    playwright install chromium
  2. Получите Tectonic: winget/choco могут требовать права администратора, которые не всегда доступны. Надёжный вариант без администратора — скачать бинарник для Windows напрямую и поместить его в tools/:

    gh release download tectonic@0.17.0 --repo tectonic-typesetting/tectonic \
      --pattern "tectonic-0.17.0-x86_64-pc-windows-msvc.zip" --dir tools
    # then unzip it so tools/tectonic.exe exists

    Проверьте с помощью tools/tectonic.exe --version.

  3. Войдите в Overleaf один раз, чтобы MCP-сервер мог повторно использовать сеанс:

    .venv/Scripts/python.exe scripts/overleaf_login.py

    Откроется окно браузера со страницей входа в Overleaf. Войдите с помощью email + пароля, а не «Войти через Google» — Google блокирует свою форму входа в любом автоматизированном браузере, поэтому для аккаунтов, использующих только Google, сначала нужно установить пароль в Overleaf (Account Settings). Затем сеанс сохраняется в .auth/storage_state.json (в gitignore — никогда не коммитьте и не делитесь им). Повторно запускайте этот скрипт, когда overleaf_login_status сообщает, что сеанс истёк.

  4. В этом репозитории .mcp.json автоматически регистрирует сервер в Claude Code. Перезапустите Claude Code (или выполните /mcp), чтобы он подхватил сервер overleaf-resume.

  5. Вызовите overleaf_list_projects, чтобы увидеть все ваши проекты Overleaf и их идентификаторы, затем overleaf_pull(project_id) для тех, с которыми вы хотите работать. Файлы попадают в projects/<name>/.

Инструменты MCP

  • overleaf_login_status — проверяет, действителен ли сохранённый сеанс.

  • overleaf_list_projects — список всех проектов Overleaf (имя + id).

  • overleaf_pull(project_id, local_dir?) — загружает исходники этого проекта в projects/<name>/ (или в local_dir, если указан), создавая резервные копии любых существующих файлов .tex/.cls/.sty/.bib в .backups/ перед этим.

  • overleaf_push(project_id, file_path) — отправляет текущее содержимое локального файла обратно в онлайн-редактор этого проекта Overleaf. file_path указывается относительно корня репозитория, например projects/<your-project-name>/resume.tex.

project_id всегда обязателен — нет единого проекта по умолчанию, поэтому это работает одинаково, есть ли у вас одно резюме или несколько. Используйте overleaf_list_projects, когда нужно найти нужный.

Устранение неполадок локальной компиляции

Overleaf по умолчанию компилирует с помощью pdfLaTeX; Tectonic использует движок на основе XeTeX. Две проблемы, которые это выявило на популярных шаблонах в стиле "Jake's Resume", на случай, если вы тоже с ними столкнётесь:

  • \pdfglyphtounicode / \input{glyphtounicode} / \pdfgentounicode=1 — это примитивы только для pdfTeX. Заключите их в условия, чтобы оба движка работали:

    \usepackage{iftex}
    \ifPDFTeX
      \input{glyphtounicode}
    \fi
    ...
    \ifPDFTeX
      \pdfgentounicode=1
    \fi
  • Пары \begin{itemize}...\end{itemize} из enumitem (через макросы \resumeSubHeadingListStart/End этого шаблона) должны оставаться сбалансированными даже в закомментированных секциях — случайный, несопоставленный \end{itemize}, оставшийся после комментирования блока, приводит к загадочной Undefined control sequence глубоко внутри внутренностей enumitem (\enit@enditemize). Это не различие Tectonic/Overleaf — это вызовет ошибку и на собственном компиляторе Overleaf, если посмотреть на количество ошибок.

Предостережения

  • Этот инструмент автоматизирует реальный веб-интерфейс Overleaf с вашим собственным авторизованным сеансом — для бесплатных проектов нет публичного API. Он может сломаться, если Overleaf изменит свой интерфейс, а сохранённый сеанс иногда истекает (повторно запустите scripts/overleaf_login.py).

  • Первая компиляция tectonic требует доступа к сети для загрузки пакетов LaTeX; последующие компиляции кэшируются и работают офлайн.

  • .auth/storage_state.json содержит живые куки сеанса — держите его вне системы контроля версий.

Maintenance

ActivityStale
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers