CLI管理帖子

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'

接下来请看账号和媒体。

这个页面对你有帮助吗?