Reels 封面
每支 Reels 都擁有專屬封面。封面由您的真實照片和字體構成,文字會確保在 Instagram 個人檔案網格的可視範圍內。
設定:在此設定您的品牌風格
首次執行前請編輯一次。
| 設定項目 | 位置 | 預設值 |
|---|---|---|
| 強調色 | scripts/cover.html 中的 --brand | #3b82f6 |
| 標題字型 | scripts/cover.html 中的 --display-font | Anton (免費,Google Fonts) |
| 副標題字型 | scripts/cover.html 中的 .sub | Montserrat Bold (免費) |
| 預設副標題 | 您的封面 | 例如:"from a Home Cook",或留空 |
| 照片資料夾 | library.json 中的 photos_dir | <PATH_TO_YOUR_COVER_PHOTOS> |
| Canva 照片資料夾 (可選) | library.json 中的 canva_folder | <YOUR_CANVA_FOLDER_ID> |
| Canva 封面主文件 (可選) | 參考您現有風格的範本 | <YOUR_CANVA_COVER_MASTER_DOC_ID> |
| Canva 草稿設計 (可選) | 用於從 Canva 匯出照片 | <YOUR_CANVA_SCRATCH_DESIGN_ID> |
| 封面日誌 | pick.py 的 COVER_LOG 環境變數 | 專案根目錄的 drafts/social/cover-log.json |
| 完成封面的存放位置 | 步驟 8 | <YOUR_VIDEO_FOLDER>/<Video> YYYY-MM-DD/Covers/ |
| 禁用詞 | hooks.md 規則 | 您的清單 (例如舊的優惠名稱) |
專為 Instagram 設計。 封面可作為一般 IG + TikTok + Shorts 貼文的影片縮圖 (例如 Metricool 的 videoThumbnailUrl)。只有 Instagram 網格對設計有意義。切勿取代貼文已有的封面。
絕不 AI 生成圖像。 背景是您的照片,佈局複製自您的既有封面。程式碼僅負責編排它們。
預設風格 (可依喜好調整)
僅參考您主文件中最新的封面。 您已不再使用的舊風格不計入。
- 一張明亮、中性的您與相關道具 (筆電、相機、手機、產品) 的照片,文字區域為素色牆面
- 標題使用白色顯示字型,一律全大寫,置中對齊,2 或 3 行,字級適中
- 可選的副標題,使用 Montserrat Bold,正常大小寫
- 預設:無陰影、無外框、文字後無色塊或暗化處理、無強調色文字
- 無標籤、無傾斜字型、無手寫或草書字體、無大數字或系列佈局
- 唯一的額外元素:偶爾使用素色的強調色手繪箭頭
- Reels 圖示下方不留文字:Instagram 的網格會將圖示放置在每個方格的右上角。render.mjs 會對任何位於 x 超過 760 且 y 小於 540 的內容發出警告。
標題規則、鉤子類型和標籤都寫在 hooks.md 中。撰寫標題前請先閱讀。
檔案
| 檔案 | 說明 |
|---|---|
scripts/cover.html | 唯一的佈局:標題 + 可選副標題,加上 arrow / inset / avatar 額外元素。品牌設定在最上方。 |
scripts/render.mjs | 渲染 1080x1920 的 JPG 檔案 + 兩種預覽圖,並對文字超出安全區或檔案超過 8MB 發出警告。 |
scripts/pick.py | 根據主題篩選照片,封鎖最近使用過的 9 張照片,並顯示最近的佈局和鉤子類型。 |
library.json | 每張照片的標籤資訊 (姿勢、道具、空白區域位置、對焦點)。內附範例;請建立您自己的。 |
封面日誌 (COVER_LOG) | 每張已發布的封面記錄。用來確保封面獨特性。 |
photos_dir | 您的原始解析度照片 (僅限本機,勿提交至 git)。 |
scripts/ 需要 puppeteer-core (在 scripts/ 中執行 npm i puppeteer-core,或將 scripts/node_modules 符號連結到其他技能的安裝目錄) 以及 Google Chrome 和 ffmpeg。render.mjs 預設指向 macOS 的預設 Chrome 路徑;如果您的路徑不同,請修改 executablePath。
執行步驟
1. 了解 Reels。 您需要每支 Reels 的轉錄稿、說明文字和開場文字卡。指出該 Reels 承諾的一個重點。
2. 標題。 選擇一個不同於前一張封面的鉤子類型 (pick.py 會顯示)。撰寫 3 或 4 個選項,每個 3 到 8 個字,選出最有力的一個。它不得與開場文字卡逐字重複。
3. 照片。
python3 .claude/skills/reel-covers/scripts/pick.py "<主題關鍵詞>" --space top
然後 查看前 3 或 4 張 照片再選擇 (使用 ffmpeg 建立聯絡表)。道具需與主題相符:筆電對應 email、系統或網站;相機或產品對應設備;您說話的畫面對應銷售和心態。客戶故事則使用客戶的插圖或頭像 (需獲得許可)。
4. 佈局。 不要與前一張封面相同 (請參閱 pick.py)。將文字放在照片的空白區域 (space),設定 focus 以確保臉部清晰,並設定 y 使文字區塊位於 300 到 1250 之間。
5. 渲染。
OUT="<工作目錄>/covers" node .claude/skills/reel-covers/scripts/render.mjs covers.json
{"covers":[{"id":"3-the-exact-close","img":"<PATH_TO_YOUR_COVER_PHOTOS>/<file>.jpg",
"data":{"head":"the exact close I use on sales calls","sub":"from a Home Cook","y":560,"headroom":280}}],
"history":["<封面日誌中最近幾張已發布的封面檔案,最新者優先>"]}
請將 ~ 展開為實際路徑;render.mjs 不會自動展開。非零的結束碼代表有警告,因此在分享前請修正。
6. 自行檢查。 開啟 _proof.png 和 _grid-phone.png:
- 在網格預覽圖 (130px 寬) 中標題是否可讀?若不可讀,請刪減字數。
- 在完整封面和網格裁切圖中,臉部是否與文字保持距離?
- 在網格中與其他封面相比,它是否看起來不同 (照片、佈局、文字位置),但又明顯屬於同一系列?
7. 審核關卡。 向使用者顯示 _grid-phone.png 和 _proof.png,附上每個標題和一個替代標題。詢問:"這些封面能吸引人停下來觀看嗎?" 根據要求更換照片或文字並重新渲染。這只需幾秒鐘。
8. 核准後:
- 將每個 JPG 檔案複製到
<YOUR_VIDEO_FOLDER>/<Video> YYYY-MM-DD/Covers/,命名方式與 Reels 相同 (例如3. the exact close.jpg)。 - 在封面日誌中為每個封面新增一筆記錄:
{"date":"YYYY-MM-DD","video":"<影片-代碼>","reel":"3. the exact close","photo":"<檔案>","layout":"stack","hook_type":"how","head":"the exact close I use on sales calls","file":"<Covers 資料夾的絕對路徑>"} - 將檔案交給您的排程步驟,由其負責上傳每個封面並將其附加到 Instagram 貼文。
獨特性規則
- 最近 9 張封面使用過的照片不得重複使用。
pick.py會強制執行此規則。 - 不得連續兩次使用相同的佈局或鉤子類型。
- 輪替副標題:不使用、置中對齊,或向右偏移並傾斜 (
subdx、subrot)。 - 根據照片變化文字位置 (上方、中間、靠左或靠右對齊)。不要總是放在頂部置中。
- 如果照片庫變得匱乏 (最近幾乎用過所有好照片),請提出建議,並提議進行新的拍攝,而不是破壞規則。
佈局要點
- 9:16 裁切會將臉部位置提高。 大多數照片是 2:3 比例。縮放至高度 1920 時會失去兩側,而非頂部,因此原本看起來位置較低的臉部會落在 y 約 600 到 800 的位置。最常見的錯誤是文字壓在主體的頭髮上。 在檢查任何其他項目之前,請先檢視每張預覽圖中是否有此情況。
- 使用
headroom修正,而非縮小文字。"headroom": 150-350會將照片向下推,並拉伸主體上方素色牆面的區域。在素色攝影棚牆面上效果不明顯。不要在複雜的戶外背景 (樹木和天空) 上使用。 - 標題大小: 自動設定:4 個字或以下為 104px,較長則為 84px,最多可縮小至 3 行。
- 如果副標題會碰到頭部,請刪除它。 它是點綴,而非主要訊息。
- 放置文字時要考慮 Reels 圖示: 要嘛將文字區塊起始於 y 560 或更低 (使用
headroom將照片向下推以避開頭部),要嘛保持在高位並使用align: left, right: 320。在同一批次中混合使用這兩種方式。 - 3:4 的網格裁切不會隱藏 y 240 以上的任何內容。請確保文字起始於 280 或更低的位置 (render.mjs 會發出警告)。
新增照片
從本機資料夾: 使用 md5 檢查與 photos_dir 比對,避免重複,然後複製為 <name>-<k>__local<MMDD>.jpg,最後加上標籤。
從 Canva (可選)。 Canva 無法直接從上傳資料夾下載圖片。一個可行的途徑是使用一個僅用於匯出的草稿設計:
- 對
<YOUR_CANVA_FOLDER_ID>執行list-folder-items,並將資產 ID 與library.json進行比對 (將 ID 保留在每個檔名中的__之後)。 - 使用
open_transaction對<YOUR_CANVA_SCRATCH_DESIGN_ID>執行read-design,然後針對每張新照片執行一次edit-design呼叫,並使用add_page(2400x3600,標題 = 資產 ID)。讀取新的頁面 ID,然後對每個頁面執行一次insert_fill呼叫 (全頁面,top 0, left 0)。最後執行commit。 - 將設計匯出為 PDF,
export_quality: pro,然後執行pdfimages -j -f <第一頁> -l <最後一頁> -p all.pdf ex/img。PDF 會保留原始 JPEG 未經壓縮。也可以使用 JPG 匯出,但每頁只會得到一個 URL。 - 將每個檔案儲存為
<名稱>__<assetid>.jpg到photos_dir。多張照片可能共用同一個 Canva 名稱,因此 ID 可用於區分它們。然後為它們加上標籤。
如果同一張照片被上傳了兩次,請保留一份設為 ok,並將另一份標記為 "ok": false, "note": "duplicate of N",否則不重複規則可能會選到同一張照片兩次。
在 library.json 中為每個新檔案加上標籤,方法為檢視它:
{"file":"photo_-13.jpg","pose":"smiling at laptop","props":["laptop","desk"],"topics":["email","follow","systems","website"],
"cap":false,"space":["top"],"focus":"50% 55%","ok":true}
space 是文字可以放置且不會碰到臉部的區域。將模糊、過暗或角度不佳的照片標記為 "ok":false,而不是刪除它們。
相關技能
video-reels:開場文字卡,封面標題不得與其重複- 排程技能 (可選):上傳封面並排程 Reels