Розробка інтеграцій для Ghost через Webhooks/Zapier
Розробляємо інтеграції для Ghost через Webhooks і Zapier — автоматизуємо публікації, синхронізацію з CRM і сповіщення. Досвід: понад 5 років роботи з Ghost, 30+ проєктів для медіа, блогів та освітніх платформ. Для одного великого медіа-проєкту ми налаштували інтеграцію Ghost з Telegram, Slack і Mailchimp. Це скоротило час сповіщень на 2 години на день. Згідно з Wikipedia, вебхуки — це ефективний спосіб отримання даних у реальному часі. Ghost відправляє webhooks, коли ви публікуєте пост, оновлюєте сторінку або додаєте учасника. Через Zapier або власний обробник ці події з'єднуються із зовнішніми системами без кастомного коду Ghost. Але для складних сценаріїв з фільтрацією або трансформацією даних доводиться писати код — і тут ми підключаємося.
Типові проблеми інтеграції Ghost
При налаштуванні синхронізації Ghost із зовнішніми сервісами виникають типові помилки: невірна верифікація підпису webhook, втрата події при збої, дублювання даних. Наприклад, при публікації поста потрібно відправити сповіщення в Telegram. Якщо обробник не відповідає 2xx, Ghost повторює запит, що призводить до дубляжу. Наше рішення — ідемпотентний обробник з перевіркою унікальності за ID події.
Покрокова інструкція з налаштування Zapier
- У панелі Ghost перейдіть у Integrations → Zapier.
- Скопіюйте Zapier Webhook URL.
- У Zapier створіть новий Zap з тригером Webhook → Catch Hook.
- Вставте URL та виберіть подію Ghost.
- Додайте дію: виберіть сервіс (Slack, Mailchimp тощо) та налаштуйте поля.
- Увімкніть Zap.
Як налаштувати автоматичну синхронізацію Ghost з CRM через Webhooks?
Ghost Admin → Settings → Integrations → Add custom integration → Webhooks. Доступні події:
| Подія | Типове використання |
|---|---|
post.published |
Сповіщення в соцмережах і месенджерах |
post.unpublished |
Зняття з публікації |
post.deleted |
Очищення кешу |
member.added |
Додавання в CRM або email-розсилку |
subscriber.added |
Запис у базу підписників |
Ми гарантуємо, що ваш webhook-обробник буде коректно верифікувати запити. Нижче — типовий обробник на Node.js/Express з перевіркою підпису:
import crypto from 'crypto'; function verifyGhostWebhook(body: Buffer, signature: string, secret: string): boolean { const hmac = crypto.createHmac('sha256', secret); hmac.update(body); return hmac.digest('hex') === signature.split('sha256=')[1]; } app.post('/webhooks/ghost', express.raw({ type: 'application/json' }), (req, res) => { const sig = req.headers['x-ghost-signature'] as string; if (!verifyGhostWebhook(req.body, sig, process.env.GHOST_WEBHOOK_SECRET!)) { return res.sendStatus(401); } const payload = JSON.parse(req.body.toString()); const event = req.headers['x-ghost-event']; // 'post.published' handleGhostEvent(event as string, payload); res.sendStatus(200); }); async function handleGhostEvent(event: string, payload: any) { switch (event) { case 'post.published': // Відправити в Slack, оновити sitemap, сповістити Telegram-канал await notifySlack(payload.post.current); await rebuildSitemap(); break; case 'member.added': await addToMailchimp(payload.member.current); break; } } Покрокова інструкція з налаштування кастомного webhook-обробника
- Створіть endpoint на вашому сервері (Node.js, Python, PHP).
- Додайте верифікацію підпису, як у прикладі вище.
- Зареєструйте webhook у Ghost Admin → Integrations → Add custom webhook.
- Вкажіть URL вашого endpoint та виберіть події.
- Протестуйте, використовуючи Ghost's Test Webhook.
Чому Zapier — не єдиний варіант для інтеграції Ghost?
Ghost має офіційний Zapier додаток. Приклади Zaps:
| Zap | Дія |
|---|---|
| Ghost → Slack | Сповіщення в каналі при публікації |
| Ghost → Twitter/X | Автопостинг із заголовком та посиланням |
| Ghost → Airtable | Логування нових учасників |
| Ghost → ConvertKit | Додавання підписників в email-послідовність |
Для нестандартних подій — Zapier Webhooks (Catch Hook): Trigger: Ghost webhook → Zapier Webhook URL, Action: POST to Zapier → будь-яка дія в 6000+ сервісах.
Zapier обмежує кастомізацію: ви не можете змінити формат даних, додати умовну логіку або фільтрувати події. Кастомний webhook-обробник вирішує ці задачі — наприклад, для крос-постингу в соцмережі з обрізанням тексту:
// При post.published async function crossPost(post: GhostPost) { const text = `${post.title}\n\n${post.excerpt || ''}\n\n${post.url}`; // Twitter/X через API v2 await twitterClient.v2.tweet({ text: text.substring(0, 280), }); // Telegram await bot.sendMessage(CHANNEL_ID, text, { parse_mode: 'HTML', reply_markup: { inline_keyboard: [[{ text: 'Читати', url: post.url }]], }, }); } Порівняння Zapier та кастомного webhook-обробника
| Критерій | Zapier | Кастомний webhook |
|---|---|---|
| Швидкість запуску | 1–2 години | 4–8 годин (базовий) |
| Кастомізація | Низька | Висока |
| Логіка (умови, фільтри) | Обмежена | Повна |
| Вартість | Підписка + тарифи | Одноразова розробка |
| Кількість інтеграцій | 6000+ сервісів | Будь-які з API |
| Безпека (верифікація) | Вбудована | Реалізується в коді |
Кастомний webhook у 3 рази гнучкіший за Zapier у частині обробки даних: можна змінювати формат, додавати фільтри та умовні переходи. Це знижує операційні витрати на 20–30%. Замовте розробку кастомного обробника для нестандартних сценаріїв.
Що входить у нашу роботу з інтеграції Ghost
Ми надаємо:
- Документацію: схему webhook-подій, приклади запитів/відповідей, інструкцію з розгортання.
- Доступи: до репозиторію коду, документації, тестового середовища.
- Навчання: як додати новий webhook або змінити логіку.
- Підтримку: фікс багів та оновлення під нові версії Ghost.
Налаштування 2–3 webhook-інтеграцій (Slack + Telegram + sitemap rebuild) — 4–8 годин. Zapier-автоматизації без коду — 1–2 години.
Зв'яжіться з нами для оцінки проєкту: ми проаналізуємо ваші сценарії, запропонуємо оптимальне рішення — Zapier або кастомний webhook. Отримайте консультацію безкоштовно. Зверніться до нас для аудиту ваших процесів інтеграції — ми знайдемо точки автоматизації.







