kage|WebサイトをJavaScriptなしの完全オフライン用ミラーに変換するツール
kageは、ヘッドレスChromeを用いてWebサイトをレンダリングし、JavaScriptを完全に排除したオフライン閲覧用の静的ファイルに変換・クローンするGo言語製のツールです。
ポイント
- ヘッドレスChromeで描画したDOMからJavaScriptを完全排除して保存
- ZIM形式や自己完結バイナリ、デスクトップアプリなど単一ファイルにパック可能
- 途中で中断しても再開できる、robots.txt対応の丁寧なクローリング
概要・解決する課題
Webページをブラウザの「名前を付けて保存」で保存しても、数ヶ月後に開くとスクリプトの動作不良で画面が真っ白になったり、すでに存在しない外部の解析サーバーへ接続を試み続けたりする課題がありました。Webページの実体が、外部のJavaScriptに依存した薄いクライアントになっていたためです。
kage(影)は、この問題を解決するWebクローンツールです。ヘッドレスChromeを実際に起動してWebページをレンダリングし、人間が見ている状態のDOMをスナップショットとして取得します。その後、トラッキングや動的処理の原因となるすべてのJavaScriptを削除し、CSS、画像、フォントなどのアセットのみをローカルに保存します。これにより、外部通信が発生しない、ローカルディスクから直接安全に開けるHTMLファイルを生成します。
ただし、JavaScriptを完全に除去する仕組みであるため、SPA(シングルページアプリケーション)のように実行時のスクリプト処理に強く依存したサイトのクローンには向きません。
なぜ注目されているか
Webサイトのデザイン変更、ドメイン失効、サービス終了によって、価値ある技術ドキュメントや個人エッセイがインターネットから消滅してしまうリスクへの懸念が高まっています。長期保存に耐えうる、外部接続に依存しないピュアなHTMLとして手元に残したいという需要に応える設計が支持されています。
主なユースケース
- 技術ドキュメントやエッセイの長期保存:お気に入りのWebサイトを丸ごとクローンし、インターネット環境がない飛行機内や、数十年先でもブラウザで閲覧できるようにします。
- 他者への配布用アーカイブ作成:クローンしたサイトを1つのZIMアーカイブや、Goのランタイムを内包した「自己完結型の実行バイナリ」にパックして、依存関係なしに他者へ配布・共有します。
動作環境
- Google Chrome または Chromium:ホスト環境にインストールされている必要があります(Dockerコンテナ版を使用する場合は不要)。
- Goランタイム:ソースからビルドしてインストールする場合に必要です。
- 対応OS:Linux、macOS、Windows(各OS向けのプリビルドバイナリやパッケージマネージャーに対応)。
始め方(クイックスタート)
本ツールの実行には、ホスト環境にChromeまたはChromiumがインストールされている必要があります。
- ツールのインストール(macOSでのHomebrew例)
brew install --cask tamnd/tap/kage
- サイトのクローン
kage clone paulgraham.com
- ローカルサーバーでの閲覧
kage serve $HOME/data/kage/paulgraham.com
ブラウザで http://127.0.0.1:8800 を開くことで、オフラインで閲覧できます。
詳細は公式リポジトリを参照してください。
こんな人におすすめ
- 重要なWeb上の技術ドキュメントを、サービス終了やデザイン改定に備えて永久に保存しておきたいエンジニア
- ネットワーク接続が制限された環境や、オフライン端末でドキュメントを読みたい人
- 外部への不要な通信やトラッキングスクリプトを一切含まない、安全なWebアーカイブを配布したい管理者
関連リソース [PR]
※ Amazon アソシエイト・リンクを含みます。リンク経由の購入で当サイトが収益を得る場合があります。
本記事は GitHub Trending を元に自動生成しています。最新情報は公式リポジトリをご確認ください。