AI 工具 15 min read

screenshot-to-code 是什麼?8 萬星截圖轉網站工具,自架前先看這 5 件事

screenshot-to-code 是 Abi Raja 開源的 MIT 專案:丟網站截圖、Figma 稿或 30 秒內的螢幕錄影,用你自己的 OpenAI/Claude/Gemini key 生成 HTML、React、Vue 前端程式碼,目前 8 萬顆星。我在 Mac 上把前後端裝起來並讀過原始碼——一次 Create 會同時打 4 次模型、影片模式只認 Gemini,自架前先把 key 和預算準備好。

screenshot-to-code 是什麼?8 萬星截圖轉網站工具,自架前先看這 5 件事
本文目錄 · 11

screenshot-to-code 是 Abi Raja 開源的「截圖轉程式碼」工具:丟一張網站截圖、Figma 稿或一段 30 秒內的螢幕錄影,它叫 LLM 產出 HTML + Tailwind、React、Vue 等前端程式碼。2026-10-12 我查的時候是 80,255 顆星、MIT 授權,三天前還有新 commit。

我是在 IG 滑到 傅子杰(@jarrenpoh)的介紹影片,他 9 月 16 日發的時候,標題寫它有 7.4 萬顆星、能直接復刻網站,要留言「給我」才傳連結。連結在這:github.com/abi/screenshot-to-code。

影片講的是「它能做什麼」。這篇補另一半:我把它 clone 到自己的 Mac 上,前後端都跑起來,再把原始碼讀過一輪,整理出自架之前該知道的事。

懶人包

  • 它是什麼:React/Vite 前端 + FastAPI 後端,本身不含模型,靠你自己的 OpenAI、Anthropic 或 Gemini API key 生成程式碼。
  • 最快試用:官方託管版 screenshottocode.com。要客製或資料不想經過第三方,才需要自架。
  • 自架門檻:至少一把模型 API key。沒有 key 也跑得起來,但按下 Generate 會直接失敗,而且畫面上的錯誤訊息不會告訴你原因。
  • 成本要先算:一次 Create 會同時跑 4 個 variant,等於同一張截圖打 4 次模型。
  • 影片模式只認 Gemini,貼網址自動截圖要另外申請 ScreenshotOne key。

screenshot-to-code 能做什麼?

README 列的輸入方式有四種,我在本機介面上看到的分頁也一致:

分頁輸入備註
Upload最多 5 張截圖,或 1 段影片PNG/JPG/MP4/MOV/WebM,單檔 20MB、影片 30 秒內
URL網址後端呼叫 ScreenshotOne 截圖,需要它的 API key
Text文字描述沒有截圖、直接用描述生頁面
Import既有程式碼匯入後再請它改
輸出的技術棧有 HTML + Tailwind、HTML + CSS、React + Tailwind、Vue + Tailwind、Bootstrap、Ionic + Tailwind 六種。

生成之後還能繼續用對話改(介面上叫 Update),或用「Select & edit」點選畫面上的元素指定要改哪一塊。

它不是「一次 prompt」,而是一個會自己檢查的 agent

讀 backend/agent/tools/definitions.py,後端給模型的工具有這些:

工具用途
create_file / edit_file寫出、修改生成的頁面
extract_assets從原始截圖裁出真的 logo 和圖片重用(要 Gemini)
generate_images / edit_images / remove_backgrounds生圖、改圖、去背(要 Replicate)
screenshot_preview用 headless Chromium 把自己生的頁面截圖回來,對照原圖修版面
retrieve_option取用其他 variant 的程式碼
screenshot_preview 是我覺得最實用的一個:模型生完頁面後,會在無頭瀏覽器裡看一次自己的成果再修。後端啟動時 log 會告訴你這個工具有沒有開:
Backend startup complete. Debug mode is DISABLED.
[screenshot_preview] Chromium available — tool enabled.

前提是你有跑過 playwright install chromium。沒裝的話它會自動跳過這個工具,不會報錯,只是少了自我檢查這一步。

自架要準備什麼?

README 的最低條件是至少一把模型 key:

Key必要性解鎖什麼
OPENAI_API_KEY三擇一GPT 系列 variant
ANTHROPIC_API_KEY三擇一Claude 系列 variant
GEMINI_API_KEY三擇一,官方強烈建議Gemini variant、從截圖抽真實素材、影片模式必備
REPLICATE_API_KEY強烈建議生圖、改圖、去背;只能寫在 backend/.env
前三把也可以不寫 .env,直接在前端 Settings 填。介面上寫「Only stored in your browser」,會覆蓋 .env 的設定。 screenshot-to-code 的 Settings 頁面,可以填 OpenAI、Anthropic、Gemini、Replicate 四把 API key 與 OpenAI Base URL

OpenAI Base URL 那一欄可以換成相容 OpenAI API 的代理或自架端點。README 也提到可以接 Ollama 的開源模型,但作者自己標註品質差、不推薦。

實際安裝步驟

我的環境:macOS、Node.js v24.18.0、pnpm 10.32.1、Poetry 跑在 Python 3.11.2(pyproject.toml 要求 ^3.10)。clone 的是 2026-10-09 的 a813977 這個 commit。

後端:

git clone https://github.com/abi/screenshot-to-code.git
cd screenshot-to-code/backend
echo "ANTHROPIC_API_KEY=your-key" > .env   # 至少放一把
poetry install
poetry run playwright install chromium      # screenshot_preview 工具要用
poetry run uvicorn main:app --port 7001

前端另開一個終端機:

cd screenshot-to-code/frontend
pnpm install
pnpm dev

我機器上 poetry install 跑了 6 分 03 秒,pnpm install 只要 8 秒。後端有 moviepy、numpy、playwright 這些依賴,第一次裝慢是正常的。

驗證後端有起來:

curl http://localhost:7001/
<h3>Your backend is running correctly. Please open the front-end URL (default is http://localhost:5173) to use screenshot-to-code.</h3>

然後開 http://localhost:5173。專案自己的 CLAUDE.md 有特別註明:Vite 只綁 localhost,用 127.0.0.1:5173 會連不上。

不想裝 Python 環境的話,根目錄有 docker-compose.yml:

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

README 說這條路適合純使用,改了程式碼不會自動重建。

沒有 API key 會怎樣?

我手邊這台機器沒有放模型 key,所以順便測了「沒 key」的行為。上傳一張首頁截圖,Stack 選 HTML + Tailwind:

screenshot-to-code 上傳一張網站截圖後的畫面,可選 Stack 並勾選從原圖抽取圖片素材

按下 Generate Code 之後,四個 Option 全部紅燈:

screenshot-to-code 沒設定 API key 時四個 Option 都失敗,畫面只顯示 Error generating code

畫面上只寫「Error generating code. Check the Developer Console AND the backend logs」。真正的原因在後端 log:

No OpenAI, Anthropic, or Gemini API key found. Please add the environment variable OPENAI_API_KEY, ANTHROPIC_API_KEY, or GEMINI_API_KEY to backend/.env or in the settings dialog. If you add it to .env, make sure to restart the backend server.
[GENERATE_CODE] Unexpected error: No API key

自架遇到生成失敗,第一步看跑 uvicorn 的那個終端機,不要盯著前端猜。改了 .env 記得重啟後端,這點 log 自己也提醒了。

這次沒有 key,所以「生出來的頁面像不像」我沒有實測。這篇談的是安裝、架構與成本結構,品質請以 README 的範例和你自己的試用為準。

一次 Create 會打幾次模型?

這是自架前我最想先搞清楚的一件事。backend/config.py 開頭兩行:

NUM_VARIANTS = 4
NUM_VARIANTS_VIDEO = 2

routes/generate_code.py 裡的規則是:Create 跑 NUM_VARIANTS(4 個),Update 固定 2 個,影片模式 2 個。四個 variant 是同時跑的,所以介面上才會出現 Option 1 到 Option 4 讓你挑。

每個 variant 用哪個模型,看你有哪幾把 key。routes/model_choice_sets.py 寫死了組合,摘幾種:

你有的 key圖片 Create 的模型組合
三把都有Claude Opus 5.5(medium)、Gemini 3 Flash(high)、Claude Opus 5.5(xhigh)、GPT-6.1 Sol(high)
只有 AnthropicClaude Opus 4.8(medium)、Claude Sonnet 4.6,輪流湊滿 4 個
只有 OpenAIGPT-5.5(high)、GPT-5.5(low),輪流湊滿 4 個
只有 GeminiGemini 3 Flash 與 3.1 Pro 的 minimal/low/high 組合
影片模式一律 Gemini 3 Flash(minimal)+ Gemini 3.1 Pro(high)
模型不足 4 個時,程式用 models[i % len(models)] 循環補滿。只有 Anthropic key 的話,同一張截圖會被 Opus 4.8 和 Sonnet 4.6 各跑兩次。

換算成帳單:你按一次 Generate,模型端是 4 次帶圖的生成請求,加上 agent 自己截圖檢查的來回。repo 裡 backend/costs/pricing.py 有各模型的單價表,作者也在註解記錄了評測結果,例如文字模式的 Gemini 3 Flash minimal「48s median,$0.05/brief」。圖片模式每次實際花多少,我沒有 key 沒辦法量,建議先在供應商後台設預算上限再開始玩。

README 和程式碼有落差

README 開頭的「Default AI models」寫的是 Claude Opus 4.6、Opus 4.8、GPT-5.5 這一批。但 2026-10-09 的兩個 commit 已經把預設組合換成 Opus 5.5 和 GPT-6.1 Sol:

2026-10-09 Use GPT-6.1 Sol low for the edit variant
2026-10-09 Switch image-create defaults to Opus 5.5 and GPT-6.1 Sol

這個 repo 更新很勤,模型組合幾週就調一次。要知道現在實際用哪些模型,看 backend/routes/model_choice_sets.py,README 會晚一步。

影片模式與網址模式的額外條件

IG 影片裡提到它推出了 Video to Code:錄一段網站操作的螢幕影片,它就能做出會動的原型。程式碼裡這條路寫得很硬:

if input_mode == "video":
    if not gemini_api_key:
        raise Exception(
            "Video mode requires a Gemini API key. "
            "Please add GEMINI_API_KEY to backend/.env or in the settings dialog"
        )

所以影片模式只有 Gemini key 能用,OpenAI 和 Anthropic 的 key 再多都沒用。

URL 分頁也不是後端自己去開瀏覽器截圖,而是呼叫 api.screenshotone.com。Settings 頁寫的是要填 ScreenshotOne 的 API key,免費額度每月 100 張。沒有這把 key 就自己截圖再上傳。

什麼時候不該用它?

  • 拿去複製別人的網站上線:工具做得到,不代表該這樣用。我會把它用在自己的設計稿、Figma mockup、內部系統改版的參考畫面,別人的品牌與設計就留在參考的位置。
  • 期待生出能直接接後端的專案:它輸出的是單一前端頁面(HTML 或元件),資料串接、路由、狀態管理還是要自己來。
  • 不想讓截圖離開公司:自架只代表前後端在你機器上,截圖仍然會送到你設定的模型供應商。內網機密畫面要先確認公司對外部 API 的規範。
影片裡還提到 MIT、微軟、Amazon 的開發者都在用。這點我在 repo 頁面找不到出處,就不轉述成事實了。

我的建議

只想看看效果:直接用 screenshottocode.com,不用裝任何東西。

想自架:先準備一把 Gemini key(影片模式和抽素材都靠它),在供應商後台設好月預算,再照上面的步驟裝。第一次生成失敗就看後端 log。

想挑模型或控成本:直接改 config.py 的 NUM_VARIANTS 和 model_choice_sets.py,這兩個檔案就是它的成本開關。

author
陳
陳彥彤

AI 工程師 · AI 顧問。Java 後端 8 年、AI 工程師 2 年。AI 內訓 · AI 導入顧問 · 前後端與雲端培訓。

support

覺得文章有用可以到 GitHub 給個 star,或是透過信箱聊聊 AI 內訓、AI 導入顧問或前後端 / 雲端培訓。

related

相關文章

[AI 工具] · 17min
Claude 隱藏福利查核:ultrareview 3 次免費、Max 每月 100 美元 API 額度,3 處已跟官方不同
IG 帳號 @lynexaai 在 2026-10-30 整理的 Claude 訂閱 5 個隱藏福利,我在 11-03 逐點對 Anthropic 官方文件查核,並寫了一支只讀腳本檢查自己的帳號適用哪幾項。5 點方向都對,但 ultrareview 指令與價格、API 額度的方案名稱已經變了,Guest Pass 也漏了「收到的人必須沒付費訂閱過」——最值錢的是 Max 每月 100 美元 API 額度,不領每月作廢,但 Console 組織綁了就不能自己改。
[AI 工具] · 12min
HookAce 是什麼?付費的短影音前 6 秒留存預測,我用免費規則版 Hook6 對照 Claude 排名
HookAce 是 Capafy 市集上的付費 Agent,上傳影片或腳本就預測第 1–6 秒每秒留存並給改寫建議,商品頁自己寫明數字是 AI 預測、不是平台數據。我用 10 類 regex 訊號做了免費的單檔版 Hook6,5 段開場和 Claude 排名 ρ = 0.8——只改口播稿用免費版就夠,要分析畫面才值得付費。
[AI 教學] · 16min
ASD-STE100 prompt 實測:照 Karpathy 叫 AI 用飛機維修手冊英文寫,違規少 39–69%
ASD-STE100 是 1986 年起用來寫飛機維修手冊的受控英文,Karpathy 在 2026-10-02 的 X 長文說他會叫 LLM「80% of the way to ASD-STE100」來寫。我用 Claude Sonnet 和 Haiku 實測 5 題:只加原話違規少 39–55%,加上流傳的擴寫句少 59–69%,字數不變——寫 README、操作步驟這類英文值得加,聊天類不必。