Communitygithub.com

GCW — 网站复制工具

将已获授权的生产网站还原为可部署的本地项目,包含路由、资源、WebGL 及视觉回归测试工具。

GCW — 网站复制工具 是什么?

GCW(Gao Copy Website)是一个专注于真实证据而非 AI 猜测的网站复制与重建工具。它适用于 Claude Code 等 AI 代理平台,支持四种工作模式:TEARDOWN(拆解分析)、FAITHFUL_CLONE(忠实克隆)、CREATIVE_REBUILD(创意重建)和 PRODUCTION_RECOVERY(生产恢复)。该工具通过引导用户选择目标、优先查找真实源码、进行运行时侦察(支持 WebGL/Canvas 等复杂资产),并最终构建可运行的本地项目来确保结果可验证。它强调在真实浏览器中进行像素级对比验证,并提供完整的 CI 集成和文档交付流程。GCW 严格遵守法律边界,要求用户在合法授权范围内使用,并清晰标记不确定的技术声明。

兼容平台~Claude Code~Codex CLI~Cursor
npx skills add idonafraid-create/GCW

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

GCW — 网站复制工具(Gao Copy Website)

研究一个公开网站的实际运作方式,复现其中重要的部分,并在真实浏览器中验证结果。优先依赖真实的源代码和可观察的运行时证据,而非看似合理的 AI 猜测。

牢记三条规则:

  1. 在实现之前找到证据。
  2. 在重构之前让它能运行。
  3. 在优化之前进行对比。

边界

  • 仅当目标由用户拥有、已获得预期复用的许可或明确授权时才进行操作。仅在授权不明确时进行询问。
  • 将经过身份验证、仅需密码以及私有内容视为超出范围,除非明确授权。
  • 不要绕过访问控制,也不要恢复、交付或提交凭据。
  • 在公开复用之前,分别检查代码、字体、图像、模型和品牌的权限。
  • 将不确定的技术声明标记为 SOURCE(来源)、PARTIAL(部分)或 GUESS(猜测)。
  • 不要将已部署的打包产物呈现为原始创作源码。

1. 先选择目标,再选择工具

阅读 references/clone-modes.md 并选择一种主要模式:

  • TEARDOWN(拆解分析):理解真实的设计与实现,无需承诺重建。
  • FAITHFUL_CLONE(忠实克隆):尽可能根据证据复现可观察到的站点。
  • CREATIVE_REBUILD(创意重建):保留选定的结构、节奏或交互思路,同时替换品牌和内容。
  • PRODUCTION_RECOVERY(生产恢复):在无法获得可维护源码时,恢复已拥有但已部署的站点。

记录一份简短的预检:

- 目标:
- 站点类型:
- 源码可用性:
- 复用边界:
- 高置信度范围:
- 近似或排除范围:
- 推荐路径:

不要让每个项目都承担生产恢复的成本。使用能够支持所选目标的最轻量级的证据和验证方式。

2. 首先寻找真实实现

在抓取或重建之前:

  • 搜索站点名称、产品名称、域名所有者和部署标识,查找官方公开仓库。
  • 检查源码映射、框架元数据和公开部署产物。
  • 验证仓库和资源许可证;公开可用不等于允许重新部署。
  • 将原始源码、已部署产物和你可编辑的实现清晰分离。
  • 使用最终的规范 HTTP(S) URL。GCW 拒绝携带凭据的 URL 以及重定向到已配置源之外的内容。

当存在官方可复用的源码时,从该源码开始。如果没有,则继续进行运行时侦察,并说明哪些仍然未知。

3. 初始化项目记录

阅读工作区中的 AGENTS.md。如果此机器尚未验证,请在 GCW 仓库中运行 npm install、npm run install:browser 和 npm run check。

创建一个非破坏性的项目记录:

python scripts/init_reconstruction.py <workspace> --url <canonical-url> --authorization <owned|licensed|authorized>

使用 .gcw/ 目录存放清单、截图、报告和已知缺口。不要静默覆盖现有证据。

4. 侦察站点并分类其表面

当 Node.js 和 Playwright 可用时运行清单:

node scripts/site_inventory.mjs --url <canonical-url> --out <workspace>/.gcw/evidence/network/site-inventory.json

然后验证自动化无法可靠推断的内容:

  • 路由、页面族、深层链接和响应式断点
  • DOM 根节点、固定覆盖层和内滚动容器
  • 悬停、点击、拖拽、滚动、时间、大小调整、主题和存储状态
  • Canvas、WebGL、WebGPU、工作线程、iframe、视频、音频和懒加载资源
  • 加载状态与稳定应用状态
  • 需要本地模拟数据的公共 API 和数据依赖

对于 Canvas/WebGL/WebGPU 的所有权、着色器和渲染管线,使用 web-shader-extractor。当目标是保留排版、间距、调色板、布局、动效或视觉语言而非字节级产物时,使用 design-dna。

5. 选择实现路径

根据证据和站点类型选择路径:

证据或站点类型默认路径
官方可复用源码在其许可证范围内运行并适配源码
简单的静态站点保留公开文件和 URL 路径,然后移除跟踪并替换内容
内容丰富的 React/Vue/Next 站点重建页面模板并使用公开或本地模拟数据
多页面营销站点在构建共享模板之前,先映射路由和页面族
交互密集型站点先捕获状态,再复现状态转换
WebGL/Canvas 站点在项目化之前恢复渲染/输入/输出模型
仅视觉灵感提取设计 DNA 并构建原始实现
失去源码的生产站点阅读 references/recovery-tiers.md 和 references/gates.md,然后建立经过验证的回放(oracle)机制

不要归档或复制所选模式不需要的第三方资源。

6. 构建一个可运行的本地项目

  • 在编辑新项目时,保留一个稳定的参考或证据记录。
  • 恢复所有范围内的路由,而不仅仅是首页。
  • 在所选主机上保留导航和深层链接行为。
  • 用明确的模拟数据或安全的回退方案替代不可用的服务器行为。
  • 验证生产构建和静态预览,而不仅仅是开发服务器。

在适用时运行路由检查:

python scripts/route_smoke.py --base-url <preview-url> --route / --route /example

7. 在真实浏览器中验证

阅读 references/qa-scenarios.md 和 references/tooling.md。

定义来源和候选场景,然后捕获匹配状态:

node scripts/capture_compare.mjs --config <capture-scenarios.json> --output <results-dir>
python scripts/batch_image_diff.py <results-dir> --diff-dir <results-dir>/diff

匹配视口、DPR、路由、指针、滚动、随机种子、就绪状态和时间阶段。检查截图和差异图像;单一的全局分数无法解释交互或合成器失败。

不要通过调整颜色、偏移或动画速度来隐藏缺失的接线。将有相位依赖的区域与确定性失败分离。

8. 交付学习成果,而不仅仅是克隆产物

仅输出所选模式要求的文档:

  • TEARDOWN.md:真实实现、证据级别和可转移的技术
  • DESIGN_DNA.json:用于创意重建的设计系统、视觉语言和效果
  • REPLACE_GUIDE.md:替换文本、媒体、颜色、字体、模型和数据的位置
  • CLONE_REPORT.md:来源与本地版本的对比、权衡和已知缺口
  • 可运行的项目、构建命令和部署说明

对于高级资产情况,例如烘焙在 GLTF/GLB 几何体中的文本,请阅读 references/special-cases.md 而非扩展主工作流。

9. 仅在需要时加固

对于维护的项目或生产恢复,安装截图回归运行器:

python scripts/install_ci.py <project-root> --source-url <canonical-url>

对于一次性的拆解分析或学习练习,CI 是可选的。如果安装了,即使阈值失败,也必须上传截图、差异和报告。

10. 诚实地收尾

  • 重新运行构建以及预检中承诺的 QA 场景。
  • 记录已知缺口和下一步需要的证据;永远不要编造成功的交互。
  • 在发布改编版本之前,移除跟踪和原始品牌残留。
  • 留下干净的 Git 检查点;未经用户授权,切勿推送。
  • 区分原始创意、已获许可复用的资产、观察到的行为以及你自己的实现。

相关技能