Он превращает целый сайт в один запускаемый файл — а спорят про README
Наведите Kage на сайт — headless Chrome отрендерит каждую страницу, вырежет весь JavaScript и упакует всё в один исполняемый файл, который запускаешь офлайн двойным кликом. Полтреда спорило, означает ли README, написанный ИИ, что и код такой же.
Kage запускает headless Chrome, рендерит страницу так, как её видит человек, снимает устоявшийся DOM, удаляет все скрипты, скачивает CSS, картинки и шрифты локально, а затем собирает зеркало в отдельный бинарник или ZIM-архив.
Первый же ответ указал на SingleFile, который пакует страницу в один самодостаточный HTML-файл без всякого сервера. Безопасник заметил, что Chrome запущен с --no-sandbox; другие назвали README мусором от ИИ и решили, что код такой же.
Сайт, который можно отправить письмом одним файлом — без всяких скриптов

Kage (404 голоса, 91 комментарий) — инструмент на Go, который делает то, чего не может wget --mirror: архивирует сайты, рендерящиеся только через JavaScript. Конвейер продуман. Headless Chrome грузит страницу и ждёт, пока та устаканится, DOM снимается таким, каким его увидел бы человек, затем вырезаются все скрипты, а CSS, картинки и шрифты скачиваются в локальные пути с переписанными ссылками. kage clone <url> обходит сайт с лимитами по глубине и числу страниц; kage serve поднимает локальный HTTP-сервер над папкой; kage pack сжимает зеркало в ZIM-архив (читается через Kiwix) или в самодостаточный бинарник, который отдаёт сайт без зависимостей.
Позиционирование — чтение офлайн: клонируй paulgraham.com и возьми его с собой в самолёт. Эта рамка и завела весь тред в спор: новое ли это, безопасно ли и место ли сайту вообще внутри исполняемого файла.
«Это разве не просто wget, SingleFile или curl?»
Сравнения посыпались сразу. Верхний ответ выдвинул альтернативу поострее:
«SingleFile кажется мне куда более надёжной версией этого. Он тоже вырезает весь JavaScript, но ещё и пакует всё в один HTML-файл… Бинарные ресурсы… упаковываются как строки base64». — комментатор, указавший на gildas-lormeau/SingleFile
Другие тянулись за более старыми инструментами: httrack, pandoc-to-EPUB для читалок, wget --mirror. Один ответ был просто «curl это умеет». README самого автора заранее оговаривает разрыв с JavaScript, а rahimnathwani (15k кармы) выдал самое чистое однострочное резюме того, в чём Kage реально отличается:
«То есть это как wget --mirror, только работает на страницах, которым нужен javascript, верно?»
Вот настоящее отличие. wget копирует байты; Kage сначала прогоняет страницу, а потом замораживает результат.
Повторяющийся вопрос: зачем статичному зеркалу сервер?
Несколько читателей споткнулись об одно и то же. Если на выходе статика, зачем kage serve, а не просто открыть файл?
«Если результат статичный, зачем ему сервер? Нельзя ли сделать так, чтобы файл просто открывался в браузере?» — комментатор, которому нужна работа на машинах без установленного kage
Основатель стартапа поддержал желание иметь бессерверную прослойку — «единую HTML-точку входа… которая индексировала бы архив контента сайта». Упаковка «сайт как бинарник» вызвала открытую враждебность из одного угла: «Никто и никогда не захочет запускать бинарник, которым с ним поделились или который он нашёл в сети». Пользователь Windows подтвердил трение на практике — Windows Security пометила вложенный leakless.exe как вирус.
Безопасник ловит --no-sandbox
Самое полезное техническое замечание пришло от основателя швейцарской security-фирмы:
«вы запускаете Chrome с --no-sandbox. Есть ли для этого веская причина? С точки зрения безопасности это, пожалуй, плохая идея». — dimiprasakis, основатель Minoan Security
Один из основателей чехословацкого архива видеоигр хотел противоположной крайности — архивной точности: спарить Kage с mitmproxy, чтобы рядом с отрендеренным видом сохранять ровно те байты, что отдал сервер, как замену WARC. А Simon Willison полез копаться в репозитории и обнаружил, что демо-GIF из README сгенерирован ещё одним проектом автора — обёрткой ascii-gif вокруг charmbracelet/vhs.
README стал приговором коду
Самый острый разворот не имел отношения к обходу сайтов. Несколько читателей с высокой кармой отказались оценивать инструмент по существу из-за того, как читается его README:
«README — это ИИ-мусор, читать его невыносимо. Отвращение, которое я ощутил при чтении, едва не отбило у меня желание пробовать проект. Код тоже ИИ-мусор?» — комментатор о тоне README
«README — мусор от LLM. Из-за этого я предполагаю, что и код такой же». — sneak, 25k кармы
Вот тихий урок. По-настоящему толковый инструмент — архивирование «отрендерь, потом заморозь», которого wget не умеет, — потратил изрядную часть своего топ-треда на вопрос, отравляет ли доверие ко всему проекту README, написанный машиной. Краулер тут лёгкая часть. В 2026 году README стал поверхностью доверия, и инструмент, вытянувший трудную инженерию, всё равно может проиграть зал на прозе.
Получайте такие разборы каждый день
Главные истории Hacker News — на email, в Telegram или RSS.
Соло-разработчик сделал ER-диаграммы, не отправляющие SQL никуда — а инженер сказал, что это не ER
Вставьте свои CREATE TABLE, растащите таблицы, переименуйте колонку — и SQL переписывается сам, всё в браузере, ничего не загружается на сервер. Старший дата-инженер вежливо заметил: из одного SQL настоящую ER-диаграмму получить нельзя.