CLIGestionar publicaciones

CLI

Gestionar publicaciones

Crea, programa, lista, edita y borra publicaciones desde el terminal: borradores, varias redes, medios, simulaciones y un cuerpo JSON completo.

Cada publicación pertenece a un establecimiento, así que pasas su id con -e. Lo encuentras con sofia establishments:list (ver cuentas).

Publicar una publicación

Sin fecha, la publicación sale de inmediato.

sofia posts:create -e $ESTABLISHMENT_ID -p instagram -c "Tarte tatin du jour"

Programar una publicación

Pasa una fecha ISO 8601 con -s, --date.

sofia posts:create -e $ESTABLISHMENT_ID -p instagram -c "Brunch ce samedi" -s 2026-11-07T09:00:00Z

Guardar un borrador

--draft guarda la publicación sin publicarla ni programarla.

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

Varias redes a la vez

Indica las redes separadas por comas en -p, --platforms. Cada una recibe el mismo texto.

sofia posts:create -e $ESTABLISHMENT_ID -p instagram,facebook,linkedin -c "Tarte tatin du jour"

Los medios, el formato y la cuenta también se comparten. Estas opciones dan forma a la publicación:

  • -c, --content: el texto de la publicación.
  • -f, --format: el formato (post, reel, story, carousel…).
  • -a, --account: la cuenta conectada desde la que publicar.

Añadir medios

-m, --media acepta ids de medios de tu biblioteca o direcciones https, separados por comas.

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

Para una dirección, el tipo se deduce de la extensión: vídeo para mp4, mov, webm y m4v, imagen en los demás casos. Para subirlo antes, ver medios.

Simulación

--dry-run comprueba la publicación con las reglas de cada red y no publica nada. Ver Simulación.

sofia posts:create -e $ESTABLISHMENT_ID -p instagram -c "Tarte tatin du jour" --dry-run

Idempotencia

Repite un comando sin riesgo con --idempotency-key: la misma clave da la misma publicación, nunca dos. Ver Idempotencia.

sofia posts:create -e $ESTABLISHMENT_ID -p instagram -c "Tarte tatin du jour" \
  --idempotency-key brunch-2026-11-07

Cuerpo completo desde un archivo

Para un texto por red, varios medios o una programación de una vez, escribe todo el cuerpo en un archivo y pásalo con -j, --json. Sustituye a las opciones de contenido.

{
  "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

Listar publicaciones

Filtra la lista con estas opciones. La respuesta está paginada: ver Paginación.

  • -e, --establishment: solo este establecimiento.
  • --status: solo las publicaciones con este estado.
  • --from y --to: un rango de fechas.
  • --created-by me|app: las que escribiste tú o las creadas por la API.
  • --limit y --cursor: el tamaño de página y desde dónde continuar.
sofia posts:list -e $ESTABLISHMENT_ID --status scheduled --from 2026-11-01 --to 2026-11-30 --limit 20

Leer, editar, borrar

posts:update cambia la fecha (-s), el estado (draft o scheduled) o todo el cuerpo 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

Automatizar con jq

Como la salida es JSON, jq extrae lo que necesitas: ids, estados, el cursor de la página siguiente.

sofia posts:list -e $ESTABLISHMENT_ID --status scheduled | jq '.data[] | {id, status}'
sofia posts:list -e $ESTABLISHMENT_ID | jq -r '.nextCursor'

Siguiente: cuentas y medios.

¿Te ha resultado útil esta página?