EP Insignia
將來源圖片 URL 轉換為 EP 所期望的兩個徽章檔案,並上傳至
s3://prod-ep-cmh-insignia(EP AWS 帳號 405995789491,區域 us-east-2)。
慣例(符合儲存桶中現有檔案):
- 鍵值:位於儲存桶根目錄的
<prefix>.png和<prefix>.jpg,其中<prefix>為 EP 客戶前綴(小寫,例如audubonpd、alexanderncsheriff)。 - 兩者皆為 512x512。徽章會被修剪、縮放至合適大小並居中,並帶有少量邊距。
- PNG 背景為透明。JPG 背景為白色。
- Content-Type 分別為
image/png與image/jpeg。該儲存桶使用 BucketOwnerEnforced,因此請勿設定 ACL。
輸入
- 來源 URL。 若使用者未提供,請向其索取。本地檔案路徑亦可。
- 客戶前綴。 若未提供,請向其索取。請勿從機構名稱猜測。正規化為小寫,並拒絕任何非
a-z 0-9 - _的字元。
步驟
1. 處理圖片
在暫存區(或 mktemp -d)中使用全新的工作目錄,然後執行:
uv run -q <skill_dir>/scripts/process_insignia.py "<url>" "<prefix>" "<workdir>"
uv 會從腳本的內嵌 metadata 安裝依賴項。初次執行 AI 背景移除時,會下載約 180 MB 的模型至 ~/.u2net。
預設背景模式(--bg auto)的運作方式如下:
- 如果來源圖片已有透明背景,則保持不變。
- 如果邊框是單一純色(通常為白色),則僅移除與邊緣相連的背景。徽章內部的白色文字或細節則予以保留。
- 否則使用 AI 分割(rembg
isnet-general-use)。
覆蓋選項:--bg ai、--bg flood 與 --bg none 可強制指定模式。--margin N 設定內邊距像素數(預設為 4)。
若下載失敗(出現 403 或 429 錯誤),或 URL 指向的是 SVG 或網頁而非圖片,請告知使用者並要求提供直接的圖片連結。他們也可以自行下載檔案並提供本地路徑。
2. 上傳前審查
在對比色背景上建立 PNG 預覽圖,並將其與 JPG 並列顯示:
convert \( <workdir>/<prefix>.png -background '#c33' -flatten \) <workdir>/<prefix>.jpg +append <workdir>/preview.png
使用 Read 工具開啟 preview.png 並檢查:
- 沒有殘留的背景(紅色一側不應有光暈、方框或邊緣)。
- 徽章沒有缺失部分(內部白色被移除而出現的洞,或被裁切掉的文字)。
- 是正確的機構。
如果結果不正確,請使用不同的 --bg 模式重新執行。向使用者展示預覽圖,並顯示腳本報告的背景移除方法,以及任何關於來源圖片過小的警告。
3. 檢查 AWS 存取權限與現有檔案
aws sts get-caller-identity --query Account --output text # 應回傳 405995789491
aws s3 ls s3://prod-ep-cmh-insignia/<prefix>.
如果 <prefix>.png 或 <prefix>.jpg 已存在,請告知使用者。這是生產環境的儲存桶,因此在覆寫前務必獲得明確確認。請先備份現有檔案:
aws s3 cp s3://prod-ep-cmh-insignia/<prefix>.png <workdir>/backup/<prefix>.png
aws s3 cp s3://prod-ep-cmh-insignia/<prefix>.jpg <workdir>/backup/<prefix>.jpg
即使尚未存在任何檔案,在顯示預覽圖後仍需與使用者確認上傳。
4. 上傳
aws s3 cp <workdir>/<prefix>.png s3://prod-ep-cmh-insignia/<prefix>.png --content-type image/png
aws s3 cp <workdir>/<prefix>.jpg s3://prod-ep-cmh-insignia/<prefix>.jpg --content-type image/jpeg
使用 aws s3 ls s3://prod-ep-cmh-insignia/<prefix>. 驗證上傳,然後回報兩個 S3 鍵值、其大小,以及備份檔案的儲存位置。