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:00ZGuardar un borrador
--draft guarda la publicación sin publicarla ni programarla.
sofia posts:create -e $ESTABLISHMENT_ID -p instagram -c "Brunch ce samedi" --draftVarias 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.jpgPara 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-runIdempotencia
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-07Cuerpo 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.jsonListar 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.--fromy--to: un rango de fechas.--created-by me|app: las que escribiste tú o las creadas por la API.--limity--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 20Leer, 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_IDAutomatizar 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'