AI Vibe Craft
← Назад к AI Vibe News

5 апреля 2026 · Редакция

Разборы

Как accepted-решения с LeetCode уходят в GitHub: self-hosted цепочка с Claude API

Как accepted-решения с LeetCode уходят в GitHub: self-hosted цепочка с Claude API. Автор с ником nathanff на Dev.to описывает проект leetcode-sync: после статуса Accepted решение оформляется для выгрузки в GitHub, а Claude API генерирует текст коммита и «шапку» файла с пояснением подхода и оценкой слож

Автор с ником nathanff на dev.to описывает проект leetcode-sync: после статуса Accepted решение оформляется для выгрузки в GitHub, а Claude API генерирует текст коммита и «шапку» файла с пояснением подхода и оценкой сложности. Материал вышел 4 апреля 2026 года; ниже — сжатое изложение архитектуры по тексту поста, без тем, которые автор там не раскрывал (лицензия, хранение токенов, детальный разбор ToS платформ).

От ручного копирования к автоматизации и ИИ-текстам

В посте боль сформулирована так: после каждой задачи на LeetCode приходилось вручную переносить решение в GitHub — монотонно, повторяемо и легко забыть. Ответ автора в духе оригинала: «So I automated it.»

Заголовок поста связывает автоматический push с сообщениями коммитов, сгенерированными ИИ — это и читательский крючок: речь не только о скриптах, но и о том, как LLM участвует в оформлении истории репозитория.

Цепочка: Tampermonkey, FastAPI, Claude API, GitHub API

По описанию автора, логика выглядит так:

  1. На стороне LeetCode фиксируется момент принятого решения (Accepted).

  2. В браузере работает userscript для Tampermonkey: перехватывается запрос и уходит POST на эндпоинт вида:

    https://your-server.com/leetcode-sync/submit
    
  3. На сервере — FastAPI; в посте указано развёртывание в Docker.

  4. Сервер вызывает Claude API — для заголовка файла (в том числе пояснение алгоритма и time/space complexity) и описательного сообщения коммита.

  5. Далее — GitHub API: выкладка файла и обновление README. Push идёт без локального git на машине пользователя — через API GitHub.

Claude API стоит в центре текстового контура: он формирует коммит-месседжи и структуру шапки решения, а не только копирует код.

Нюанс Chrome Manifest V3 и unsafeWindow

Перехват запросов в браузере — часть того же контура, который дальше сводится к серверу, Claude API и GitHub API. Без стабильного доступа к сетевому слою страницы цепочка от Accepted до сгенерированного коммита не стартует.

Отдельный акцент в посте — ограничения Manifest V3 в Chrome: Tampermonkey не может напрямую подцепиться к window.fetch страницы LeetCode. Обход автора: работа через unsafeWindow, чтобы получить «настоящие» fetch и XMLHttpRequest до того, как их перехватит код платформы. Это не реклама расширения, а конкретика интеграции в браузерный контекст.

Открытый код, self-hosted и граница с внешними сервисами

В блоке «Try it» автор даёт ссылку на репозиторий https://github.com/NathanaelFetue/leetcode-sync и пишет по-английски, что проект fully open source и self-hosted, а «ваш код не проходит через сторонние сервисы», кроме Claude API для генерации текстов.

Автоматизация под вашим контролем, а облачный вызов модели — отдельная, осознанная точка доверия для ИИ-генерации коммитов и комментариев в файлах.

В посте приводятся примеры дерева каталогов, текстов коммитов и многострочной шапки файла с полями вроде Problem, Difficulty, URL, Approach, Time, Space — как иллюстрации, а не как гарантированный вывод для любой задачи.


Чтобы повторить идею у себя, имеет смысл прочитать полный пост и репозиторий: там — инструкции и код; здесь собраны только утверждения, явно следующие из указанных источников.

Источники