Как постить в Facebook из командной строки с помощью curl и IFTTT
Краткое определение: IFTTT Webhooks (ранее Maker Channel) — триггер, который принимает HTTP-запросы и передаёт данные в рецепты IFTTT.
Предыдущая популярная утилита FBCMD (созданная Дэйвом Томпкинсом) перестала работать в 2015 году. Автор остановил поддержку по личным причинам, а Facebook изменил API, убрав старые возможности (например, offline_access) и переработав модель аутентификации. В результате инструмент больше не мог проходить аутентификацию и публиковать посты.
Ниже — перевод выдержки из заявления автора (сокращённо):
«Я начал этот проект в 2007 году… сейчас у меня семья и работа. Я перестал использовать FBCMD. Facebook уходит от приложений с широкими правами доступа. Поддерживать программу было слишком тяжело: постоянные депрекации API 1.0 и изменения модели аутентификации стали последней каплей.»
Важно: FBCMD как проект умер, но идея — публиковать из командной строки — жива. Мы используем curl + IFTTT Webhooks как современную и простую замену.
Кому это подойдёт и когда это не сработает
- Подойдёт тем, кто хочет быстро публиковать текстовые статусы, интегрировать локальные скрипты с Facebook или пробросить уведомления из локальных задач в соцсеть.
- Не подойдёт для массовых, маркетинговых рассылок, управления множеством страниц/профилей с требованием сложных разрешений: для этого лучше использовать официальные API Facebook и SDK с проверкой приложения.
- Установленный curl (Windows / Linux / macOS). Если на Windows — скачайте сборку curl.exe.
- Аккаунт IFTTT и включенный сервис Webhooks (Maker).
- Доступ к Facebook через ваш IFTTT-рецепт (IFTTT запросит разрешения при создании рецепта «Facebook — Create a post»).
- Базовые навыки работы с CMD/PowerShell или Bash.
- Зайдите на официальный сайт curl и используйте Download Wizard, чтобы подобрать сборку для вашей ОС.
- Скачайте ZIP для Windows, распакуйте в локальную папку, например c:\curl.
- Откройте командную строку (Выполнить → cmd) и перейдите в папку с curl. Введите:
curl.exe --versionЕсли curl установлен правильно, вы увидите строку с версией и поддерживаемыми протоколами.
- Для удобства добавьте путь к curl в системную переменную Path:
- Откройте Панель управления → Система → Дополнительные параметры системы → Переменные среды.
- В разделе «Системные переменные» найдите Path, нажмите Изменить и добавьте ;C:\curl\ (или путь к вашей папке).
- Перезагрузите терминал — теперь curl доступен из любой папки.
Примечание для Linux/macOS: curl обычно предустановлен. Проверьте curl –version. Если нужно обновить — используйте пакетный менеджер (apt, yum, brew).
- Зарегистрируйтесь или войдите в IFTTT.
- Подключите сервис Webhooks (иногда называется Maker) и перейдите на страницу настроек Webhooks.
- Найдите ваш ключ (API key). URL шаблон выглядит так:
https://maker.ifttt.com/trigger/{event}/with/key/{your_key}{event} — имя события, которое вы зададите при создании рецепта. {your_key} — личный ключ Webhooks.
- Создайте рецепт (Applet):
- IF THIS: Webhooks → Receive a web request → задайте событие, например post_facebook.
- THEN THAT: Facebook → Create a status message (войдите в Facebook, чтобы связать аккаунт) → в поле Status message используйте {{Value1}} для передачи текста.
- Сохраните рецепт. Запомните имя события — оно понадобится в URL.
Ниже — рабочие примеры команд для разных оболочек. В примерах замените YOUR_KEY на ваш ключ, а post_facebook — на имя события.
Важно: IFTTT ожидает POST-запрос с JSON, где поле value1 используется в шаблоне рецепта.
Пример для Linux / macOS (bash):
curl -X POST -H "Content-Type: application/json" -d '{"value1":"Мой первый пост из curl"}' "https://maker.ifttt.com/trigger/post_facebook/with/key/YOUR_KEY"Пример для Windows CMD (обратите внимание на экранирование кавычек):
curl -X POST -H "Content-Type: application/json" -d "{""value1"":""Мой первый пост из curl""}" "https://maker.ifttt.com/trigger/post_facebook/with/key/YOUR_KEY"Пример для PowerShell (предпочтительный способ на современных Windows):
$body = @{value1 = 'Мой первый пост из PowerShell'} | ConvertTo-Json
Invoke-RestMethod -Uri "https://maker.ifttt.com/trigger/post_facebook/with/key/YOUR_KEY" -Method Post -Body $body -ContentType 'application/json'Если вы хотите URL-кодировать значения вручную (как в исходной статье), вы можете формировать строку запроса или использовать опцию curl –data-urlencode:
curl -X POST --data-urlencode "value1=My first post using a curl command" "https://maker.ifttt.com/trigger/post_facebook/with/key/YOUR_KEY"Отладка: добавьте -v к curl, чтобы увидеть подробный вывод и заголовки.
- Запуск по расписанию на Windows (Task Scheduler):
- Создайте .bat файл с curl-командой:
@echo off
curl -X POST -H "Content-Type: application/json" -d "{""value1"":""Автоматический пост из задания""}" "https://maker.ifttt.com/trigger/post_facebook/with/key/%IFTTT_KEY%"- В Планировщике задач укажите запуск .bat по расписанию.
- Запуск по cron на Linux:
0 9 * * 1 /usr/bin/curl -X POST -H 'Content-Type: application/json' -d '{"value1":"Еженедельный отчёт"}' 'https://maker.ifttt.com/trigger/post_facebook/with/key/YOUR_KEY'- Автоматизация из Excel/Word: используйте VBA для вызова curl или PowerShell-скрипта (примеров в сети много). Идея — вызвать внешнюю команду, которая делает POST на IFTTT.
Шаблон переменных окружения (рекомендуется хранить ключ вне командной строки):
Windows (PowerShell):
setx IFTTT_KEY "YOUR_KEY"
# Для текущей сессии
$env:IFTTT_KEY = "YOUR_KEY"Linux/macOS:
export IFTTT_KEY=YOUR_KEYВызов с переменной окружения (bash):
curl -X POST -H "Content-Type: application/json" -d "{\"value1\":\"$MY_MESSAGE\"}" "https://maker.ifttt.com/trigger/post_facebook/with/key/$IFTTT_KEY"- Команда возвращает HTTP 200/202 и IFTTT подтверждает получение (curl -v показывает 200).
- Сообщение появляется в Facebook в течение нескольких секунд.
- Ключ Webhooks хранится в переменной окружения или защищённом хранилище.
- Выполнение задачи на автостарте (Task Scheduler / cron) проходит без пользовательского вмешательства.
- Ошибка 404 при обращении к URL Webhooks: проверьте, правильно ли указано имя события и ключ.
- Сообщение не появляется в Facebook: проверьте лог рецепта IFTTT (IFTTT показывает историю срабатываний) и убедитесь, что Facebook-аккаунт связан и авторизован в IFTTT.
- Проблемы с кавычками в Windows CMD: используйте PowerShell или храните тело запроса в файле и подавайте через –data @file.json.
- Ограничения IFTTT: если вы делаете слишком много запросов подряд, возможны задержки или временные блокировки. Для частых массовых публикаций лучше официальный API Facebook.
- Никогда не храните ключ Webhooks в открытом репозитории. Используйте переменные окружения, защищённые файлы конфигурации или менеджеры секретов.
- IFTTT получает содержимое ваших сообщений; продумайте, какую информацию отправляете (личные данные, номера, приватные ссылки).
- Если вы интегрируете работу с персональными данными граждан ЕС, рассмотрите требования GDPR: получите согласие, документируйте обработку и обеспечьте право удаления данных.
Используйте Graph API, если вам нужно:
- Публиковать от имени страницы с более тонкими правами и масштабированием.
- Загружать медиа (фото/видео) большими объёмами.
- Управлять комментариями, реакциями, аналитикой.
IFTTT + Webhooks хороши для простых, быстрых и одноразовых интеграций без разработки полноценного приложения.
Developer:
- Подготовить скрипт с curl/Invoke-RestMethod.
- Защищённо хранить ключи.
- Настроить логирование ошибок и уведомления.
Admin:
- Проверить права аккаунта Facebook, привязанного к IFTTT.
- Настроить Task Scheduler / системный cron.
- Обеспечить резервные способы остановки автоматических публикаций.
End user:
- Тестировать посты с приватной группой/черновиком.
- Убедиться, что форматирование и ссылки корректны.
- Использовать официальное Facebook Graph API и OAuth-приложение (сложнее, но даёт контроль и масштабирование).
- Прямые интеграции с другими сервисами автоматизации: Zapier, Make (Integromat) — имеют похожие Webhook-интеграции.
- Использовать бот-платформы или специализированные SMM-инструменты для планирования и аналитики.
- Модель: вы отправляете HTTP POST → IFTTT принимает событие → IFTTT выполняет действие (публикует в Facebook).
- Эвристики:
- Храните секреты отдельно.
- Тестируйте рецепт в приватном канале/черновике перед массовым использованием.
- Логи и подробный вывод curl (-v) — ваш первый инструмент для отладки.
Мини‑playbook (шаги для надёжной настройки на рабочей станции):
- Создать системный пользовательский аккаунт/папку для скриптов.
- Поместить скрипт публикации в защищённую папку.
- Установить переменную окружения IFTTT_KEY только для этого пользователя.
- Настроить планировщик задач под учётной записью без прав администратора.
- Включить логирование выполнения в файл и оповещения в случае ошибки (например, отправка ошибки на почту).
- Тест 1: Отправка простого текста — сообщение появляется в Facebook в течение 30 секунд.
- Тест 2: Отправка текста с кавычками и спецсимволами — сообщение не искажено.
- Тест 3: Запуск через планировщик — задача выполняется в назначенное время без вмешательства.
flowchart TD
A[Нужно постить из команды/скрипта?] -->|Да| B{Нужны ли
сложные права/масштаб?}
B -->|Да| C[Используйте Graph API и OAuth]
B -->|Нет| D[Используйте IFTTT Webhooks + curl]
A -->|Нет| E[Используйте обычный UI Facebook]- IFTTT временно не отвечает — запросы не выполняются.
- Facebook меняет политику взаимодействия со связями через IFTTT и ограничивает публикации (в прошлом соцсеть меняла разрешения для сторонних сервисов).
- Длинные сообщения или вложения (медиа) не поддерживаются в том же виде — лучше Graph API.
Публикация в Facebook из командной строки с использованием curl + IFTTT — простой и быстрый способ автоматизировать текстовые посты, интегрировать локальные скрипты и отправлять уведомления. Для единичных задач и простой автоматизации это хорошая альтернатива устаревшему FBCMD. Для крупномасштабных, медиа‑насыщенных или коммерческих задач рассматривайте официальные API и проверку приложений.
Important: храните ключи безопасно и тестируйте изменения в приватном окружении.
Резюме:
- Установите curl и проверьте его работу.
- Настройте IFTTT Webhooks и рецепт Facebook → Status message (используйте {{Value1}}).
- Отправляйте POST-запросы из CMD/PowerShell/терминала и автоматизируйте через Task Scheduler или cron.
Если хотите, могу прислать готовые .bat и .sh шаблоны с учётом ваших требований (формат сообщения, расписание, логирование). Хотите шаблон сейчас?
Краткие выводы
- Технология: curl + IFTTT Webhooks — простой путь публиковать в Facebook из командной строки.
- Безопасность: храните ключи в переменных окружения и избегайте публикации чувствительных данных.
- Масштаб: для серьёзного управления страницами используйте Graph API.
Похожие материалы
RDP: полный гид по настройке и безопасности
Android как клавиатура и трекпад для Windows
Советы и приёмы для работы с PDF
Calibration в Lightroom Classic: как и когда использовать
Отключить Siri Suggestions на iPhone