CLIGestire le pubblicazioni

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:00Z

Salvare una bozza

--draft salva il post senza pubblicarlo né programmarlo.

sofia posts:create -e $ESTABLISHMENT_ID -p instagram -c "Brunch ce samedi" --draft

Più 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.jpg

Per 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-run

Idempotenza

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-07

Corpo 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.json

Elencare 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.
  • --from e --to: un intervallo di date.
  • --created-by me|app: i post scritti da te o creati tramite API.
  • --limit e --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 20

Leggere, 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_ID

Script 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'

Poi: account e media.

Questa pagina ti è stata utile?