CLI
Gestire le pubblicazioni
Crea, programma, elenca, modifica ed elimina post dal terminale: bozze, più reti, media, prove a vuoto e un corpo JSON completo.
Ogni post appartiene a un’attività, quindi ne passi l’id con -e. Lo trovi con sofia establishments:list (vedi account).
Pubblicare un post
Senza data, il post esce subito.
sofia posts:create -e $ESTABLISHMENT_ID -p instagram -c "Tarte tatin du jour"Programmare un post
Passa una data ISO 8601 con -s, --date.
sofia posts:create -e $ESTABLISHMENT_ID -p instagram -c "Brunch ce samedi" -s 2026-11-07T09:00:00ZSalvare una bozza
--draft salva il post senza pubblicarlo né programmarlo.
sofia posts:create -e $ESTABLISHMENT_ID -p instagram -c "Brunch ce samedi" --draftPiù reti insieme
Indica le reti separate da virgole in -p, --platforms. Ognuna riceve lo stesso testo.
sofia posts:create -e $ESTABLISHMENT_ID -p instagram,facebook,linkedin -c "Tarte tatin du jour"Anche media, formato e account sono condivisi. Queste opzioni danno forma al post:
-c, --content: il testo del post.-f, --format: il formato (post,reel,story,carousel…).-a, --account: l’account collegato da cui pubblicare.
Aggiungere media
-m, --media accetta id di media della tua libreria o indirizzi https, separati da virgole.
sofia posts:create -e $ESTABLISHMENT_ID -p instagram -c "Tarte tatin du jour" \
-m $MEDIA_ID,https://images.example.com/tarte-tatin.jpgPer un indirizzo, il tipo si deduce dall’estensione: video per mp4, mov, webm e m4v, altrimenti immagine. Per caricare prima, vedi media.
Prova a vuoto
--dry-run verifica il post con le regole di ogni rete e non pubblica nulla. Vedi Prova a vuoto.
sofia posts:create -e $ESTABLISHMENT_ID -p instagram -c "Tarte tatin du jour" --dry-runIdempotenza
Rilancia un comando in sicurezza con --idempotency-key: la stessa chiave dà lo stesso post, mai due. Vedi Idempotenza.
sofia posts:create -e $ESTABLISHMENT_ID -p instagram -c "Tarte tatin du jour" \
--idempotency-key brunch-2026-11-07Corpo completo da un file
Per un testo diverso per rete, più media o una programmazione in un colpo solo, scrivi l’intero corpo in un file e passalo con -j, --json. Sostituisce le opzioni di contenuto.
{
"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.jsonElencare i post
Filtra l’elenco con queste opzioni. La risposta è paginata: vedi Paginazione.
-e, --establishment: solo questa attività.--status: solo i post con questo stato.--frome--to: un intervallo di date.--created-by me|app: i post scritti da te o creati tramite API.--limite--cursor: la dimensione della pagina e da dove riprendere.
sofia posts:list -e $ESTABLISHMENT_ID --status scheduled --from 2026-11-01 --to 2026-11-30 --limit 20Leggere, modificare, eliminare
posts:update cambia la data (-s), lo stato (draft o scheduled) o l’intero corpo con -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_IDScript con jq
Poiché l’output è JSON, jq estrae ciò che serve: id, stati, il cursore della pagina successiva.
sofia posts:list -e $ESTABLISHMENT_ID --status scheduled | jq '.data[] | {id, status}'
sofia posts:list -e $ESTABLISHMENT_ID | jq -r '.nextCursor'