kage pack一键把整站压进单个ZIM文件Kiwix生态离线阅读手机可看还能字节级确定性打包【免费下载链接】kageShadow any website for offline viewing, with the JavaScript stripped out项目地址: https://gitcode.com/gh_mirrors/kage6/kagekage 是一款“网站影子”工具用真实无头浏览器渲染整站、剥掉全部 JavaScript把网页冻结成纯静态离线镜像。而它的kage pack子命令更进一步——用一条命令把整个镜像文件夹压进单个 ZIM 文件直接放进 Kiwix 生态手机、平板、桌面全能离线打开且同一镜像两次打包产出字节级完全一致的归档文件。为什么整站镜像需要一个 ZIM 文件克隆下来的镜像是一个文件夹几千个小文件复制慢、发送尴尬、放到手机上几乎没法用。而 ZIM 是 Kiwix 采用的开放归档格式——整个网站甚至整部维基百科压进一个只读、压缩、可索引的文件里。kage pack就是那座桥kage clone paulgraham.com # 1. 克隆整站到 ~/data/kage/paulgraham.com/ kage pack paulgraham.com # 2. 压成 paulgraham.com.zimpacked paulgraham.com.zim size 4.2 MiB open kage open paulgraham.com.zim整个镜像——页面、样式、图片、字体——全部装进这一个 4 MiB 的文件。文本走 zstd 压缩图片等已压缩媒体原样存入体积基本压到极限。只传主机名就能找到镜像是因为它会按默认输出目录自动解析镜像在别处就传完整路径。Kiwix 生态离线阅读手机、平板、桌面都能看ZIM 是有正式规范的开放标准不是 kage 的私有格式。你今年打的paulgraham.com.zim几年后任何 ZIM 阅读器都还能打开彻底没有格式锁定。打包完成后打开方式由你选kage 自己读回kage open paulgraham.com.zim本地起个服务、浏览器直接看Kiwix 桌面/手机 App把.zim拷进 Kiwix for Android / iOS 或桌面版像看书一样离线阅读——飞机上、高铁上、没网的教室都行kiwix-servekiwix-serve xxx.zim在局域网起一个 HTTP 服务多台设备共享同一份离线内容。细节上也很讲究kage 会把每个 HTML 页面的真实title而不是文件路径写进条目所以 Kiwix 搜索框输入five弹出来的是 “Five Founders” 这样能读的人话标题还会自动挖出网站的 favicon 写成 48x48 图标让归档在 Kiwix 书库里显示为带图标的“一本书”而不是一个无名条目。字节级确定性打包可校验、可缓存、可增量这是kage pack最硬核的一点同一个镜像打多少次包产出的文件一个字节都不差。归档 UUID 由内容推导而不是随机生成同一输入 → 同一输出页面遍历、MIME 统计、元数据排序全部确定化没有隐藏的随机源日期不读系统时钟而是从 CLI 显式传入保证纯函数式的打包。带来的实际好处.zim可以放心做checksum 校验、diff 对比、CDN 缓存归档分发和镜像站都能直接受益。配合--date 2026-06-14固定日期整份文件做到完全可复现。再叠加--incremental增量缓存就更快了kage 在产物旁边维护一个.kagecache伴生缓存按 cluster 内容寻址镜像小改之后重新打包未变化的 cluster直接复用上次压缩结果只压新内容cache 41 reused, 3 compressed of 44 clusters缓存命中返回的字节与全新压缩完全一致所以速度变了确定性不变。实现见 pack/cache.go。进阶形态单文件可执行与双击桌面 Appkage pack的产物不止 ZIM 一种形状你按需选① 单文件可执行--format binary——把 ZIM 追加到一份 kage 副本后面得到一个“就是网站本身”的可执行程序收件人什么都不用装连 ZIM 阅读器都不需要kage pack paulgraham.com --format binary -o paulgraham ./paulgraham # 自动起本地端口并打开浏览器Ctrl-C 停止追加的归档是平台无关的只有底座可执行文件携带架构所以用--base kage-windows-amd64.exe还能在 Mac 上交叉打出 Windows 版离线阅读器自动补上.exe后缀。② 双击桌面 App--app——macOS 打标准.app包、Linux 打 AppImage 风格.AppDir装了 appimagetool 会自动折叠成单个.AppImage图标自动取网站的 favicon双击即开、无终端窗口。③ 原生窗口webview 构建——用webview构建标签编译 kage 后打包出的阅读器不再打开系统浏览器而是用系统 WebViewmacOS 的 WKWebView、Windows 的 WebView2、Linux 的 WebKitGTK弹出一个独立原生窗口标题取自归档 Title观感就像一个正经的离线 App。常用参数速查参数作用--format zim / binary产物形状ZIM 归档默认或自包含可执行--app打包成双击桌面 App.app/.AppDir/.AppImage--incremental启用 cluster 压缩缓存只压变化的部分--no-compress全部原样存储打包最快、无 zstd 的阅读器也能打开--title / --description / --language / --date覆盖元数据--date传固定值实现完全可复现-o, --out指定输出路径默认镜像名.zim元数据方面 kage 会自动补齐 ZIM 规范要求的 Title、Name、Language、Description、Counter 和 favicon 图标缺 favicon 的网站会优雅地“无图标打包”而不是塞一张坏图。源码与文档导航想深入的话这些模块值得一读CLI 入口与参数解析cli/pack.go镜像 → ZIM/二进制的打包核心含主页面挑选、MIME 推断、标题提取pack/zim.go增量压缩缓存内容寻址 原子写入pack/cache.go纯 Go 的 ZIM 读写器zim/官方打包指南docs/content/guides/packing-a-mirror.md完整文档站源码docs/content/小结kage pack把“整站离线”这件事做到了一个文件为止ZIM 形状兼容整个 Kiwix 生态手机上随便看确定性形状保证字节级一致校验、缓存、增量压缩全部成立binary 与--app再往上叠甚至能把某个网站变成一个双击即开的离线 App。克隆、打包、离线阅读三步走完你手里的就是一个可以放十年都不会失效的网站快照 【免费下载链接】kageShadow any website for offline viewing, with the JavaScript stripped out项目地址: https://gitcode.com/gh_mirrors/kage6/kage创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
