CLI
Введение
Установите команду sofia, войдите в аккаунт и публикуйте из терминала: посты, медиа, аккаунты, статистика и вебхуки, с выводом в JSON для скриптов.
Sofia CLI оборачивает Sofia API v1 в одну команду sofia. Каждая команда записывается как ресурс:действие, а каждый ответ — JSON, поэтому её легко объединять с jq, cron и CI-пайплайнами.
Установка
CLI опубликована в npm как пакет sofia-post; устанавливается команда sofia.
npm install -g sofia-postpnpm install -g sofia-postyarn global add sofia-postПроверьте установку и выведите список всех команд. Добавьте --help к любой команде, чтобы увидеть её параметры.
sofia --help
sofia posts:create --help
sofia --versionБыстрый старт
Войдите через браузер, найдите своё заведение и опубликуйте первый пост.
sofia auth:login
sofia establishments:list
sofia posts:create -e $ESTABLISHMENT_ID -p instagram -c "Tarte tatin du jour"Команды
| Команда | Что делает |
|---|---|
auth:login, auth:status, auth:logout | Войти через браузер, узнать, кто вы, выйти. |
me | Показывает аккаунт, от имени которого работает CLI. |
platforms:list | Список сетей, куда публикует Sofia, и их правила. |
establishments:list | Список ваших заведений. |
accounts:list, accounts:connect | Список подключённых аккаунтов или ссылка для подключения нового. |
posts:create, posts:list, posts:get, posts:update, posts:delete | Публиковать, планировать, просматривать, редактировать и удалять посты. |
media:upload, media:list, media:get, media:delete | Загружает файл или https-адрес в медиатеку и управляет ею. |
insights:get | Читает статистику заведения. |
webhooks:create, webhooks:list, webhooks:delete, webhooks:test | Регистрировать, просматривать, удалять и тестировать вебхуки. |
Вывод в JSON
Каждая команда выводит в stdout JSON-ответ API с отступами. Передайте его в jq, чтобы выбрать нужное.
sofia establishments:list | jq '.data[].id'При ошибке конверт ошибки API (или локальная ошибка той же формы) уходит в stderr, а код возврата равен 1.
{ "error": { "code": "invalid_request", "message": "…", "details": [ … ] } }Удаление отвечает { "deleted": true, "id": "…" }. Дальше: аутентификация, затем посты.