单体网页归档器 Monolith
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @user_3c6cb52e/monolith-web-page-single-file-archiver
技能介绍
要解决的问题
用 curl 或浏览器「另存为」抓下来的网页,通常只是一个空壳。CSS 在 CDN 上,图片走对象存储,字体由 JavaScript 按需加载,脚本还会在首屏之后再发请求。一旦断网、源站下线或 CDN 换了路径,这份「备份」就只剩几段没有样式的标签。给同事分享一个内部页面时也一样:对方要么有账号,要么得翻你的截图。Monolith 要处理的就是这类「页面已保存,但没真正归档」的场景。
工作原理
Monolith 是一个 CLI 工具,同时也提供 Rust 库形态,核心行为是把渲染一个页面所需的全部资源内联进单个 HTML 文件。
- 递归抓取:解析 HTML 后提取其中的 CSS、图片、JavaScript、字体等外部引用,再对这些引用递归处理。
data:URL 内联:把抓取到的二进制和文本内容转成 data URL,替换原有的外部地址,而不是把文件散落在目录里。- 输出自包含文档:最终产物是一个 HTML5 文件,不依赖任何外部资源即可离线渲染。
因为直接输出单文件,它很适合放进归档流水线:抓取结果可以当作普通文本文件提交进版本库、塞进工单附件,或者作为静态站点的一份快照长期保留。
适用边界
- 没有 JavaScript 引擎。 Monolith 不做页面渲染,也不会执行脚本。对于首屏之后靠 JS 拉取数据再渲染内容的站点,拿到的快照可能只包含骨架,这类页面需要配合其他工具使用。
- 不处理登录态与交互态。 它归档的是请求返回的静态资源,无法复现需要鉴权、依赖用户操作才出现的内容。
- 资源体量会显著膨胀。 图片、字体、视频全部转成 base64 后,文件体积通常比原始页面加资源目录更大,不适合当作长期存储的压缩格式。
使用场景
- 源站即将下线,需把线上页面连同样式图片打包成单个 HTML 存档,供内网离线查阅
- 在无外网环境给客户演示网页,用单文件 HTML 快照替代依赖 CDN 的在线页面
- 把内部文档页面的 CSS、字体、图片全部内联后,作为工单附件发给同事排查样式问题
适合人员
- 负责站点下线与内容迁移的运维工程师,需要把即将下线的页面做成可离线打开的存档
- 常在客户现场演示网页的售前工程师,需要在无外网环境下展示完整页面效果
- 维护内部知识库的技术作者,希望分享的文档页面不依赖外部 CDN 也能正常显示