CLI
投稿の管理
ターミナルから投稿の作成、予約、一覧、編集、削除ができます。下書き、複数ネットワーク、メディア、ドライラン、JSON 本文にも対応します。
投稿は必ず店舗に属するので、-e で店舗 ID を渡します。ID は sofia establishments:list で確認できます(アカウントを参照)。
投稿を公開する
日付を指定しなければ、投稿はすぐに公開されます。
sofia posts:create -e $ESTABLISHMENT_ID -p instagram -c "Tarte tatin du jour"投稿を予約する
-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複数のネットワークに同時に
-p, --platforms にネットワークをカンマ区切りで指定します。どれにも同じテキストが送られます。
sofia posts:create -e $ESTABLISHMENT_ID -p instagram,facebook,linkedin -c "Tarte tatin du jour"メディア、フォーマット、アカウントも共通です。投稿は次のオプションで決まります。
-c, --content:投稿のテキスト。-f, --format:フォーマット(post、reel、story、carouselなど)。-a, --account:公開に使う接続済みアカウント。
メディアを付ける
-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 は動画、それ以外は画像です。先にアップロードするにはメディアをご覧ください。
ドライラン
--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 で渡します。内容系のオプションは使われなくなります。
{
"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"
}sofia posts:create --json post.json投稿を一覧表示する
次のオプションで一覧を絞り込めます。応答はページ分割されます。ページネーションを参照してください。
-e, --establishment:この店舗のみ。--status:このステータスの投稿のみ。--fromと--to:日付の範囲。--created-by me|app:自分で作成した投稿、または API 経由で作成された投稿。--limitと--cursor:ページサイズと再開位置。
sofia posts:list -e $ESTABLISHMENT_ID --status scheduled --from 2026-11-01 --to 2026-11-30 --limit 20取得・編集・削除
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 --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'