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.jpgURL の場合、種類は拡張子で決まります。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_IDjq でスクリプト化
出力は JSON なので、jq で ID、ステータス、次ページのカーソルなど必要な値を取り出せます。
sofia posts:list -e $ESTABLISHMENT_ID --status scheduled | jq '.data[] | {id, status}'
sofia posts:list -e $ESTABLISHMENT_ID | jq -r '.nextCursor'