CLI
Управление публикациями
Создавайте, планируйте, просматривайте, редактируйте и удаляйте посты из терминала: черновики, несколько сетей, медиа, пробный запуск и полное JSON-тело.
Каждый пост принадлежит заведению, поэтому передайте его id через -e. Найти его можно командой sofia establishments:list (см. аккаунты).
Создание постов
Опубликовать пост
Без даты пост выходит сразу.
sofia posts:create -e $ESTABLISHMENT_ID -p instagram -c "Tarte tatin du jour"Параметры
| Параметр | Назначение |
|---|---|
-e, --establishment | Id заведения (обязательно, кроме случая с --json). |
-p, --platforms | Сети через запятую (instagram,facebook,x,linkedin,tiktok); обязательно, кроме случая с --json. |
-c, --content | Текст поста. |
-s, --date | Дата публикации (ISO 8601); без неё пост выходит сразу. |
-m, --media | Id медиа или https-адреса через запятую. |
-f, --format | Формат: post, reel, story, carousel… |
-a, --account | Подключённый аккаунт, от имени которого публиковать. |
--draft | Сохраняет черновик, который никуда не отправляется. |
--dry-run | Проверяет пост, ничего не записывая. |
--idempotency-key | Повторяет тот же запрос как один. |
-j, --json | Файл с полным телом запроса; он заменяет параметры содержимого. |
Запланировать пост
Передайте дату в формате ISO 8601 через -s, --date.
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Добавить медиа
-m, --media принимает id медиа из вашей библиотеки или https-адреса через запятую.
sofia posts:create -e $ESTABLISHMENT_ID -p instagram -c "Tarte tatin du jour" \
-m $MEDIA_ID,https://images.example.com/tarte-tatin.jpgДля адреса тип определяется по расширению: видео для mp4, mov, webm и m4v, иначе изображение. Чтобы загрузить заранее, см. медиа.
Несколько сетей сразу
Перечислите сети через запятую в -p, --platforms. Каждая получит один и тот же текст.
sofia posts:create -e $ESTABLISHMENT_ID -p instagram,facebook,linkedin -c "Tarte tatin du jour"Пробный запуск
--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. Он заменяет параметры содержимого.
sofia posts:create --json post.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"
}Список постов
Фильтруйте список этими параметрами. Ответ разбит на страницы: см. Пагинация.
-e, --establishment: только это заведение.--status: только посты с этим статусом.--limitи--cursor: размер страницы и место, с которого продолжить.
sofia posts:list -e $ESTABLISHMENT_ID --status scheduled --limit 20Фильтр по периоду
--from и --to: диапазон дат.
sofia posts:list -e $ESTABLISHMENT_ID --from 2026-11-01 --to 2026-11-30Фильтр по автору
--created-by me|app: посты, написанные вами, или созданные через API.
sofia posts:list -e $ESTABLISHMENT_ID --created-by appЧтение и изменение поста
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 --json post.jsonИзменение статуса поста
posts:update --status переводит пост из черновика в запланированные и обратно.
sofia posts:update $POST_ID --status draft
sofia posts:update $POST_ID --status scheduled -s 2026-11-08T09:00:00Z--status scheduled -s <дата>планирует черновик на эту дату.--status draftвозвращает запланированный пост в черновики: содержимое сохраняется, дата удаляется, и пост больше не выйдет.
Удаление поста
sofia posts:delete $POST_IDСкрипты с jq
Поскольку вывод — JSON, jq достанет нужное: id, статусы, курсор следующей страницы.
sofia posts:list -e $ESTABLISHMENT_ID --status scheduled | jq '.data[] | {id, status}'
sofia posts:list -e $ESTABLISHMENT_ID | jq -r '.nextCursor'