사업 내용
kage(影, '그림자')는 전체 웹사이트를 모든 스크립트가 제거된 .html 파일들의 평범한 폴더로 복제하는 오픈소스(MIT) 순수 Go 명령줄 도구다. 페이지마다 헤드리스 Chrome을 구동하고, 페이지가 안정될 때까지 기다린 뒤 렌더링된 DOM을 스냅샷하고, 모든 script 태그와 이벤트 핸들러, javascript: URL을 삭제하며, CSS와 이미지, 폰트를 상대 로컬 경로로 다시 써서 내려받는다. 명령은 clone, serve, pack, open을 포괄하며, 미러는 ZIM 아카이브(Kiwix 뒤의 공개 포맷)로 축약되거나, 아무것도 설치하지 않고 사이트를 오프라인으로 서비스하는 약 13 MiB의 자체 포함 바이너리와 콘텐츠로 축약될 수 있고, 선택적 --app 데스크톱 빌드와 네이티브 창에서 열리는 webview 빌드도 있다. Chromium이 포함된 ghcr 컨테이너로 배포되며, Homebrew, Scoop, apt, dnf 패키지도 제공한다.
베팅
사용자들은 단일 페이지가 아니라 사이트 전체를 원한다: 헤드리스 Chrome으로 렌더링하고, 사람이 보는 DOM을 스냅샷하고, 모든 스크립트를 제거하고, 결과물을 오프라인에서 탐색 가능하게 유지한다.
시작 경위
Duc-Tam Nguyen(tamnd)은 '다른 이름으로 저장'의 익숙한 실패에서 kage를 만들었다: 몇 달 뒤 저장된 페이지가 빈 화면으로 열리거나, 끝없는 스피너를 보여주거나, 여전히 죽은 분석 서버로 몰래 접속하는 경우다. 그는 그 페이지가 결코 진짜 당신의 것이 아니라고 표현했다 — 다른 사람의 자바스크립트를 위한 얇은 클라이언트일 뿐이라고 — 그리고 2026-06-14에 'Shadow any website to a single binary for offline viewing'이라는 태그라인으로 이 도구를 Show HN에 공개했다.
스레드는 712점과 141개 댓글로 크게 주목받았다. 댓글 작성자들은 kage를 SingleFile과 비교하며 '다른 이름으로 저장'과 어떻게 다른지 물었고, Nguyen은 kage가 모든 하위 페이지를 포함한 웹사이트 전체를 미러링한다고 명확히 했다 — 그의 예시는 Paul Graham의 에세이 전부를 오프라인으로 읽기 위한 것이었다 — 반면 SingleFile은 단일 페이지를 패킹한다. 그는 또한 크롤러, 인덱서, 저장, 서빙 계층을 갖춘 오픈소스 '처음부터 만드는 Google'이라는 더 큰 포괄적 야심도 언급했다. Gigazine은 2026-07-25에 kage를 영어로 다루며 gigazine.biz의 Docker 복제, ZIM 패킹, 0.3.10 릴리스로 만든 24.4 MiB 단일 바이너리 Windows 뷰어를 설명했다.
결말
2026-09-02 기준 kage는 회사나 자금 없이 독립적인 MIT 라이선스 오픈소스 프로젝트로 남아 있다; 저장소에는 패키지 관리자 설치, Chrome이 포함된 컨테이너, Chrome 기반 종단 간 테스트를 포함한 전체 테스트 스위트가 문서화되어 있고, 문서 사이트 kage.tamnd.com은 계속 성장하고 있다.
'다른 이름으로 저장'은 마크업이 런타임에 자바스크립트로 구축될 때 여전히 몰래 접속하거나 빈 화면으로 렌더링되는 사본을 만든다.
SingleFile은 단일 페이지를 해결했고, 실제 아카이브 사용 사례인 사이트 전체 미러링은 덜 충실한 도구들에게 남겨졌다.
헤드리스 Chrome은 자바스크립트가 제거되기 전에 미러가 사람이 보는 것을 캡처할 수 있게 한다.
ZIM 같은 공개 포맷은 사용자를 프로젝트에 가두지 않고 아카이브를 다른 도구(Kiwix)로 읽을 수 있게 유지한다.
자체 포함 바이너리는 수신자가 미러를 읽기 위해 아무것도 설치할 필요가 없음을 의미한다.
먼저 렌더링하고, 그다음 제거하라: 사람이 보는 것을 스냅샷한 뒤 런타임을 제거하면 '다른 이름으로 저장' 사본이 누구나 오프라인으로 열 수 있는 내구성 있는 산출물이 된다.
여파
2026-09-02 기준 kage는 회사나 자금 없이 독립적인 MIT 프로젝트로 남아 있다. 개발은 활발하다: 크롤러는 robots.txt를 읽고, sitemap.xml에서 시드를 얻고, 중단된 실행을 재개하며, 각 URL을 한 번만 가져온다; 패킹은 결정적이며 미러 상대 경로가 아카이브에 매핑된다. 릴리스 자동화는 멀티 플랫폼 바이너리, 패키지, Chrome이 포함된 컨테이너, SBOM, 서명을 배포한다. 저자는 kage를 더 큰 오픈소스 검색 스택과 연결한다. 알려진 트레이드오프: 크롤링에는 Chrome/Chromium이 필요하고, ZIM 팩은 Kiwix의 전체 텍스트 인덱스를 생략하며, 바이너리는 콘텐츠 전에 약 13 MiB를 추가한다.
근거 확인하기
출처
- tamnd/kage: Shadow any website for offline viewing, with the JavaScript stripped out GitHub · github.com
- Show HN: Kage - Shadow any website to a single binary for offline viewing Hacker News · news.ycombinator.com ·
- 'kage' removes JavaScript from web pages, saves the entire site locally, and allows you to view it offline Gigazine · gigazine.net ·
- About - Duc-Tam Nguyen tamnd.github.io · tamnd.github.io