CLI投稿の管理

CLI

投稿の管理

ターミナルから投稿の作成、予約、一覧、編集、削除ができます。下書き、複数ネットワーク、メディア、ドライラン、JSON 本文にも対応します。

投稿は必ず店舗に属するので、-e で店舗 ID を渡します。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同じリクエストを 1 回分として再実行します。
-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 の URL をカンマ区切りで渡します。

sofia posts:create -e $ESTABLISHMENT_ID -p instagram -c "Tarte tatin du jour" \
  -m $MEDIA_ID,https://images.example.com/tarte-tatin.jpg

URL の場合、種類は拡張子で決まります。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'

次はアカウントとメディアです。

このページは役に立ちましたか?