一键导入
web-shader-extractor
// 从网页中提取 WebGL/Canvas/Shader 视觉特效代码,反混淆后移植为独立原生 JS 项目。 触发条件:用户提供网址并要求提取 shader、提取特效、提取动画效果、提取 canvas 效果、 复刻某网站的视觉效果、"把这个网站的背景效果扒下来" 等。
// 从网页中提取 WebGL/Canvas/Shader 视觉特效代码,反混淆后移植为独立原生 JS 项目。 触发条件:用户提供网址并要求提取 shader、提取特效、提取动画效果、提取 canvas 效果、 复刻某网站的视觉效果、"把这个网站的背景效果扒下来" 等。
| name | web-shader-extractor |
| description | 从网页中提取 WebGL/Canvas/Shader 视觉特效代码,反混淆后移植为独立原生 JS 项目。 触发条件:用户提供网址并要求提取 shader、提取特效、提取动画效果、提取 canvas 效果、 复刻某网站的视觉效果、"把这个网站的背景效果扒下来" 等。 |
从网页提取 WebGL/Canvas/Shader 特效,反混淆并移植为独立项目。
核心原则:
开始任何提取工作前,必须先确认 Chrome DevTools MCP 已加载。
用 ToolSearch 检索关键字 chrome devtools navigate evaluate:
mcp__chrome-devtools__navigate_page → 可以开始mcp__chrome-devtools__* 工具 → 立即提示用户安装后再继续:Chrome DevTools MCP 未安装,请运行:
claude mcp add chrome-devtools --scope user npx chrome-devtools-mcp@latest
安装后重启 Claude Code,再重新触发本 skill。
不要绕过此检查降级到 Playwright 继续提取 — Playwright headless 在复杂 WebGL 站点下无法捕获 shader 源码和渲染管线,会导致提取不完整。
工具优先级:
navigate_page + initScript 注入 WebGL 拦截器,evaluate_script 查询运行时状态,list_network_requests 捕获资源。目标:一次页面加载,最大化采集所有运行时数据。
在页面脚本执行前注入拦截器,捕获:
gl.shaderSource() → 所有 shader 源码(vertex + fragment)gl.bindFramebuffer() → FBO 切换序列(即渲染管线拓扑)gl.uniform*() → uniform 名称与初始值gl.drawArrays() / drawElements() → draw call 顺序与参数同时也拦截 2D Canvas 的 getContext('2d') 以覆盖纯 Canvas 特效。
页面加载稳定后,主动查询:
window.THREE?.REVISION、window.BABYLON?.Engine?.Version 等gl.getSupportedExtensions()、renderer info__NEXT_DATA__、__NUXT__、window 上的自定义全局变量data-engine 属性并行用 curl 获取原始 HTML,与运行时数据交叉提取:
根据 URL、HTML 特征、运行时数据判断是否匹配已知平台:
| 匹配条件 | 跳转 |
|---|---|
| unicorn.studio 域名或 embed 特征 | → references/unicorn-studio.md |
| shaders.com 域名或 Nuxt+TSL 特征 | → references/shaders-com.md |
| 无匹配 | → 继续 Phase 2 通用流程 |
如果拦截器已捕获完整 shader 源码,可跳过 bundle 分析。仅在以下情况启动 Agent 分析 JS bundle:
Agent 分析规则 → references/extraction-workflow.md
目标:将提取的 shader/配置/渲染管线重建为可独立运行的项目。
根据提取结果判断最合适的移植目标:
详细策略 → references/porting-strategy.md
打开移植后的页面,截图与原站对比。重点检查:
如发现差异,优先排查 root cause(色彩空间、时间基准、FBO 顺序),不要通过调参修补。
效果验证正确后,如果存在简化空间(如可以剥离框架改用原生 WebGL),向用户提议简化方案,由用户决定是否执行。
询问用户是否生成 EXTRACTION-REPORT.md。报告内容:
| 需要时 | 读取 |
|---|---|
| 识别框架特征 | references/tech-signatures.md |
| Agent 提取 prompt + 反混淆规则 | references/extraction-workflow.md |
| 获取配置参数 | references/config-extraction.md |
| Three.js TSL 节点 shader 重建 | references/tsl-extraction.md |
| 编码/加密配置解码 | references/encoded-definitions.md |
| onBeforeCompile GLSL 注入陷阱 | references/shader-injection.md |
| 移植框架选择 + 项目结构 | references/porting-strategy.md |
| Unicorn Studio 专用流程 | references/unicorn-studio.md |
| shaders.com 专用流程 | references/shaders-com.md |