Loading...

文章背景图

screenshot-to-code:把截图/设计稿直接转成可用代码的开源 AI 工具|部署与使用全指南

2026-11-05
0
- 字
- 分钟
|

screenshot-to-code:把截图/设计稿直接转成可用代码的开源 AI 工具|部署与使用全指南

适用读者:想把一张网页截图、Figma 设计稿或一段录屏"喂"给 AI 后直接拿到前端代码的开发者、独立建站者、UI 还原工程师。本文所有命令、端口、环境变量均来自官方 README,可直接照做;不写 star 数,版本类信息以官方仓库最新说明为准。

图1 screenshot-to-code 官方 README 示例:NYTimes 原始截图(左)与 AI 生成的复刻页面(右)对比

一、项目简介

screenshot-to-code 是 abi 开源的一个本地 Web 应用,作用是把截图、模型稿(mockup)、Figma 设计稿,甚至一段网站操作录屏,转换成干净、可运行的前端代码。它的定位不是"生成一整个后台系统",而是把视觉稿还原成静态/半静态前端页面——HTML、Tailwind、React、Vue、Bootstrap 这类栈。

项目本体是一个前后端分离的应用:前端是 React + Vite,后端是 FastAPI(Python),通过大模型 API 完成"看图 → 写代码"的过程。官方同时提供一个托管版 https://screenshottocode.com ,不想配环境的可以先去那里点一点;自托管的价值在于 Key 自己管、代码自己留、可以改源码接内部模型。

核心信息一览表

项目 内容
仓库 https://github.com/abi/screenshot-to-code
官方托管版 https://screenshottocode.com
技术栈 前端 React/Vite,后端 FastAPI(Python)
前端默认端口 5173(pnpm dev)
后端默认端口 7001(uvicorn main:app --reload --port 7001)
包管理 后端 Poetry,前端 pnpm
可选运行方式 本地源码运行 / Docker Compose
必配依赖 至少一个大模型 Key(OpenAI / Anthropic / Gemini 三选一)

适用场景

  • 拿到一张设计稿截图,想快速还原成可在浏览器打开的 HTML/Tailwind 页面;
  • 想把某个网页的视觉效果"抄"成前端原型做学习参考;
  • 需要把 Figma 稿或录屏转成可迭代的前端代码骨架;
  • 自托管一套"截图转代码"工具,避免把设计稿上传到第三方 SaaS;
  • 设计/前端协作时,设计师出图、AI 出第一版代码,工程师在上面接着改。

能力边界(务必先读)

  • 它生成的是前端页面代码,不是完整全栈应用;后端逻辑、数据库、鉴权不会自动写出来;
  • 不保证像素级 1:1 还原,官方 README 明确建议搭配 Gemini(负责提取截图里真实 logo/图片素材)与 Replicate(负责图片生成、抠图、图片编辑)才能拿到最好效果;
  • 开源版需要你自己准备模型 API Key 并承担调用费用;
  • 对录屏模式(video mode),官方 README 标注需要 GEMINI_API_KEY。

二、功能特性

  • 多栈输出:官方 README 列出的支持栈包括 HTML + Tailwind、HTML + CSS、React + Tailwind、Vue + Tailwind、Bootstrap、Ionic + Tailwind;
  • 多模型可切换:默认支持 Gemini 3 Flash Preview、Gemini 3.1 Pro Preview、GPT-5.5、GPT-5.4 Mini、Claude Opus 4.6 / 4.8 等代码生成变体;并通过 Replicate 调用 z-image-turbo 做图片生成。配得 Key 越全,一次生成里能自动组合的模型越强;只配一个 Key 就只用那一家;
  • 素材复用:配了 GEMINI_API_KEY 后,可以从截图里直接提取真实 logo / 图片素材,而不是让模型凭空画;这也是官方 README 把 Gemini 标为"强烈推荐"的主要原因;
  • 图片后处理:配了 REPLICATE_API_KEY 后,开放 edit_images(图片编辑)与 remove_backgrounds(抠背景)两个工具;没配这两个工具在设置面板里就是灰的;
  • 截图自校验(Screenshot preview):后端装好 Chromium 后,agent 可以把自己生成的页面在无头浏览器里跑一遍、自己截图检查哪里不对;缺 Chromium 时自动跳过该工具,设置面板会标明是否可用;Linux 下要 poetry run playwright install --with-deps chromium 才会把系统库一起装好(需要 sudo/apt);
  • 录屏转原型:支持把一段网站操作录屏转成可交互原型;该模式依赖 GEMINI_API_KEY;
  • 设置面板:前端加载后点齿轮图标,可以在 UI 里直接填 OpenAI / Anthropic / Gemini Key(Replicate 仍必须写在 backend/.env),不用每次改文件重启;
  • 代理友好:OpenAI 直连不通时,在 backend/.env 或设置面板设 OPENAI_BASE_URL 走代理,URL 必须带 /v1;
  • 前后端分离:前端 Vite 5173、后端 FastAPI 7001,前端通过 VITE_HTTP_BACKEND_URL / VITE_WS_BACKEND_URL 连后端,方便把后端单独部署到服务器上跑,本地只起前端。

三、官方界面预览

下面这组图来自官方 README 的 Examples 章节,左为原始 NYTimes 网页截图,右为 screenshot-to-code 生成的复刻页面。

图2 screenshot-to-code 官方 README 示例:NYTimes 原始网页截图

四、官方链接汇总

资源 地址
GitHub 仓库 https://github.com/abi/screenshot-to-code
官方托管版(免部署试用) https://screenshottocode.com
OpenAI Key 申请 https://platform.openai.com/api-keys
Gemini Key 申请 https://aistudio.google.com/
Anthropic Key 申请 https://console.anthropic.com/
Replicate Key 申请 https://replicate.com/
故障排查官方文档 https://github.com/abi/screenshot-to-code/blob/main/Troubleshooting.md

五、前置要求

按官方 README,本地源码运行前需要准备:

项 要求
Python 后端用 Poetry 管理;官方 README 建议先 pip install --upgrade poetry
Node 包管理器 前端用 pnpm(官方 README 直接给的是 pnpm install / pnpm dev)
模型 Key 至少一个:OPENAI_API_KEY / ANTHROPIC_API_KEY / GEMINI_API_KEY;强烈推荐再加 REPLICATE_API_KEY
浏览器(可选) Playwright + Chromium,用于"截图自校验";Docker 镜像内已自动装好
Docker 路线 需要本机装有 Docker 与 docker-compose

官方 README 提到:如果想用 Ollama 跑开源模型也可以,但官方明确标注"不推荐,效果较差",做法见 issue #354 下的一条评论,本文不展开。

先想清楚走哪条路:只是想体验一下,直接打开 https://screenshottocode.com 官方托管版最快;要长期用、Key 自己管、或者要接内部代理,再按下面本地或 Docker 路线部署。本地源码路线改代码方便,但要同时管 Python(Poetry)与 Node(pnpm)两套依赖;Docker 路线一键起,但改代码不会热更新,不适合二次开发。

六、安装部署

方式 A:本地源码运行(推荐折腾党)

  1. 克隆仓库并进入后端目录:
git clone https://github.com/abi/screenshot-to-code.git
cd screenshot-to-code/backend
  1. 在 backend/.env 里写入模型 Key(官方原文照抄):
echo "OPENAI_API_KEY=sk-your-key" > .env
echo "ANTHROPIC_API_KEY=your-key" >> .env
echo "GEMINI_API_KEY=your-key" >> .env
echo "REPLICATE_API_KEY=r8_your-key" >> .env
  1. 安装依赖并启动后端:
poetry install
# 安装截图预览用的 Chromium
# Linux 下用下面这条同时装好系统依赖(需要 sudo/apt):
# poetry run playwright install --with-deps chromium
poetry run playwright install chromium
poetry env activate
# 按提示执行打印出来的那条激活命令,例如:
# source /path/to/venv/bin/activate
poetry run uvicorn main:app --reload --port 7001
  1. 另开一个终端,启动前端:
cd screenshot-to-code/frontend
pnpm install
pnpm dev
  1. 浏览器打开 http://localhost:5173 即可使用。

方式 B:Docker Compose(最省事)

在仓库根目录执行:

echo "OPENAI_API_KEY=sk-your-key" > .env
docker-compose up -d --build

启动完成后访问 http://localhost:5173 。官方 README 同时提醒:这种方式下改代码不会自动重新构建,不适合二次开发;.env 里至少要写一个模型 Key,后端才能正常起来。

七、配置项说明

配置项 位置 说明
OPENAI_API_KEY backend/.env 或前端设置面板 启用 GPT 系列代码生成(GPT-5.5、GPT-5.4 Mini)
ANTHROPIC_API_KEY backend/.env 或前端设置面板 启用 Claude 系列(Opus 4.6 / 4.8 等)
GEMINI_API_KEY backend/.env 或前端设置面板 启用 Gemini 代码生成;负责从截图提取真实素材;录屏模式必需
REPLICATE_API_KEY 仅 backend/.env(设置面板不可填) 启用图片编辑、抠图、Replicate 图片生成;缺它则 edit_images / remove_backgrounds 不可用
OPENAI_BASE_URL backend/.env 或设置面板 配 OpenAI 代理;URL 路径里必须带 v1,例如 https://xxx.xxxxx.xxx/v1
VITE_HTTP_BACKEND_URL frontend/.env.local 前端连接的后端 HTTP 地址,例如 http://124.10.20.1:7001
VITE_WS_BACKEND_URL frontend/.env.local 前端连接的后端 WebSocket 地址;改后端端口时必须同步改这里

三个代码生成 Key(OpenAI / Anthropic / Gemini)是三选一关系;配得越全,前端在一次生成里能组合的模型越强。

八、使用流程

  1. 启动后端(7001)与前端(5173);
  2. 浏览器打开 http://localhost:5173 ;
  3. 首次进入点右上角齿轮图标,在设置面板里填好已有的模型 Key(Replicate 除外,它必须写在 backend/.env,改完要重启后端);
  4. 在主界面上传一张截图 / 设计稿,或粘贴一段录屏;
  5. 选择目标栈(HTML+Tailwind、React+Tailwind、Vue+Tailwind、Bootstrap、Ionic+Tailwind 等)与模型;
  6. 点击生成,等待后端调用模型返回代码;如果装了 Chromium,agent 会自己在无头浏览器里预览一遍再交回结果;
  7. 在预览区查看生成结果,可继续用自然语言让模型改局部,例如"把导航栏改成毛玻璃""卡片圆角加大";
  8. 满意后把生成的代码拷走,落到自己的项目里;需要图片素材时,Gemini 会从原截图里抽出来一并给你。

九、常用运维 / 更新命令

# 拉取最新代码
git pull

# 后端依赖更新
cd backend && poetry install

# 前端依赖更新
cd frontend && pnpm install

# Docker 路线重新构建
docker-compose up -d --build

# 后端改代码后自动热重载(已在 --reload 模式下)
# 前端 pnpm dev 也是热更新,无需手动重启

十、常见故障排查

现象 原因 / 处理
后端启动报错 官方 README 指向 issue #3 的一条评论给出通用修法;仍不行就开 issue
不知道去哪拿 OpenAI Key 看官方 Troubleshooting.md(见链接汇总)
国内直连 OpenAI 报错 在 backend/.env 或设置面板设 OPENAI_BASE_URL,URL 必须含 /v1
前端连不上后端 检查 frontend/.env.local 里的 VITE_HTTP_BACKEND_URL 与 VITE_WS_BACKEND_URL 是否指向真实后端地址与端口
后端启动报 UTF-8 错误 Windows 下用 Notepad++ 打开 .env,把编码切成 UTF-8 再保存
设置面板里"截图自校验"不可用 没装 Chromium;执行 poetry run playwright install chromium(Linux 加 --with-deps)
端口被占用 后端把 --port 7001 改成别的端口,同时同步改 frontend/.env.local;前端 Vite 默认 5173,被占用时按 Vite 提示换端口
edit_images / remove_backgrounds 不可用 没配 REPLICATE_API_KEY;该 Key 只能写在 backend/.env
录屏模式没反应 没配 GEMINI_API_KEY,录屏模式依赖 Gemini
Docker 路线起不来 先在仓库根目录写好 .env(至少一个模型 Key),再 docker-compose up -d --build;改 .env 后要重新 up
生成的页面样式对不上 截图越清晰、设计越规整效果越好;复杂字体/动效/第三方组件建议生成后手动改;Replicate 与 Gemini 配全效果明显更好
想把后端放到服务器、本地只跑前端 在服务器上跑后端,本地 frontend/.env.local 里把 VITE_HTTP_BACKEND_URL 与 VITE_WS_BACKEND_URL 指过去即可,注意 WebSocket 端口要放行

十一、风险与责任使用声明

  1. 本文所有命令、端口(5173 / 7001)、环境变量名、模型名均来自官方 README 与官方 Troubleshooting 文档,不构成任何第三方担保;版本类信息以官方仓库最新说明为准;
  2. 调用 OpenAI / Anthropic / Gemini / Replicate 的 API 会产生真实账单,请自行在各平台控制台设置额度告警;Key 写在 backend/.env 里,不要把这个文件提交到公开仓库;
  3. AI 生成的前端代码可能包含不安全写法(内联事件、未转义 HTML、外链第三方脚本等),上线前必须自行审计;
  4. 本项目生成的是视觉还原代码,不得用于未经授权复刻受版权保护的网站、品牌 UI 或商业产品界面;仅可用于学习、自有项目或已获授权的设计稿还原;
  5. 开源版按其仓库许可证发布;官方托管版 screenshottocode.com 是独立商业产品,与自托管版不是一回事,两者的模型配额、隐私政策、计费方式都各自独立。
评论交流

文章目录