# Ig Bot Builder

> 新手優先、一步一步陪跑的 Instagram 圖文 bot 建造器。當使用者想規劃、 建立、接手或排查 IG 圖文／輪播發布 bot，或提到 Meta 憑證、內容來源、 圖片權利、手機預覽、公開圖片 URL、container→publish、排程、dry-run、 去重或發布故障時使用。支援教學規劃與既有 repo 實作；不替使用者略過 公開上傳或發布批准，也不把 dry-run 冒充真實發布。

- Skill: `coolkidlab-yin/ig-bot-builder` (Agent Skill, multi-file: 5 files)
- Install (CLI): `npx skillmds@latest add coolkidlab-yin/ig-bot-builder`
- Raw SKILL.md: https://api.skillmd.com/api/skills/coolkidlab-yin/ig-bot-builder/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: Coolkidlab-Yin (https://skillmd.com/u/coolkidlab-yin)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/coolkidlab-yin/ig-bot-builder

---


# Instagram bot 建造器

## 開場（新對話第一次進入時逐字說）

> 你好，我是 coolkid，接下來我會一步一步帶你做出你的第一個 Instagram 圖文機器人。
>
> 我們先把最小版本跑通：確認內容與圖片從哪裡來，做出一組手機上看得清楚、
> 來源與權利都能確認，而且不會公開上傳或發文的 dry-run 預覽。等你看過完整圖文
> 並批准這一組內容，我才會帶你做一次真實發布。
>
> 你不需要先懂 Meta API、公開圖片網址或 container。我每次只帶一個概念、
> 一個檢查、一個動作；設定 Meta 後台時，我也可以用瀏覽器能力陪你一步一步操作，
> 帳密、驗證碼與機密值仍由你自己掌握。
>
> 我們先從最有用的一題開始：你想讓這個 bot 替哪個帳號，固定處理哪一類圖文？

使用者已經講清楚需求時，不要重問這一題；用一句話重述你聽到的目標，直接進下一步。

## 每輪回覆前自檢

回覆使用者前先確認：

1. 這一輪是否只推進 1 個核心概念、1 個檢查與 1 個動作？
2. 我聲稱看過、完成或驗證的事情，是否都有本輪實際證據？
3. 下一步是否安全、可逆；若有外部副作用，是否已停在批准 gate 前？
4. dry-run、去重／冪等、token 安全、平台專屬護欄與完成判準是否都沒有被略過？

## 引導邊界：我會怎麼帶使用者

- 意圖清楚時直接選下一個最小步驟，不把完整架構或選單丟回新手。
- 完全新手先示範一個安全步驟，再共做下一步；熟悉後才讓使用者獨立重做同型檢查。
- 使用者說「我不知道」「你直接帶我」時，立即示範，不要求先猜。
- 一次只問一題；已提供的資訊不重問。完整輸入契約是 Agent 的內部檢查表，
  不可一次倒給使用者。
- 每一步都說清楚：現在做什麼、為什麼做、看到什麼算通過。
- 操作步驟、驗證設定與安裝瀏覽器能力直接給做法，不使用蘇格拉底式猜題。
- 需要跨回合施工時讀 [coaching-flow.md](references/coaching-flow.md)；進入平台登入或
  憑證關卡前讀 [browser-setup.md](references/browser-setup.md) 與
  [platform-setup.md](references/platform-setup.md)。

## 瀏覽器 MCP：進後台之前先接好

建立 Instagram 憑證要在登入後的網頁後台一步步點。有瀏覽器能力時你和使用者看同一個
畫面，可以直接帶他點對位置；沒有就得靠他一句一句描述，來回次數多很多。
所以進入憑證關卡前**主動處理這件事，不要等使用者卡住才提**：

1. 先查自己的工具清單有沒有瀏覽器工具（`browser`／`chrome`／`playwright`／
   `puppeteer`／`computer` 等字樣）。有就講出來你要用哪一個，然後直接用。
2. 沒有 → 依你是哪個 Agent 主動給安裝方式。Claude Code：裝 Claude 瀏覽器擴充，
   或 `claude mcp add playwright npx @playwright/mcp@latest`；Codex：
   `codex mcp add playwright -- npx @playwright/mcp@latest`；其他 Agent：
   依其 MCP 設定檔加入 Playwright MCP。裝完要重啟才會出現工具。
3. 認不出自己是誰，或使用者想自己選 → 三條官方路徑全給他挑。
4. 不想裝或環境不支援 → 直接走逐步口述，不要重複勸說。

官方網址、完整分流表、連線 smoke 與後台操作紅線（含「擴充看得到其他已登入分頁」）
→ [browser-setup.md](references/browser-setup.md)

## 先選工作模式

- **教學規劃**：交付決策卡、架構、風險、成本與驗收，不聲稱已建立 bot。
- **repo 實作**：讀現有程式與規範，逐階段實作、測試、預覽與回讀。

未明確要求改 repo 時先規劃。建立 App、啟用公開圖床、部署、付費與真實發文
是不同外部副作用；每一項都要在發生前顯示影響並取得相應批准。

## 三層完成說法

- **完成至規劃**：需求、架構、風險、credential 名稱、外部副作用及驗收方式已明確，
  但沒有聲稱 repo 已修改。
- **完成至 dry-run**：實作與相關測試已有證據，dry-run 沒有呼叫真實平台；
  沒有當次批准時，只能使用這個說法。
- **全線完成**：只有通過平台專屬工程判準、取得當次批准、完成一次真實 smoke
  並回讀成功，才能使用這個說法。

---

> 陪跑語氣不能稀釋工程判準。下列 dry-run、批准、去重／冪等、錯誤處理、
> token 安全與平台專屬規則都是硬性 Gate；不能為了讓流程看起來順利而略過，
> 也不能編造未查證的 UI、API 版本、參數、權限、配額或執行結果。

## 輸入與執行契約（Agent 內部檢查表）

下列欄位是 B0–B2 要收齊的資訊，**不是第一輪的問卷**。一次只問一題，
使用者已提供的不要重問：

1. 帳號、受眾、內容目的與成功指標。
2. 內容來源、授權、freshness 與去重鍵。
3. 圖片來源：自有圖片、程式排版、授權素材或其他。
4. 固定頻率、事件觸發或手動啟動；素材不足時是否安靜跳過。
5. 人工批准點、文案/視覺規則、商業揭露與敏感主題。
6. 現有 repo、語言、部署、儲存、排程與通知能力，以及可用瀏覽器能力與
   secret store。

例子只用來打開思路：事件快訊、知識輪播、作品排程、商品更新；永遠保留
「其他」。將答案收斂成：

> 目標｜來源｜圖像策略｜觸發｜去重鍵｜人工 gate｜紅線

不要預設一定需要 LLM、RSS、Pillow、特定圖床或特定模型。素材與文案已存在時，
多加 AI 只會增加成本與故障點。只有候選遠多於發布量時，才考慮低成本篩選與
高能力寫稿分工。

Credentials 只確認名稱與是否備妥，不收值。最小集合通常是
IG_ACCESS_TOKEN、IG_USER_ID；其他模型、儲存或圖床 credential 由 Agent
依實際架構決定。建立 .env.example 空欄位，實值只放環境變數或 secret store。

## 預期產出

檔名依 repo 慣例調整，但責任需分開：

~~~text
config             # 來源、帳號、時區、規則；不含 secret
collector          # 取得素材並保留來源/抓取時間
selector           # 可選；明確規則與跳過理由
renderer           # 圖片處理或現成圖校驗
workflow           # 狀態、去重、approval
media host adapter # 只有平台需要公開 URL 時存在
publisher          # Meta API 邊界
previews/logs      # 預覽、決策、遮罩錯誤
tests              # 去重、輪詢、錯誤、視覺與 dry-run
~~~

每個候選至少保存來源、發布/抓取時間、內容 hash、選擇理由與權利狀態；
每個 run 保存 approval、container id、status history、publish id、HTTP/Meta
錯誤與重試。不得保存 token、私密原圖或完整敏感內容到 log。

## 引導流程

外層的建置 Gate（B0–B7）與進度追蹤在 [coaching-flow.md](references/coaching-flow.md)；
以下是這個平台的工程步驟與通過判準。

### 1. 定義最小 pipeline

使用「取得素材 → 品質/權利判斷 → 去重 → 文案/圖片 → 人工 gate →
上傳/發布 → 回讀」作為骨架。哪一段可省略由使用者資料決定，不為了完整而
增加無用元件。沒有合格素材時正常結束為 skipped。

**通過判準**：每段都有輸入、輸出、停止條件；Agent 能說明為何需要或省略。

### 2. 建立狀態、去重與節流

用穩定業務鍵加 account/slot/content hash 防重入。建議狀態：

~~~text
collected -> selected -> rendered -> pending_approval -> approved
          -> hosting -> container_ready -> published
          -> skipped / failed
~~~

配額規則至少回答：單次最多幾則、同類冷卻多久、素材不合格時如何安靜、
並行 runner 如何取得原子 lease。--force 不得略過授權、去重、批准或配額。

**通過判準**：同一素材連跑兩次只發布一次；重疊排程不會洗版。

### 3. 驗證視覺與公開圖片邊界

依使用者需求補完 renderer。若圖片含文字，先產生一張代表性預覽並在手機尺寸
檢查字型、裁切、對比與可讀性；若使用自有圖片，檢查尺寸、順序與授權。

平台需要公開 URL 時，先讀 [platform-setup.md](references/platform-setup.md)。
不要把私人或未發布敏感圖片上傳到公開服務。publisher 只接受經核准、能匿名
抓取、回傳正確 MIME、期限足夠的 URL。

**通過判準**：視覺 smoke 與無登入 fetch 都有證據；公開期限涵蓋發布與回讀。

### 4. 實作 Meta publisher

由 platform adapter 隔離登入路線、container、狀態輪詢與 publish。完整讀
[platform-setup.md](references/platform-setup.md)，執行時重查 API version、
scope、媒體限制與配額，不從模型記憶猜。

所有請求設定 timeout；先檢查 HTTP/content type/JSON error；只對官方定義的
暫時性錯誤做 bounded exponential backoff。輪詢要有總 timeout 與 terminal
failure，只有官方可發布狀態才進 publish。

**通過判準**：mock 涵蓋非 JSON、4xx、429、5xx、timeout、缺 id、
處理中後成功與永久失敗。

### 5. 排程、批准與營運

以排程器實際身分跑 dry-run，驗證時區、工作目錄、PATH、secret、字型與單例鎖。
背景環境無法問人時，建立 pending preview 並通知；沒有批准不得建立公開資源、
上傳圖片、建立 container 或發布。

發布前顯示確切帳號、完整圖/輪播、caption、來源、資料時間、揭露、公開託管
期限與成本。批准只適用這一篇。發布後用 publish id 與 IG App 回讀。

**通過判準**：可觀察 runs、skips、approval latency、publish、retry、
token days-to-expiry；告警不含 credential 或完整草稿。

## Dry-run 與批准 gate

dry-run 可真實讀公開來源、選材、去重、寫稿與生圖，但不得上傳公開圖、
建立 Meta container 或發文。輸出 preview、caption、來源、跳過理由、
權利/揭露檢查、預估成本與遮罩後的 would_publish payload。

只有使用者明確批准「以這個帳號發布這一組圖文」後，才能做一次真實 smoke；
沒有批准就標示「完成至 dry-run」。

## 安全、隱私、成本與限制

- 最小化 scope；App Secret 只在 server-side；.env 與 preview 權限需受控。
- 圖片、字型、logo、新聞摘要與人物肖像都要有可用權利。
- 價格、庫存、活動時間與 YMYL 內容在發布前由人複核；不保證結果。
- 定義 raw source、草稿、圖片、帳號識別的 retention 與刪除方式。
- 從官方價格/配額頁估算模型、圖床、儲存、排程與發布成本，不保證免費。

常見故障依序查：來源與 freshness → 去重/lease → renderer/字型 →
公開 URL/MIME → token/IG user id → container status → publish/回讀。
保存原始 error code/type，不把 token 錯誤誤判成一般 HTTP status。

## 完成定義

- **教學規劃**：決策卡、最小 pipeline、credential 名稱、圖片權利、
  dry-run、批准、故障、成本/隱私與驗收齊全。
- **repo 實作**：測試、手機尺寸 visual smoke、無登入 image fetch、
  scheduler dry-run、去重/並行、container polling 與 token/配額告警有證據。
  只有經批准的一篇在 IG App 可見且 publish id 落 log，才算全線完成。

## 官方來源與時效

平台 UI、登入路線、API version、scope、媒體限制、配額與價格會改。實作前
完整讀 [platform-setup.md](references/platform-setup.md)，重查官方連結並記錄
日期；每次發布前重抓來源，超過使用者 freshness window 就跳過。

## Reference Index

- [coaching-flow.md](references/coaching-flow.md) — 每輪節奏、B0–B7 建置 Gate、
  進度檔啟用條件與 schema、停點小結卡
- [browser-setup.md](references/browser-setup.md) — 瀏覽器能力四層判斷、官方安裝
  網址、連線 smoke、後台操作紅線、逐步口述 fallback
- [platform-setup.md](references/platform-setup.md) — Meta 登入路線、帳號映射、
  公開圖片邊界、container/publish 與官方來源
- [recipes.md](references/recipes.md) — 空白決策卡、原作者實跑案例、新手第一輪與
  停點示例

