微信公眾號貼圖 API
只使用 api.weixin.qq.com 官方介面建立並驗證圖片訊息草稿。不啟動瀏覽器,不呼叫發佈、群發或刪除介面,也不提供 RPA 兜底。
環境
要求 Windows 與 PowerShell 7.2+。AppSecret 使用目前 Windows 使用者的 DPAPI 加密,預設儲存到 $env:CODEX_HOME\secrets;未設定 CODEX_HOME 時使用 $env:USERPROFILE\.codex\secrets。網路請求在 PowerShell 程序內完成,不把 access token 傳給外部命令。
輸入與離線校驗
執行前完整閱讀 references/package-contract.md。素材目錄必須包含 image-post.json 與 1–20 張圖片;account 必須明確填寫,留言欄位不得缺省。
先定位 Skill,再離線校驗:
$codexHome = if ($env:CODEX_HOME) { $env:CODEX_HOME } else { Join-Path $env:USERPROFILE '.codex' }
$skill = Join-Path $codexHome 'skills\wechat-image-api'
& (Join-Path $skill 'scripts\Test-WeChatImagePackage.ps1') -InputFolder 'D:\貼圖素材目錄'
需要完整範例時,在一個尚未包含範例檔案的新目錄中產生並校驗:
& (Join-Path $skill 'scripts\New-WeChatImagePackageExample.ps1') -OutputFolder 'D:\貼圖範例'
首次設定
兩個微信 API Skill 可共用同一份 DPAPI 憑證。憑證不存在時,不讓使用者在聊天中貼上 AppSecret;執行本機互動式設定:
& (Join-Path $skill 'scripts\Set-WeChatOfficialAccountCredential.ps1')
& (Join-Path $skill 'scripts\Test-WeChatOfficialAccountApi.ps1')
第二條命令驗證 AppID、AppSecret、草稿權限與 IP 白名單。素材包 account 必須與設定時儲存的公眾號名稱嚴格一致。
如果微信傳回 40164 invalid ip,立即停止並把錯誤中的公網出口 IP 告訴使用者,提醒其進入「設定與開發 → 開發介面管理 → IP 白名單」加入該 IP。使用者確認後只重試同一官方 API;禁止改走瀏覽器、RPA、Cookie Profile 或其他發佈通道。
建立並驗收草稿
只有使用者明確要求寫入草稿後才執行:
& (Join-Path $skill 'scripts\Publish-WeChatImageDraft.ps1') -InputFolder 'D:\貼圖素材目錄'
腳本逐張上傳圖片到 material/add_material,再用 draft/add 建立 newspic 草稿;第一張由微信作為封面。最後用 draft/get 回讀並核對帳號、標題、正文、圖片順序、留言設定與 media_id。
冪等與異常邊界
- 每個素材目錄使用獨佔鎖,同一目錄不能並行執行。
- 檢查點只在確認收到
media_id後推進;已記錄草稿 ID 時,重複執行只回讀驗收,不重複建立。 - 如果網路或程序中斷在圖片上傳或
draft/add提交階段,結果可能不確定。後續執行必須停止,禁止自動重試;先人工核對素材庫或草稿箱,再使用新目錄繼續。 - 素材指紋變化但存在舊檢查點時停止,不靜默清空狀態。
- 狀態與回執使用同目錄臨時檔案原子取代,避免留下半截 JSON。
- 只有
draft/get回讀全部欄位通過,才報告「草稿建立並驗收通過」;不得報告「已發表」。 - 回執寫入
wechat-image-api-receipt.json。任一官方 API 失敗均原地報告,本 Skill 沒有瀏覽器/RPA 兜底。