kage (影, « ombre ») est un outil en ligne de commande open source (MIT), écrit en Go pur, qui clone un site web entier dans un simple dossier de fichiers .html dont tous les scripts ont été retirés. Il pilote Chrome sans interface graphique page par page, attend que la page se stabilise, capture le DOM rendu, supprime toutes les balises script, les gestionnaires d'événements et les URL javascript:, puis télécharge les CSS, les images et les polices en réécrivant leurs chemins vers des chemins locaux relatifs. Les commandes couvrent clone, serve, pack et open ; un miroir peut être condensé en une archive ZIM (le format ouvert utilisé par Kiwix) ou en un binaire autonome d'environ 13 MiB plus le contenu, qui sert le site hors ligne sans rien installer, avec une compilation de bureau --app en option et une compilation webview qui s'ouvre dans une fenêtre native. Il est distribué sous forme de conteneur ghcr avec Chromium intégré, ainsi que via des paquets Homebrew, Scoop, apt et dnf.

Les utilisateurs veulent des sites entiers, pas des pages isolées : rendre avec Chrome sans interface graphique, capturer le DOM tel qu'un humain le voit, retirer chaque script et conserver le résultat navigable hors ligne.

Duc-Tam Nguyen (tamnd) a créé kage à partir de l'échec bien connu de « Enregistrer sous » : des mois plus tard, une page enregistrée s'ouvre vide, affiche un indicateur de chargement sans fin, ou continue de contacter un serveur d'analyse mort. Il a décrit la page comme n'étant jamais vraiment à vous — un client léger pour le JavaScript de quelqu'un d'autre — et a publié l'outil sur Show HN le 2026-06-14 avec le slogan « Shadow any website to a single binary for offline viewing ».

Le fil a décollé avec 712 points et 141 commentaires. Les commentateurs ont comparé kage à SingleFile et demandé en quoi il différait de « Enregistrer sous » ; Nguyen a précisé que kage met en miroir un site web entier avec toutes ses sous-pages — son exemple était l'ensemble des essais de Paul Graham pour une lecture hors ligne — tandis que SingleFile empaquette une seule page. Il a également mentionné une ambition plus large : construire un « Google from scratch » open source avec des couches de crawler, d'indexation, de stockage et de service. Gigazine a couvert kage en anglais le 2026-07-25, détaillant un clone Docker de gigazine.biz, l'empaquetage ZIM et une visionneuse Windows binaire unique de 24,4 MiB construite à partir de la version 0.3.10.

Au 2026-09-02, kage reste un projet open source indépendant sous licence MIT, sans société ni financement ; le dépôt documente les installations via gestionnaires de paquets, un conteneur avec Chrome intégré et une suite de tests complète incluant des tests de bout en bout pilotés par Chrome, et le site de documentation kage.tamnd.com continue de s'enrichir.

« Enregistrer sous » produit des copies qui contactent encore le réseau ou s'affichent vides lorsque le balisage est construit par JavaScript à l'exécution.

SingleFile a résolu le cas des pages isolées, laissant la mise en miroir de sites entiers — le véritable cas d'usage d'archivage — à des outils moins fidèles.

Chrome sans interface graphique permet au miroir de capturer ce qu'un humain voit avant que tout JavaScript ne soit retiré.

Les formats ouverts tels que ZIM gardent l'archive lisible par d'autres outils (Kiwix) au lieu d'enfermer les utilisateurs dans le projet.

Un binaire autonome signifie que le destinataire n'a rien à installer pour lire le miroir.

Rendre d'abord, retirer ensuite : capturez ce qu'un humain voit, puis supprimez l'environnement d'exécution, et une copie « Enregistrer sous » devient un artefact durable que chacun peut ouvrir hors ligne.

Au 2026-09-02, kage reste un projet MIT indépendant, sans société ni financement. Le développement est actif : le crawler lit robots.txt, s'amorce depuis sitemap.xml, reprend les exécutions interrompues et récupère chaque URL une seule fois ; l'empaquetage est déterministe et les chemins relatifs au miroir sont mappés dans l'archive. L'automatisation des versions livre des binaires multiplateformes, des paquets, un conteneur avec Chrome intégré, des SBOM et des signatures. L'auteur rattache kage à une pile de recherche open source plus large. Compromis connus : le crawl nécessite Chrome/Chromium, les paquets ZIM omettent l'index plein texte de Kiwix, et un binaire ajoute environ 13 MiB avant le contenu.

VÉRIFIEZ LES SOURCES

Les sources

  1. tamnd/kage: Shadow any website for offline viewing, with the JavaScript stripped out GitHub · github.com
  2. Show HN: Kage - Shadow any website to a single binary for offline viewing Hacker News · news.ycombinator.com ·
  3. 'kage' removes JavaScript from web pages, saves the entire site locally, and allows you to view it offline Gigazine · gigazine.net ·
  4. About - Duc-Tam Nguyen tamnd.github.io · tamnd.github.io