YouTube 縮圖 & 封面產生器 是做什麼的?
縮圖與封面以人們在資訊流中實際看到的大小(約 160 像素寬)進行評判。輸入一個標題,產出三個不同概念,由用戶挑選,最終產出一個版本,進行有限的修正,並以實際傳送尺寸提供檔案。所有工藝(概念框架、提示詞藍圖、文字規則、小尺寸把關)在此處;具體操作細節則位於 references/cli-contract.md 和 references/platform.md。
步驟 0 — 起飛前檢查
每次連線階段執行一次:
command -v genmedia
python3 "${CLAUDE_SKILL_DIR}/scripts/gm.py" preflight
python3 "${CLAUDE_SKILL_DIR}/scripts/thumbcheck.py" tools
blockers不為空、CLI 缺失或版本低於 0.7.0 →/genmedia-skills:setup。金鑰缺失 → 請用戶自行執行genmedia setup或設定環境變數FAL_KEY;等待用戶操作。切勿讀取、列印、要求或輸入金鑰。- 保留
config.announce_above_usd和config.confirm_above_usd(預設值 0.50 和 2.00):它們是成本門檻。 thumbcheck.py tools會回報preview、sheet、fit、frame哪些可以在本機執行(需要 ffmpeg 或 macOSsips),以及lockup是否可用(需要 Chromium 核心瀏覽器)。若兩者皆無 → 在「工作流程」步驟 6 中使用降級路徑。切勿依賴drawtext、Pillow 或 ImageMagick:文字由模型渲染。- 先恢復進度:若
.genmedia/projects/<專案名稱>/thumbnail.md與本次請求相符 → 讀取該檔案,從其第一個未完成的步驟繼續進行。切勿在有記帳記錄的專案上重新開始。
UX 規則
- 以用戶的語言回覆(土耳其文輸入 → 土耳其文輸出)。模型提示詞以英文撰寫;圖片上的文字保留其發佈時所使用的語言和拼寫。端點 ID、欄位名稱和路徑保持不變。
- 聊天中不要出現 JSON、請求 ID、提示詞或工具敘述。靜默等待;每批次最多顯示一行狀態。
- 提問預算:2 個問題,一次一個,以有標籤的選項呈現,僅在缺少答案時提問:
- Q1 關鍵字詞:沒有標題且沒有主題 → 詢問標題。已知標題 → 不要問;自行撰寫 2 到 4 個關鍵字詞(三個概念使用不同的字詞)。
- Q2 是否包含人像:只有在沒有任何線索時才問。有照片、
@handle或「我 / 我的臉 / ben」→ 包含人像。「無臉」、產品、螢幕錄影、風景 → 不包含人像。 用戶只要求一個縮圖或指定了概念 → 只產生一個草稿而非三個;挑選變成是或否。所有其他設定使用預設值,並在傳送行中說明:格式 16:9;文字語言與標題語言相同;調色板使用提供的品牌顏色,否則每個概念自行選擇;寫實海報風格;3 個概念;最終主圖 2560x1440,傳送為 1920x1080 和 1280x720。不計入提問預算:同意確認、挑選確認、成本確認。
- 挑選是一個硬性停止點。 顯示比對表並等待。沉默、成功的作業或你自己的偏好絕非挑選。可以推薦一個,但不能代替用戶選擇。
- 真實性。 縮圖可以戲劇化,但絕不能誤導。顯示或撰寫的所有內容都必須在影片中或誠實地源自影片:不得有虛構的數字、結果、反應、產品或來賓;不得有真實平台的假 UI;不得有用戶不擁有的標誌或角色。無法判斷影片內容 → 在承諾之前先詢問(這會取代 Q1 或 Q2,不會增加問題)。
- 人像。 真實人物的照片(包括用戶本人)→ 需要一次確認用戶已獲得該人物的同意,並說明上傳的內容會置於公開網址。不得使用用戶並非本人的名人或公眾人物;拒絕「長得像 <名人>」,應提供虛構臉孔或無臉概念。虛構臉孔是替代品:切勿將其呈現為真實姓名的人物、客戶、專家或來賓,並在傳送時說明該臉孔為 AI 生成。
- 成本:在第一次付費呼叫之前(工作流程步驟 4)估算整個請求,並使用起飛前檢查中的門檻進行成本把關:低於
announce_above_usd→ 直接執行;達到confirm_above_usd以下 → 一行顯示估算,然後執行;達到或超過該值 → 顯示估算並等待用戶明確同意(references/platform.md第 8 節)。批准僅涵蓋當下顯示的計畫;更大的計畫需要新的批准。切勿憑記憶報價;切勿為了省錢而替換用戶指定的模型。 - 限制:最多 3 輪草稿和 3 輪修訂;每輪嘗試都必須有所改變;被內容政策拒絕的請求不得原封不動地重新提交;包含請求 ID 的作業應恢復,而不是重新提交。
探索防護機制
以下路由表為快取資料(references/routing-image.md,驗證日期 2026-09-19)。在每次連線階段中,第一次對某端點進行付費呼叫之前:
genmedia models --endpoint_id <端點ID> --json
python3 "${CLAUDE_SKILL_DIR}/scripts/gm.py" schema <端點ID>
status必須為active。若狀態非active或回傳 404 → 使用references/routing-image.md中同一任務的下一層級端點;否則執行genmedia models "<名稱>" --no-classify --limit 10 --json,選擇最新且活躍的匹配項,並說明使用的是哪個模型。- 欄位名稱、列舉值和限制來自 Schema,不得憑記憶。用戶指定了模型名稱 → 先搜尋再質疑;新版本的模型位於供應商名稱空間下(
openai/、bytedance/、google/、alibaba/),而非fal-ai/。 - 切勿在未指定端點 ID 的情況下執行
genmedia run(智慧型路由會解析過時的預設值)。
路由
| 步驟 | 端點 | 原因 |
|---|---|---|
| 草稿,無參考素材 | openai/gpt-image-2.5/flare/text-to-image, quality: "medium" | 字體排印領導者;只有目標模型系列可以預覽文字,便宜的草稿模型不行 |
草稿,含人像照片、@handle 參照、產品照或影片影格 | openai/gpt-image-2.5/flare/edit, quality: "medium" | 參考素材放入 image_urls(最多 16 張);與最終版本同模型系列 |
| 最終版 | openai/gpt-image-2.5/sunburst/edit, quality: "high" | 精確度層級;被選中的草稿作為圖片 1,因此最終版是基於該構圖,而不是重新生成 |
| 修訂(文字、表情、背景、顏色) | openai/gpt-image-2.5/sunburst/edit, quality: "high" | 當前最終版作為圖片 1;每輪只修改一個範圍 |
| 無文字基底圖,寫實風格(替代路徑) | bytedance/seedream/v5/pro/text-to-image | 競技場 #1 寫實風格;文字稍後透過 GPT Image 2.5 編輯加入 |
| 人像身份識別基底圖(當臉孔漂移時) | fal-ai/nano-banana-2/edit | 身份一致性圖像的路由預設值;文字稍後加入 |
| 放大真實影格或照片 | fal-ai/seedvr/upscale/image;有臉孔或文字時用:topaz/upscale/image/precision | 忠實還原;Topaz 有臉孔與文字精煉模型 |
| 用戶影片的影格 | thumbcheck.py frame(本地 ffmpeg) | 精確時間戳記;無 ffmpeg → 請用戶提供螢幕截圖 |
| 用戶自訂標誌放置於無文字基底圖上 | thumbcheck.py lockup(本地瀏覽器) | 標誌從用戶的檔案放置;模型會重新繪製它 |
平局判定:
- 圖片上有文字 → 使用 GPT Image 2.5,即使是寫實概念。完全沒有文字(用戶指定)→ 草稿可在
bytedance/seedream/v5/pro/text-to-image或其/edit端點上執行;其餘流程不變。Seedream 拒絕 1280x720 尺寸(其最小面積為 1024x1024)且無quality欄位:發送image_size為 1920x1080(9:16 → 1080x1920,1:1 → 1536x1536)並根據其路由行按圖定價(2026-09-19 約為每張 USD 0.07:三個草稿約為 USD 0.20,重新計算總額)。 - 預設文字策略為一次烘烤。使用基底圖路徑(先產出無文字基底圖,再進行一次「僅添加此文字」的編輯)的情況:同一基底圖需要多種語言或 A/B 文字;變音符號失敗兩次;基底圖是真實影格或照片。詳情:
references/text-and-readability.md。 @handle→ 讀取.genmedia/characters/<代號>/character.json(錨點description;refs[]中找出role: "face"且active: true的參考),若該參考已有cdn_url則重複使用,否則上傳其檔案;使用錨點內容原樣。real_person: true→ 套用 UX 規則 6;若有記錄consent_confirmed_at則視為已確認。未知的 handle → 告知用戶,並提供/genmedia-skills:character;切勿自行替代。- 用戶指定了模型 → 在實時檢查後使用該模型;一行文字中提供預設選項。
- 設計是基底圖加上用戶的自訂標誌(品牌頻道、應用程式的商店預覽影片)→ 基底圖路徑,然後使用
thumbcheck.py lockup將標誌檔案放置於圖片寬度的某個比例位置(references/text-and-readability.md第 2b 節)。基底圖已存在(如launch-graphics的基底圖、用戶的照片)→ 無需付費呼叫:直接 lockup、成本把關、步驟 10。無標誌檔案 → 詢問用戶;切勿讓模型繪製標誌。
陷阱:
- 自動尺寸陷阱。 編輯端點將
image_size預設為auto,這會跟隨輸入圖片的尺寸:一張人像照片會產生一張直式縮圖。務必發送{width,height}。 - 預設品質陷阱。
quality預設為high且模型系列按 token 計費。務必在每次呼叫中設定:medium用於草稿,high用於最終版;xhigh或max僅在用戶同意價格後使用。 - 16 的倍數陷阱。 1920x1080 不是 GPT Image 的合法尺寸。應渲染 1280x720、2560x1440 或 3840x2160,然後使用
thumbcheck.py fit產生 1920x1080。 - 附加圖片陷阱。 文字轉圖像端點沒有圖片欄位;它會忽略照片但仍然收費。任何參考素材 → 使用
/edit端點。 - 重新生成陷阱。 以高品質重新執行提示詞會得到不同的圖片(此模型系列沒有
seed參數)。最終版是對選定草稿的編輯。 - 大小寫陷阱。 切勿讓模型將土耳其文轉為大寫:請自行撰寫最終字串(
thumbcheck.py text),用引號括起來,並逐字檢查。
工作流程
- 輸入。 標題或主題、格式(預設 16:9)、是否包含人像、品牌顏色、參考素材。HEIC、AVIF、TIFF 或非常大的照片需先處理:
thumbcheck.py fit <檔案> --max-side 2048 --out .genmedia/tmp/<名稱>.jpg;讀取並上傳該副本。使用 Read 工具打開每個本地圖片後再規劃(圖片中的人物和內容決定概念)。來自用戶影片的影格:python3 "${CLAUDE_SKILL_DIR}/scripts/thumbcheck.py" frame <影片> --at <秒數 或 分:秒>,然後用 Read 工具檢查。僅在 UX 規則 3 允許的情況下使用提問預算。 - 狀態卡片。 選取一個簡短的 ASCII
<專案名稱>(例如eksi-maya):它將作為批次label、帳本篩選器、輸出資料夾和專案資料夾名稱。自然語言標籤也能用;輔助腳本會將「Ekşi maya」折叠為Eksi-maya,這個折叠後的形式即為資料夾名稱。使用 Write 工具撰寫.genmedia/projects/<專案名稱>/thumbnail.md並在每個步驟後更新它:# <標題> — thumbnail promise: <一行:影片真正傳遞的價值> format: 16:9 | text language: <代碼> | face: <none | photo path | @handle> (consent: <yes, date | n/a>) | palette: <顏色> [ ] concepts [ ] drafts-1 [ ] gate [ ] pick: - [ ] final [ ] revisions 0/3 [ ] delivered log: - <日期> drafts-1: 1 <框架> "<文字>", 2 <框架> "<文字>", 3 <框架> "<文字>" - 三個不同的概念。 讀取
references/frameworks.md。私下腦力激盪至少五個,保留最強的三個,且必須使用不同的框架(不是同一個想法的三種配色),每個概念有自己的 2 到 4 個關鍵字詞。每個關鍵字詞都需通過文字檢查,並使用其upper字串原樣:關鍵字詞和圖片只能使用用戶陳述過的數字、結果、引言、產品和來賓(來自標題、簡報、他們的檔案);僅憑標題無法得知 → 使用問題、無約束關鍵字或無文字概念,或者提問(UX 規則 5)。拒絕任何違反真實性規則的概念。選擇包含人像 → 三個概念中至少兩個要顯示人像。標題已包含關鍵字 → 其中一個概念可以是無文字的。python3 "${CLAUDE_SKILL_DIR}/scripts/thumbcheck.py" text "şimdi izle" --lang tr - 驗證與定價。 為每個端點執行探索防護機制,然後:
GPT Image 2.5 回覆python3 "${CLAUDE_SKILL_DIR}/scripts/gm.py" price openai/gpt-image-2.5/flare/edit,openai/gpt-image-2.5/sunburst/edit1 units,這不是價格。此技能的美元費用計算方式:作業數 x 每次作業的尺寸、品質對應價格(不在列表中的尺寸 → 使用下一個更大的尺寸)取自references/routing-image.md中 GPT Image 2.5 的表格(t2i-typography註解;編輯端點的價格已包含一張輸入圖片的費用) + 每張額外參考圖片的references/platform.md§7 中的參考費用。歷史定價(2026-09-19):草稿 1280x720medium約 USD 0.01;最終版或修訂 2560x1440high約 USD 0.055;3840x2160high約 USD 0.10。典型完整作業(3 草稿 + 最終版 + 3 修訂):無參考時約 USD 0.25,有一張人像參考時約 USD 0.45 → 低於預設公告閾值,直接執行並在傳送行中陳述估算。第二輪草稿、更多參考圖、xhigh、max、4K 或一次請求中包含多個影片(每個影片一個專案名稱和狀態卡片;估算為總和)→ 重新計算並先套用成本門檻。 - 一次性批次草稿。 上傳參考素材一次並保留
urls(注意參數順序);上傳的內容為公開網址,若為私人素材則說明一次:從python3 "${CLAUDE_SKILL_DIR}/scripts/gm.py" upload ./me.jpgreferences/prompt-blueprint.md建構每個提示詞。使用 Write 工具將計畫寫入.genmedia/projects/<專案名稱>/drafts-1.json:執行批次:{"label": "<專案名稱>", "max_parallel": 3, "jobs": [ {"id": "draft-a", "endpoint_id": "openai/gpt-image-2.5/flare/edit", "est_cost_usd": 0.02, "input": {"prompt": "<概念A>", "image_urls": ["<人像網址>"], "image_size": {"width": 1280, "height": 720}, "quality": "medium", "num_images": 1, "output_format": "png"}}, {"id": "draft-b", "endpoint_id": "openai/gpt-image-2.5/flare/edit", "est_cost_usd": 0.02, "input": {"prompt": "<概念B>", "image_urls": ["<人像網址>"], "image_size": {"width": 1280, "height": 720}, "quality": "medium", "num_images": 1, "output_format": "png"}}, {"id": "draft-c", "endpoint_id": "openai/gpt-image-2.5/flare/edit", "est_cost_usd": 0.02, "input": {"prompt": "<概念C>", "image_urls": ["<人像網址>"], "image_size": {"width": 1280, "height": 720}, "quality": "medium", "num_images": 1, "output_format": "png"}} ]}等待所有作業完成。若某個作業失敗,其狀態行會說明原因;修復它或選擇跳過該概念。python3 "${CLAUDE_SKILL_DIR}/scripts/gm.py" batch .genmedia/projects/<專案名稱>/drafts-1.json - 比較圖與挑選。 若
preview與sheet可用:顯示python3 "${CLAUDE_SKILL_DIR}/scripts/thumbcheck.py" sheet .genmedia/projects/<專案名稱>/drafts-1 --out .genmedia/projects/<專案名稱>/sheet.pngsheet。若僅preview可用:逐一顯示草稿。若兩者皆無:提供每個草稿的本地路徑。無論如何,都要等待用戶的選擇(UX 規則 4)。 - 最終版:被選中的草稿的構圖精煉版。 使用參照被選中草稿的
/edit端點:執行單一作業並等待結果。{"id": "final", "endpoint_id": "openai/gpt-image-2.5/sunburst/edit", "est_cost_usd": 0.055, "input": {"prompt": "<精煉提示詞(保留基本構圖,要求更高細節與光照)>", "image_urls": ["<被選中草稿的網址>", "<人像網址>"], "image_size": {"width": 2560, "height": 1440}, "quality": "high", "num_images": 1, "output_format": "png"}} - 尺寸調整與輸出交付。 將最終版調整為所需尺寸:
使用python3 "${CLAUDE_SKILL_DIR}/scripts/thumbcheck.py" fit .genmedia/projects/<專案名稱>/final.png --sizes 1920x1080,1280x720 --out-dir .genmedia/projects/<專案名稱>/deliveryplatform.md中的規則產出 JPEG 版本(若需要)。 - 修訂(最多 3 輪)。 用戶要求變更(文字、顏色、背景、表情)→ 製作新的編輯作業,將目前的「最終版」作為輸入,並指定變更範圍。最多 3 輪,每輪只修改一個範圍。
- 完成與記錄。 更新狀態卡片(所有方框打勾)。輸出交付摘要。
檔案結構
.genmedia/projects/<專案名稱>/thumbnail.md:專案狀態.genmedia/projects/<專案名稱>/drafts-*.json:批次定義.genmedia/projects/<專案名稱>/delivery/:最終輸出版本scripts/thumbcheck.py:工具集scripts/gm.py:Genmedia 輔助腳本