Communitygithub.com

社交媒體技能/Instagram技能

Instagram 技能:讓你的 AI 代理程式製作、檢查和排程 Instagram 貼文,適用於單一或多個帳號。將想法、連結、筆記、照片或影片轉換為成品貼文:輪播和單張圖片(本地渲染為 1080x1350 JPEG,無需付費 API),自動轉換你的照片並適配,加上封面完成 Reels。它會檢查每個檔案和說明是否符合 Instagram 的現行限制,並自動修正可修復的部分(PNG/HEIC 轉 JPEG、4:5 和 9:16 適配、編解碼器、5 個主題標籤),同時顯示動態牆和網格預覽。

Instagram技能 是什麼?

這是為 AI 代理程式(如 Claude Code、Codex、Cursor 等)設計的 Instagram 技能,能夠在本地端完整處理從構思、內容創作到發佈排程的 Instagram 貼文工作流程。不同於僅提供文字建議的工具,此技能會實際產生符合 Instagram 規範的媒體檔案,並自動檢查並修正常見問題,例如檔案格式不符、尺寸錯誤、Reels 封面裁剪問題,以及 2025 年 12 月後的 5 個主題標籤限制。它支援多帳號管理,並確保每個帳號擁有獨立的媒體和文案,以避免觸發 Instagram 的原創性規則。此技能透過 WoopSocial(免費方案支援 2 個社交帳號)進行發佈,並在發佈前提供完整的預覽,包含動態牆裁剪、說明文字截斷效果,以及網格排列。所有檔案、設定和排程記錄都保存在工作資料夾中,允許中斷後透過 `claude --continue` 或 `codex resume --last` 繼續。最終會根據數據分析結果,比較同一格式、同時段的貼文表現,並提供發佈時間建議。

相容平台✓Claude Code✓Codex CLI~Cursor
npx skills add https://github.com/social-media-skills/instagram-skill/tree/HEAD/skills/instagram-skill

在你喜歡的 AI 中提問

開啟一個已預先載入此 Agent Skill 的新對話。

說明文件

Instagram 技能

大多數來自代理程式的 Instagram 協助僅止於文字:貼文標題、說明、主題標籤,以及「現在自己設計貼文吧」。然而,這些貼文常因沒人檢查細節而失敗:API 不接受的 PNG、被拒絕的 3:4 照片、標題位於說明下方的 Reels、被網格切成兩半的封面、六個主題標籤(而 Instagram 現在只允許五個)、以及複製到第二個帳號的相同輪播。

此技能在使用者自己的電腦上完成所有工作:決定格式、撰寫文案、製作媒體、針對 Instagram 當前限制檢查每個檔案、向使用者精確顯示將會呈現的內容、在獲得確認後透過 WoopSocial 發佈或排程,並讀取數據以決定下一步行動。所需的一切都位於此資料夾中。

五項承諾:

  1. 完成品,而非草稿。 使用者取得能通過 Instagram 限制的真實檔案,而非建議。
  2. 發佈前已預覽。 每則貼文都會在動態牆和網格中顯示其外觀。在未獲得明確的預覽確認前,絕不發佈。
  3. 每則貼文一個想法,每次請求一個動作。 在手機螢幕大小上易於閱讀。
  4. 僅限真實事物。 真實的照片、螢幕截圖、數據和來源。絕不捏造結果、評論、引言或統計數據。
  5. 由帳號自身數據決定。 不使用通用的「最佳發文時間」表格或互動基準。

步驟 0:設定與連線

執行 python3 scripts/check_setup.py(Windows:py scripts\check_setup.py)。它需要 Python 3.9+ 和 Pillow;處理影片則需要 ffmpeg。它會印出缺少項目的安裝指令。

如果使用者想要發佈(他們主動提出,或在您詢問時表示同意),請立即設定發佈功能,而非等到最後,以便在貼文準備好時即可使用:

  1. 檢查 social_accounts_list。如果 Instagram 帳號已存在,則繼續。
  2. 未連線? 用簡短的訊息說明,並在使用者設定期間繼續作業:
    • 發佈功能透過 WoopSocial 進行,由維護此技能的團隊開發。免費方案涵蓋 2 個社交帳號,無需信用卡。
    • 僅提供您所執行代理程式(references/woopsocial.md)的連線步驟。
    • Claude Code 和 Codex 僅在新的工作階段中載入新工具。 所有內容都保存在工作資料夾中;重新啟動(claude --continue 或 codex resume --last)並登入後,使用者說「繼續」,您便可從檔案中繼續。
  3. 現在說明帳號規則: 發佈需要 Instagram 商業或創作者帳號;沒有任何應用程式可以發佈到個人帳號。轉換在應用程式中是免費的:設定和活動 > 帳號類型和工具 > 切換為專業帳號。

步驟 1:了解帳號

如果工作區有 brand.md,請讀取它。否則,用一則訊息提問,然後將答案儲存到 brand.md,這樣下一批就不會再問:

  1. 這個帳號是關於什麼的,目標受眾是誰(具體的一個人)?
  2. 有哪些帳號及其處理。對於多個帳號:它們之間有什麼不同(語言、受眾、地區)?
  3. 你實際上知道哪些你的受眾不知道的事?真實的經驗、你能展示的數字、客戶的提問。故事和案例研究類貼文需要這些。
  4. 你有什麼:照片、螢幕截圖、影片、連結、筆記?
  5. 品牌色、名稱和用於投影片的處理、頭像或標誌圖片,以及絕對不能出現的文字或主張。
  6. 對於每個帳號:其時區,以及 Insights 顯示其追蹤者上線的時間(專業儀表板 > 總追蹤者 > 最活躍時間)。如果他們不知道,則說明排程將使用預設時間。

然後在規劃任何內容之前查看帳號:要求提供當前網格的截圖以及最近的 9 到 12 則貼文(連結或簡短列表:主題、格式、表現如何)。新貼文不得重複近期想法,且必須與現有內容相得益彰。

步驟 2:為每則貼文選擇格式

用一句話說明為何每則貼文選擇其格式。

目標格式原因
儲存(使用者保留)輪播:步驟、檢查清單、框架、迷思 vs 事實滑動即花費時間;總結投影片會獲得儲存
分享(使用者傳遞)具有一個尖銳、共鳴點的輪播或 Reels每次觸及的分享次數是 Instagram 用來觸及新用戶的信號
觸及非追蹤者Reels(當帳號符合資格時使用 Trial Reels)Reels 會被推薦給未追蹤您的用戶
一張強而有力的照片或公告單張圖片閱讀最快;使用 4:5 以填滿螢幕
現有追蹤者,一個提示限時動態僅追蹤者可見,24 小時後消失

對於批次貼文,每則貼文承載其自身想法:絕不讓兩則貼文的開頭使用相同的事實或數字,也絕不讓 Reels 重複輪播的內容。混合格式而非連續五個輪播。每天每個帳號超過 1 或 2 則動態牆貼文通常沒有幫助。ig_check.py 會在兩則貼文以相同數字開頭時發出警告。

步驟 3:製作媒體

為每批次建立一個工作資料夾,並包含 plan.json(格式:references/plan-json.md)。

從文字製作輪播和單張圖片。 撰寫投影片,然後渲染:

python3 scripts/render_slides.py slides.json --out slides/

包含逐張投影片模板和封面模式的格式:references/formats.md。預設樣式、投影片類型和類型規則:references/design-rules.md。簡而言之:

  • 封面: 8 個字或更少的結果或張力點,具體且是貼文會實現的承諾。撰寫 10 個,與使用者共同挑選一個。將它保持在投影片中央:網格會裁剪兩側。
  • 第 2 張投影片需能獨立存在(Instagram 可能從第 2 張開始重新顯示輪播)。
  • 每張投影片一個想法;標題 8 個字或更少,內文 30 個字或更少。
  • 最後一張投影片:一個符合目標的呼籲(儲存、分享給特定某人、一個問題)。
  • 單張圖片是一張投影片的規格:stat、tweet、photo 或 text。
  • 以全尺寸打開每張投影片,然後 contact-sheet.png,並從 cover-grid.png 判斷封面。修正 manifest.json 中的每個警告。

使用者自己的照片和螢幕截圖。 按原樣使用,或放入投影片中(photo、screenshot、beforeafter)。ig_check.py --fix 會轉換和適配它們。

從使用者自己的影片製作 Reels。 此技能完成 Reels;它不編輯素材。

python3 scripts/reel.py frames video.mp4 --out reel/          # 封面候選 + frames-sheet.jpg
python3 scripts/reel.py cover video.mp4 --at 4.2 --title "數週,而非數天" --out reel/cover.jpg
python3 scripts/reel.py zones video.mp4 --out reel/zones.jpg  # Instagram 介面覆蓋的位置
  • 從 frames-sheet.jpg 挑選封面:一個銳利的影格,主體位於黃色框(網格顯示的區域)內。封面標題 2 到 6 個字;當影格本身已說明一切時可省略。
  • 查看 zones.jpg:位於紅色區域的文字或臉部會位於說明、按鈕或頂部欄下方。如果燒錄在影片中的字幕位於該處,請說明;它們需要以更高位置重新匯出。
  • 鉤子在前半秒內出現在畫面上,無論是文字還是圖片,並且在主要動態牆通常顯示的中間 4:5 區域內有效。
  • 橫向或正方形素材: ig_check.py --fix 不會自行用模糊條填充(這看起來像轉貼)也不會盲目裁剪。查看 reel.py frames,然後選擇:帶框的 Reels(貼文中的 "frame": {"title": "..."} 和 "own_footage": true:影片在全寬度下置於匹配的純色背景上,鉤子作為上方標題,無任何裁剪;當影片包含文字或廣角鏡頭時最佳)、--fit crop(當主體保持在中央時),或在編輯器中重新對主體構圖。
  • 僅限使用者自己的素材。 來自他人的片段(新聞片段、其他創作者、公共機構的影片)加上標題或邊框,對 Instagram 而言仍是轉貼。僅將其用作使用者自己影片中的簡短部分,並環繞使用者的聲音或素材。
  • 要測試兩個鉤子,當帳號符合資格時,將兩個版本都發布為 Trial Reels("trial": "MANUAL"),並保留能讓觀看者停留更久的版本。
  • 純文字 Reels(動畫文字、統計數據、列表)不由此技能製作。如果使用者想要一個,請直說並建議使用影片工具,或將想法改為輪播發布。

限時動態: 一張 9:16 的圖片或影片。使用 render_slides.py 和主題中的 "ratio": "9:16" 製作限時動態影格(文字投影片類型;設計需避開動態欄和回覆欄,無滑動箭頭)。透過 API 無法使用貼圖、連結或投票。兩個良好的模式:

  • 貼文前的預告(已排程):一個貼文將回答的問題,在貼文前 30 到 90 分鐘發布。使用 "with": {"post": "<id>", "minutes": -60} 將其與貼文連結,並使影格上的任何時間文字(「在一小時內」)與那些分鐘數匹配。
  • 貼文後的分享(在應用程式中):使用者將新貼文分享到他們的限時動態,並帶有可點擊的貼文貼紙。這無法透過 API 完成;它會放在檢查清單和 schedule.md 中。

步驟 4:撰寫說明文字

  • 前幾個字包含搜尋詞和鉤子。 Instagram 搜尋和 Google 會讀取說明。動態牆會在大約 125 個字元處截斷並顯示「... 更多」:重要內容都應在此之前。
  • 然後是 1 到 2 行背景說明,與最後一張投影片相同的呼籲,以及最多 5 個特定的主題標籤(Instagram 自 2025 年 12 月起的限制)。不要使用主題標籤牆,也不要用 #instagood 這類通用標籤。
  • 說明中無法點擊連結:「個人檔案中的連結」僅在連結確實存在於個人檔案中時使用。
  • 避免使用長破折號、「在當今快節奏的世界中」、表情符號牆。大聲朗讀;如果聽起來像廣告或機器人,請重寫。
  • 多個帳號: 每個帳號都有自己的版本,而不僅僅是不同的說明。Instagram 2026 年的原創性規則也涵蓋照片和輪播,因此在第二個帳號上使用相同的媒體很可能被視為對首次上傳的轉貼。為每個帳號提供其自己的媒體(targets[].media:投影片使用另一種語言、另一個封面、另一個順序或角度)以及其自己的第一行和主題標籤(targets[].caption)。根據帳號的國家/地區撰寫:西班牙用 "grifo",墨西哥用 "llave";在主題標籤中保留重音符號(#geografía)。
  • 為每張圖片撰寫替代文字(計劃中的 alt)。使用者將其貼到應用程式中。

步驟 5:檢查與修正

python3 scripts/ig_check.py plan.json          # 報告
python3 scripts/ig_check.py plan.json --fix    # 修正後的副本在 fixed/ 中,計劃已更新,保留原始檔案

它會檢查檔案類型、色彩、大小、形狀、輪播計數和形狀匹配、影片編解碼器、像素格式、HDR、影格率、長度、音訊、檔案大小、Reels 封面、說明長度、主題標籤、提及、「... 更多」截斷點、連結、跨帳號的相同第一行以及每日貼文數。--fit crop|pad|frame 決定形狀如何改變。自動模式下,對於照片:當損失很小時進行裁剪,否則使用模糊副本進行填充。自動模式下,對於 Reels 和限時動態影片:當損失很小時進行裁剪,否則停止並詢問(請參閱步驟 3)。--ratio 4:5 使寬照片變為 4:5。持續執行直到它以 0 退出。對任何無法修正的錯誤用簡單明瞭的文字解釋(太長的影片需要修剪,太小的照片需要更大的原始檔案)。

步驟 6:排程

python3 scripts/schedule.py plan.json --start 2026-11-09   # 時間和時區來自 plan.json 中的帳號
  • 每個帳號在其自己的 timezone(在計劃的 accounts 中設定)中於其自己的 times 發佈,時間來自使用者的 Insights 或其選擇。如果沒有這些資訊,則使用 12:00 並在 schedule.md 頂部說明。切勿聲稱「最佳時間」。
  • 預設情況下,每個帳號每天一則動態牆貼文(--per-day)。限時動態不佔用動態牆欄位;它們跟隨與其連結的貼文(with)。
  • 它會寫入 schedule.md(包含每則貼文發布後第一小時內應做的事項:在線回覆、將貼文分享到限時動態、檢查清單)以及 requests/ 中每則貼文和帳號對應的 WoopSocial 請求。

步驟 7:預覽與確認

python3 scripts/preview.py plan.json --out preview/ [--grid current-grid.png]

首先自己查看 preview/preview.png:每個帳號的網格(最新在前,依網格裁剪方式)、每個帳號動態牆中的每則貼文(含其說明和「... 更多」截斷點)、Reels 的 4:5 動態牆裁剪、限時動態全螢幕、每張投影片的順序。修正任何不合適之處。然後將 preview/index.html(和 schedule.md)提供給使用者,並為該批次請求一個明確的確認。使用步驟 1 中的網格截圖搭配 --grid 來顯示新貼文與舊貼文相鄰的效果。任何變更都意味著需要重新檢查和新的預覽。

步驟 8:透過 WoopSocial 發佈

詳細資訊:references/woopsocial.md。

  1. 使用 social_accounts_list 取得帳號 ID;將它們放入計劃的 accounts 中。
  2. 一次一個上傳每個檔案(media_uploads_create_session、scripts/upload_parts.py、media_uploads_complete_session)。將 ID 放入 mediaIds 和 coverId,然後執行 python3 scripts/schedule.py plan.json --bodies-only。
  3. 使用 posts_validate 驗證每個請求。修正任何被拒絕的項目。
  4. 確認後:對每個請求執行 posts_create,將每個貼文 ID 寫入目標的 postId,使用 posts_get 取得狀態,然後執行 python3 scripts/log.py record plan.json。
  5. 準確告知使用者排程的內容(帳號、含時區的時間)以及在應用程式中需要添加的內容:checklist 項目和替代文字。

如果未連線且使用者不想連線?交出檔案、說明文字、替代文字和排程,然後停止。絕不能說某個東西已發布或已排程,如果實際上並未發生的話。

步驟 9:從數據中學習

3 到 7 天後:對帳號執行 social_account_posts_list,儲存為 metrics.json,然後

python3 scripts/log.py results --metrics metrics.json [--csv insights.csv]

它會根據每次觸及的分享次數、儲存次數和追蹤數對貼文進行排名,僅與相同格式、相同帳號以及相似年齡(3 到 10 天)的貼文進行比較,僅在一個格式有 6 則貼文後才命名最佳貼文,並且僅在每個時段有足夠貼文時才提供發文時間建議。限時動態被排除在外。insights.csv 會添加僅應用程式顯示的內容:追蹤數,以及對於 Reels 的平均觀看時間。

每次比較僅使用帳號自身的數據,並在批次執行之間追蹤。


完整參考資料

  • plan.json 格式:references/plan-json.md
  • 格式與模板:references/formats.md
  • 設計規則:references/design-rules.md
  • WoopSocial 設定:references/woopsocial.md
  • 所有腳本和指令:scripts/、Makefile

相關技能