CLI
管理帖文
在終端機中建立、排程、列出、修改和刪除貼文,支援草稿、多個網路、媒體、試執行,以及完整的 JSON 請求主體內容。
每篇貼文都屬於某個店家,所以要用 -e 傳入店家 id。可以用 sofia establishments:list 查到(見帳號)。
建立貼文
發佈貼文
不指定日期時,貼文會立即發佈。
sofia posts:create -e $ESTABLISHMENT_ID -p instagram -c "Tarte tatin du jour"選項
| 選項 | 作用 |
|---|---|
-e, --establishment | 店家 id(必填,使用 --json 時除外)。 |
-p, --platforms | 以逗號分隔的平台(instagram,facebook,x,linkedin,tiktok);必填,使用 --json 時除外。 |
-c, --content | 貼文文字。 |
-s, --date | 排程日期(ISO 8601);不填則立即發布。 |
-m, --media | 以逗號分隔的媒體 id 或 https 位址。 |
-f, --format | 格式:post、reel、story、carousel… |
-a, --account | 用來發布的已連結帳號。 |
--draft | 儲存一份不會送出的草稿。 |
--dry-run | 檢查貼文,不寫入任何內容。 |
--idempotency-key | 將同一請求重播為一次請求。 |
-j, --json | 包含完整請求內容的檔案;它會取代內容類選項。 |
排程發佈
用 -s, --date 傳入 ISO 8601 格式的日期。
sofia posts:create -e $ESTABLISHMENT_ID -p instagram -c "Brunch ce samedi" -s 2026-11-07T09:00:00Z儲存草稿
--draft 只儲存貼文,不發佈也不排程。
sofia posts:create -e $ESTABLISHMENT_ID -p instagram -c "Brunch ce samedi" --draft加入媒體
-m, --media 接受媒體庫中的媒體 id 或 https 網址,用逗號分隔。
sofia posts:create -e $ESTABLISHMENT_ID -p instagram -c "Tarte tatin du jour" \
-m $MEDIA_ID,https://images.example.com/tarte-tatin.jpg對於網址,類型由副檔名決定:mp4、mov、webm、m4v 為影片,其他為圖片。如需先上傳,請看媒體。
同時發佈到多個網路
在 -p, --platforms 中用逗號分隔多個網路,每個網路都會收到相同的文字。
sofia posts:create -e $ESTABLISHMENT_ID -p instagram,facebook,linkedin -c "Tarte tatin du jour"試執行
--dry-run 會依各網路的規則檢查貼文,但不會發佈任何內容。見試執行。
sofia posts:create -e $ESTABLISHMENT_ID -p instagram -c "Tarte tatin du jour" --dry-run冪等性
用 --idempotency-key 可以安全地重複執行指令:同一個金鑰只會得到同一篇貼文,不會重複。見冪等性。
sofia posts:create -e $ESTABLISHMENT_ID -p instagram -c "Tarte tatin du jour" \
--idempotency-key brunch-2026-11-07從檔案讀取完整請求主體
如果要為每個網路寫不同的文字、附多個媒體或一次設定排程,可以把完整請求主體寫進檔案,用 -j, --json 傳入。它會取代內容類選項。
sofia posts:create --json post.json{
"establishmentId": "$ESTABLISHMENT_ID",
"targets": [
{
"platform": "instagram",
"text": "Tarte tatin du jour",
"media": [{ "id": "$MEDIA_ID" }],
"format": "post"
},
{
"platform": "tiktok",
"text": "Tarte tatin du jour",
"media": [{ "url": "https://images.example.com/tarte-tatin.mp4", "type": "video" }]
}
],
"scheduledAt": "2026-11-07T09:00:00Z",
"status": "scheduled"
}列出貼文
可以用下列選項篩選清單。回應是分頁的,見分頁。
-e, --establishment:僅此店家。--status:僅此狀態的貼文。--limit和--cursor:每頁數量和繼續讀取的位置。
sofia posts:list -e $ESTABLISHMENT_ID --status scheduled --limit 20依時段篩選
--from 和 --to:日期範圍。
sofia posts:list -e $ESTABLISHMENT_ID --from 2026-11-01 --to 2026-11-30依作者篩選
--created-by me|app:你自己寫的貼文,或透過 API 建立的貼文。
sofia posts:list -e $ESTABLISHMENT_ID --created-by app讀取與修改貼文
posts:update 可以修改日期(-s)、狀態(draft 或 scheduled),或用 -j 修改整個請求主體。
sofia posts:get $POST_ID
sofia posts:update $POST_ID -s 2026-11-08T09:00:00Z
sofia posts:update $POST_ID --json post.json變更貼文狀態
posts:update --status 可將貼文從草稿改為已排程,或反過來。
sofia posts:update $POST_ID --status draft
sofia posts:update $POST_ID --status scheduled -s 2026-11-08T09:00:00Z--status scheduled -s <日期>將草稿排程到該日期。--status draft將已排程的貼文改回草稿:保留內容,清除日期,不再送出。
刪除貼文
sofia posts:delete $POST_ID搭配 jq 撰寫腳本
因為輸出是 JSON,所以 jq 能取出你需要的內容:id、狀態、下一頁的游標。
sofia posts:list -e $ESTABLISHMENT_ID --status scheduled | jq '.data[] | {id, status}'
sofia posts:list -e $ESTABLISHMENT_ID | jq -r '.nextCursor'這個頁面對你有幫助嗎?