jp-skill-image 是做什麼的?
將自然語言請求轉換為使用 Cloudflare Workers AI (@cf/black-forest-labs/flux-1-schnell) 生成的圖像。完整流程如下:使用者描述需求,Claude 負責 prompt 工程,腳本呼叫 Cloudflare API,然後將圖像以 JPG 格式儲存至本機。
適用時機
使用者想要根據描述生成圖像 — 「幫我產生一個咖啡廳的 logo」、「幫我做一個 AI 影片的縮圖」、「一張 cyberpunk 風格的貓咪照片」。Claude 的職責是在生成之前,將模糊的請求轉換成良好的提示詞。
不適用於: 編輯現有圖片、向量圖形/SVG 或影片。
步驟 0 — 務必先檢查 .env
在執行腳本之前,請確認憑證可以解析。腳本會依以下順序尋找:實際的環境變數 → 目前目錄或任一上層目錄的 .env → ~/.claude/skills/jp-skill-image/.env(全域備援)。
python3 -c "import sys; sys.path.insert(0, '$HOME/.claude/skills/jp-skill-image'); from generate import load_credentials; print('OK' if all(load_credentials()) else 'MISSING')"
如果缺少任何變數(例如新使用者或剛複製的專案),請勿嘗試生成圖像 — 先以三個簡短步驟引導使用者如何取得它們:
- CF_ACCOUNT_ID:Cloudflare Dashboard → 任何網域/專案 → Workers & Pages → Overview(顯示在右側),或直接前往
https://dash.cloudflare.com/profile/account-id... 如果那裡沒有顯示,請使用 Dashboard URL 中的 ID,或左側邊欄 Manage Account(非「My Profile」)區段中的 ID。 - CF_API_TOKEN:
https://dash.cloudflare.com/profile/api-tokens→ Create Token → Custom Token → 權限Account.Workers AI Scripts: Edit→ Account Resources:你的帳戶 → Create。 - 建立
.env檔案 — 放在專案根目錄,或放在~/.claude/skills/jp-skill-image/.env以便從任何資料夾都能使用 — 內容如下:CF_ACCOUNT_ID=xxxxx CF_API_TOKEN=xxxxx
如果專案使用企業代理伺服器連到網際網路(請檢查 .npmrc 中是否存在 HTTPS_PROXY,或對外部 API 的請求是否因逾時而失敗),請一併加入:
HTTPS_PROXY=<proxy-corporativo>
一旦確認變數存在,即可繼續正常操作。
如何執行
從任何目錄(圖像會儲存在相對於目前目錄的位置):
python3 ~/.claude/skills/jp-skill-image/generate.py "<最佳化的提示詞>" -o <檔案名稱>.jpg --steps <N>
"<最佳化的提示詞>"— 你編寫的提示詞(見下文),而非使用者的原始話語。-o/--output— 儲存位置(預設為out.jpg)。使用簡短且具描述性的名稱,例如coffee-logo.jpg。--steps— 擴散步數(預設為4)。flux-schnell 針對少量步數進行了最佳化,但為了獲得最佳品質,除非使用者要求速度,否則請使用 8。切勿低於 4 步。
成功時,腳本會輸出 Saved <檔案> ...,失敗時則會輸出可讀的錯誤訊息(包含已於內部處理的、回傳含 base64 圖像之 JSON 回應的情況)。
Claude 的真正任務:編寫最高品質的提示詞
這項技能的價值在於 Claude 會在使用者呼叫腳本之前,將其意圖擴展為一個生動、具體且技術正確的提示詞。切勿直接傳遞使用者的請求 — 務必先進行處理。
一個高品質的 Flux 提示詞應按此順序包含:
- 主要主體 — 場景中有什麼,要具體且無歧義。
- 風格/媒介 — 寫實照片、3D 渲染、平面向量、水彩畫、等角視圖、像素藝術等。
- 構圖與取景 — 特寫、遠景、居中、三分法、鏡頭角度。
- 光線與氛圍 — 黃金時刻、霓虹燈、柔和棚燈、戲劇性陰影、逆光。
- 色彩與細節程度 — 特定色調、背景、紋理、細節層級(「highly detailed」、「clean minimal」)。
- 技術品質(適用於寫實照片/渲染)— 像「cinematic」、「8k」、「sharp focus」、「professional photography」這類術語有助於 Flux 產出更接近頂級效果的結果。
轉換範例:
- 使用者:「一個咖啡廳的 logo」
- 你傳遞的提示詞:"minimalist logo of a steaming coffee cup, flat vector illustration, warm brown and cream palette, centered on a clean off-white background, simple bold shapes, modern branding, professional design"
嚴格規則:
- 提示詞一律使用英文(Flux 對英文回應較佳)。
- 1-2 句話,資訊密集,無廢話。
- 切勿要求圖像中出現可讀的文字/單字 — Flux 無法很好地渲染它們。
- 如果使用者提供的細節不足,請自行填補空白,做出最佳的創意決定(除非主體確實模糊不清,否則不要提問)。
- 預設使用
--steps 8以最大化品質;僅在使用者明確要求速度時才降至 4。
生成之後
- 確認檔案已儲存(腳本會輸出路徑)。
- 告知使用者檔案名稱和你使用的確切提示詞,以便他們進行調整並重新執行。
- 如果需要變化版本,請使用修改後的提示詞和新的
-o再次執行。
技術需求
CF_ACCOUNT_ID和CF_API_TOKEN可從步驟 0 的三個來源之一解析。- Python 3.8+。無需外部依賴 — 腳本僅使用標準函式庫(
urllib),因此不需要pip install或虛擬環境。 - 腳本會解碼 Cloudflare API 回傳的 base64 回應,並將其儲存為二進位 JPG 檔案 — 該回應並非直接是圖像本身。