内容
# 网页嵌入
[](LICENSE)
[](https://www.python.org/)
[](https://nodejs.org/)
一个网站克隆工具,通过 Playwright 捕获实时页面,并在可能的情况下重用原始源代码,而不是从截图重新生成页面。它作为命令行工具、MCP 服务器和 Claude Code / Codex 技能提供。
给定一个 URL,它会检查页面,决定是否可以直接重用页面(iframe、嵌入、导出)或必须从捕获的证据中重建页面,捕获 DOM / 样式 / 资产 / 网络流量,生成有界限的 HTML/CSS/React 框架,并在需要重建时,与原始页面进行视觉、DOM、计算样式、交互和响应式断点检查。
它最适合静态和半静态页面 — 营销网站、着陆页、文档和需要基于捕获重建的框架阻止的页面。有关它不能执行的操作,请参见[限制](#限制)。
## 功能
- **源优先路由** — 优先直接重用 iframe/嵌入/导出,然后是原始导出/预览/源,只有在无法重用时才回退到有界限的重建。
- **实时浏览器捕获** — DOM 快照、运行时 HTML、完整页面截图、计算样式和 CSS 摘要、资产清单、HAR 样式的网络元数据和交互状态。
- **有界限重建** — 从捕获的证据中重建 `X-Frame-Options` / CSP 阻止的页面,生成可重用的 `starter.html` / `starter.css` / `starter.tsx` / Next.js 框架,在捕获的情况下保留自定义标签、影子根主机和语义结构。
- **自我验证** — 截图、DOM、计算样式和交互状态相似性以及桌面/平板/移动断点报告。分数由验证管道生成,而不是手动分配。
- **证据报告** — 将直接捕获的工件与推断或缺失的证据分开,并将身份验证门控、应用门控和本机应用表面标记为有界限。
- **HAR 重放** — 重放请求规范以对抗标准 HAR、近似 HAR 或捕获的 `network/manifest.json` 工件。
- **作业队列** — 一个基于文件系统的异步克隆队列,带有持久的 JSON 记录、工作锁、重试调度和取消。
## 要求
- Node.js 18+
- Python 3.9+
- 用于 Playwright 捕获的 Chrome 或 Chromium(该软件包依赖于 `playwright-core`,不会自行下载浏览器)
## 安装
从 npm:
```bash
npm install -g web-embedding
web-embedding install
web-embedding doctor
```
或无需全局安装:
```bash
npx web-embedding install
```
作为 Claude Code 插件(从 GitHub 镜像):
```text
/plugin marketplace add keiailab/webEmbedding
/plugin install source-first-clone@webembedding
```
安装添加了 `source-first-clone` 插件包、`exact-clone-intake` 技能和 MCP 服务器。
## 用法
### 命令行工具
```bash
# 检查 URL 并打印路由提示
web-embedding inspect --url https://www.mozilla.org/
# 安全预检:是否准备好重用、捕获、会话、手动审查或阻止?
web-embedding audit --url https://www.mozilla.org/
# 从单个 URL 执行完整克隆工作流
web-embedding clone \
--url https://developer.mozilla.org/en-US/ \
--output-dir ./.tmp/mdn-clone \
--breakpoints mobile tablet
# 比较两个捕获包
web-embedding verify \
--reference-bundle ./.tmp/reference/capture.json \
--candidate-bundle ./.tmp/candidate/capture.json
```
其他子命令:`capture`、`reproduce`、`scaffold`、`benchmark`、`queue`、`har-replay`、`capabilities`、`paths`、`telemetry`、`uninstall`。运行 `web-embedding <command> --help` 获取标志。
克隆运行会在输出目录下写入工件,包括 `capture.json`、捕获的 `dom/`、`styles/`、`assets/`、`network/`(带有 `har.json` 和 `replay-report.json`)、`interactions/`、`screenshots/` 和带有重建框架和 `self-verify/summary.json` 的 `reproduction/` 树。
### MCP 服务器
适用于通过 npm 启动 stdio 服务器的 MCP 客户端:
```json
{
"mcpServers": {
"source-first-clone": {
"command": "npx",
"args": ["-y", "web-embedding@latest", "mcp"]
}
}
}
```
服务器公开了 URL 检查、捕获、重建、验证、队列和 HAR 重放工具,包括 `inspect_url`、`audit_reference_url`、`classify_clone_mode`、`capture_reference_bundle`、`build_rebuild_scaffold`、`clone_reference_url`、`verify_fidelity_report` 和 `replay_har_requests`。
一个托管的只读接收端点也可在 `https://webembedding-mcp.vercel.app/mcp` 上访问。它仅公开低风险路由工具(URL 检查、嵌入候选发现、克隆模式分类、嵌入代码片段生成)— 它不运行 Playwright、不读取本地文件或持久化工件。完整的捕获、重建和克隆执行仅通过 stdio 包本地进行。
### 技能
`exact-clone-intake` 技能在诸如“克隆此页面”、“精确复制此页面”或韩语 `그대로 가져와줘` / `완전 똑같이` 之类的请求上触发。它驱动 MCP 工具按照检查 → 捕获 → 重用或重建 → 验证的顺序执行。它不处理通用 URL 摘要、抓取或任何绕过身份验证、付费墙、验证码、所有权或许可边界的请求。
## 遥测
遥测**默认情况下禁用**。交互式 `web-embedding install` 会一次性询问并默认为*否*;非交互式安装(CI、`curl | bash`)永远不会提示。如果启用,它会将匿名命令完成事件(安装 ID、版本、命令名称、成功/失败、OS/运行时基础知识)发送到您控制的 JSON 端点。它永远不会发送目标 URL、本地路径、捕获的 HTML、截图、存储状态、环境变量或 API 密钥。请参见 [docs/telemetry.md](docs/telemetry.md)。
## 限制
这不是一个完整的后端或应用逻辑克隆引擎。硬边界是服务器端产品行为,而不是前端证据捕获。以下内容超出了范围,需要单独处理:仅限登录的屏幕、应用优先或本机应用服务、验证码繁重的网站、地图、游戏、canvas/WebGL 繁重的页面、实时馈送、支付和预订流程。
重建页面的公共结构并不意味着许可证或所有权绕过。身份验证捕获需要调用者有意提供 `storage_state_path` 或 `user_data_dir`;该工具不会收集凭证或执行登录绕过,并且本地 URL 入口点会拒绝非 HTTP 方案,例如 `file://`。
## 贡献
规范存储库位于 GitLab 上;GitHub 存储库是一个只读推送镜像。请在 GitLab 上打开合并请求。请参见 [CONTRIBUTING.md](CONTRIBUTING.md)。
## 许可证
[MIT](LICENSE)