Skip to content
Development
Skill

/claude-skill-web-clone

网站复刻 / 克隆方法论。USE WHEN 用户说 复刻网站、克隆网站、clone website、抄个站、仿站、 照着这个站做一个、reproduce site、还原某个网页效果、把这个站搬下来改成我的、 复刻某个交互/WebGL/Canvas/Three.js 效果。提供「先拿真源码 → 判路径 → 逆向拆解 → 搭工程 → 替换内容」的可移植决策树,覆盖静态站 / React-Vue-Next 内容站 / WebGL-Canvas 重前端站三大分支,并强制核对任何 AI 二手分析里的可执行代码。

From plugin
claude-skill-web-clone
9271 skill
Install
$ npx -y skills add Jane-xiaoer/claude-skill-web-clone --skill claude-skill-web-clone --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/claude-skill-web-clone

Context preview

The summary Claude sees to decide when to auto-load this skill.

网站复刻 / 克隆方法论。USE WHEN 用户说 复刻网站、克隆网站、clone website、抄个站、仿站、 照着这个站做一个、reproduce site、还原某个网页效果、把这个站搬下来改成我的、 复刻某个交互/WebGL/Canvas/Three.js 效果。提供「先拿真源码 → 判路径 → 逆向拆解 → 搭工程 → 替换内容」的可移植决策树,覆盖静态站 / React-Vue-Next 内容站 / WebGL-Canvas 重前端站三大分支,并强制核对任何 AI 二手分析里的可执行代码。

SKILL.md

claude-skill-web-clone.SKILL.md
name: web-clone
description: >
  网站复刻 / 克隆方法论。USE WHEN 用户说 复刻网站、克隆网站、clone website、抄个站、仿站、
  照着这个站做一个、reproduce site、还原某个网页效果、把这个站搬下来改成我的、
  复刻某个交互/WebGL/Canvas/Three.js 效果。提供「先拿真源码 → 判路径 → 逆向拆解 →
  搭工程 → 替换内容」的可移植决策树,覆盖静态站 / React-Vue-Next 内容站 /
  WebGL-Canvas 重前端站三大分支,并强制核对任何 AI 二手分析里的可执行代码。
metadata:
  author: jane (xiaoer)
  version: "1.6.0"
  use_case: 个人本地复刻/学习网站,沉淀自 website-clones 克隆中枢

Web Clone · 网站复刻方法论

把"复刻一个网站"做成可重复的流程。配套工程区:`~/projects/website-clones/`(每个复刻是一个子目录)。

头号铁律:真源码至上,绝不信 AI 推测的代码

> 任何 AI 生成的"复刻分析/施工图",**正文的概念骨架可以参考,但里面的可执行代码块默认全是臆造的**,必须逐行用真源码核对,否则照抄必崩。

**实证(marbles 案例)**:一份 AI 分析文档把原站"解析法求光线-球体交点 + 把光学结果编码成位移图、交给 SVG `feDisplacementMap` 去扭曲真实 DOM"的真架构,臆造成了"ray-marching + SDF + 把 DOM 当纹理采样"——两套完全不同的实现,照抄做不出原效果且慢 N 倍。详见 `references/marbles-case.md`。

所以第一动作永远是:**拿到真源码**。

决策树(按顺序走,不许跳)

Step 0 · 先建标准工程骨架

node /Users/jane/.shared-skills/web-clone/scripts/init-clone.mjs <站名> --url <原站URL>

该脚本会创建 `~/projects/website-clones/<站名>-clone/`、`NOTES.md`、`RECON/screenshots/`,避免每次手工漏掉产物。

Step 1 · 先去 GitHub 搜源码,别急着抓站

unset SSL_CERT_FILE   # macOS 怪癖,bash 前先解
# 按站名/产品名搜
SSL_CERT_FILE=/etc/ssl/cert.pem gh api "search/repositories?q=<关键词>" \
  | jq -r '.items[] | "\(.full_name) ⭐\(.stargazers_count) \(.description)"' | head -10
# vercel.app/netlify.app/github.io 的 URL slug 常常就是 仓库名 / 部署者用户名
  • 单文件站(github.io / 纯 HTML)→ 直接抓 raw:`curl -sL https://raw.githubusercontent.com/<user>/<repo>/main/index.html`
  • **找到源码且许可允许 → 跳 Step 4 直接 clone。** 教训:先搜 GitHub 能省 30 分钟弯路。

Step 2 · 没找到源码 → 浏览器侦察(探针)

加载 `Browser` skill 或 playwright MCP,跑探针抽信号(框架 / `window.THREE` / canvas 数 / 平滑滚动库 / 字体 / scrollHeight)。截图 1440/768/390 三档 + 侦察 JSON 存 `<站>/RECON/`。

优先用内置脚本跑标准侦察:

node /Users/jane/.shared-skills/web-clone/scripts/recon-site.mjs \
  --url <原站URL> \
  --out ~/projects/website-clones/<站名>-clone/RECON \
  --label original

node /Users/jane/.shared-skills/web-clone/scripts/asset-harvest.mjs \
  --recon ~/projects/website-clones/<站名>-clone/RECON/original-recon.json \
  --out ~/projects/website-clones/<站名>-clone/assets/original \
  --manifest ~/projects/website-clones/<站名>-clone/RECON/asset-manifest.json

node /Users/jane/.shared-skills/web-clone/scripts/network-capture.mjs \
  --url <原站URL> \
  --out ~/projects/website-clones/<站名>-clone/RECON/network \
  --label original

node /Users/jane/.shared-skills/web-clone/scripts/route-crawl.mjs \
  --url <原站URL> \
  --out ~/projects/website-clones/<站名>-clone/RECON/routes \
  --label original \
  --max-pages 25 \
  --max-depth 2

node /Users/jane/.shared-skills/web-clone/scripts/interaction-probe.mjs \
  --url <原站URL> \
  --out ~/projects/website-clones/<站名>-clone/RECON/interactions \
  --label original

node /Users/jane/.shared-skills/web-clone/scripts/sourcemap-hunt.mjs \
  --recon ~/projects/website-clones/<站名>-clone/RECON/original-recon.json \
  --out ~/projects/website-clones/<站名>-clone/RECON/sourcemaps

> 登录态私域站才用 `bb-browser`;localhost / 无登录公开站用 `Browser` skill 或 playwright(别动 bb-browser,会抢 Brave)。

Step 2.5 · 先给复杂度定级,别盲目承诺

根据侦察结果先写一版"复刻前预判":复杂度 L1-L6、推荐模式(忠实复刻 / 视觉复刻 / 内容爆改)、预计可还原范围、明确不克隆的部分。分级和评分规则见 `references/assessment.md`。

**若模式是「视觉复刻」或「内容爆改」** → 顺手产出结构化设计身份 `design-dna.json`,把"那个站的感觉"变成可版本化、可对照的 token 规范,让 Step 6 替换时"DNA 留着、内容换掉"有据可依:

node /Users/jane/.shared-skills/web-clone/scripts/dna-scaffold.mjs \
  --recon ~/projects/website-clones/<站名>-clone/RECON/original-recon.json \
  --out   ~/projects/website-clones/<站名>-clone/RECON/design-dna.json \
  --name  "<站名>"

脚本会把侦察到的字体/色候选/框架特效信号 best-effort 预填,其余字段人工 Analyze 补全。三维结构(design_system / design_style / visual_effects)、完整 schema、适用边界见 `references/design-dna.md`。 > ⚠️ **「忠实复刻」分支不要用 DNA**:真源码就是真相,别让"近似风格"的 DNA 稀释逐字节铁律。

Step 3 · 按侦察结果选路径

| 侦察结果 | 走哪条路 | |---|---| | 静态 HTML/CSS,无框架 | `wget --mirror` 抓镜像 → 删追踪脚本 → 改文案 | | React / Vue / Next(内容为主) | 重建模板(如 `ai-website-cloner-template`,Node 24+),灌内容 | | SPA / SaaS / 数据驱动页面 | 先跑 `network-capture.mjs` 保存 API fixtures → 本地 JSON/mock server 替身 | | 多页面官网 / 产品站 | 先跑 `route-crawl.mjs` 做路由地图 → 每类页面抽模板 → 统一替换内容 | | 复杂交互站 | 先跑 `interaction-probe.mjs` 记录 hover/click/scroll/canvas drag 状态 → 按状态补交互,不许只截首屏 | | **WebGL / Canvas / Three.js 重前端** | **深度逆向真源码(见下)→ 忠实复刻 或 找同类开源 3D 模板换内容**。单文件原生站常常逐字节保留=最忠实复刻。**找不到真源码时走运行时帧捕获 + baseline 闸门**,纪律见 `references/effect-extraction.md`(可委托 web-shader-extractor) | | **静态构建站(Astro/Vite SSG/Hugo),含重 WebGL** | **`mirror-site.mjs` 全量镜像部署资产 → 自托管字体 + 删追踪 → 本地 web 根服务 = 真源码 1:1 忠实复刻**。对静态站,"拿到真源码"="镜像部署资产整套"。配方见 `references/static-mirror.md`。范例:oryzo.ai(Lusion,L6,高斯泼溅,hero 像素 diff 5/5) | | 用现成开源主题的站(Astro/Hugo 主题) | 去对应主题市场找源主题(**仅限套用现成主题的站**;定制站走上一行的全量镜像,别来这行) |

L4-L6 复杂站按 `references/complex-playbooks.md` 走,不要只用普通官网流程。

Step 4 · 在克隆中枢里搭工程

mkdir ~/projects/website-clones/<站名>-clone && cd $_
# git 源码:clone 进来;单文件:放进来。原始源码留一份只读基准 index-original.html
# 检查 Node 版本(package.json engines),nvm use 对应版本,钉 .nvmrc

Step 5 · 删追踪 + 写元信息 + 验证

  • **删追踪**:Google Analytics(`gtag` / `googletagmanager`)、像素、热图——逐行精确切除(GA 块常在 `<head>` 顶部)。
  • **写 NOTES.md**(必须):包含复杂度、复刻模式、原站 vs 克隆站对比、保真度评分、已知缺口。模板见 `references/deliverables.md`。
  • **复杂站写 TEARDOWN.md**(技术拆解)。所有结论标真源码行号。
  • **复刻后评分**:按 `references/assessment.md` 给结构 / 视觉 / 交互 / 响应式 / 内容替换 / 功能完整度打分。分数要能被截图、源码、运行结果支撑。
  • **浏览器真验证**(硬要求,不许只看代码就说"应该能跑"):起本地服务器 → 浏览器打开 → 抓 console(不能有 JS/WebGL 编译错误)→ 截图对照原站。诚实记录验证不了的部分(如合成 PointerEvent `isTrusted=false` 触发不了拖拽,要如实写,别伪造"拖动成功")。

复刻完成后再跑一次克隆站侦察,并生成自动对比报告:

node /Users/jane/.shared-skills/web-clone/scripts/recon-site.mjs \
  --url http://127.0.0.1:<端口>/ \
  --out ~/projects/website-clones/<站名>-clone/RECON \
  --label clone

node /Users/jane/.shared-skills/web-clone/scripts/route-crawl.mjs \
  --url http://127.0.0.1:<端口>/ \
  --out ~/projects/website-clones/<站名>-clone/RECON/routes-clone \
  --label clone \
  --max-pages 25 \
  --max-depth 2

node /Users/jane/.shared-skills/web-clone/scripts/interaction-probe.mjs \
  --url http://127.0.0.1:<端口>/ \
Read more
Ships withclaude-skill-web-clone

Reproduce any website — from a single-file static page to a WebGL-heavy interactive demo — without faking it from AI hallucinations. 把任何一个网站(从单文件静态页到 WebGL 重前端 demo)忠实复刻出来 —— 不靠 AI 臆测代码硬抄。

Get the whole plugin
Stats
933
Stars
116
Forks
Maintained
Maintenance
JavaScript
Language
MIT
License
1mo ago
Last commit
2mo ago
Created

Repo: Jane-xiaoer/claude-skill-web-clone