Відзначимо: коли менеджер публікує товар у каталозі, ми налаштовуємо автоматичний постинг товарів у соцмережі — розсилку анонсу у ВКонтакте, Telegram-канал, Facebook Page, Odnoklassniki. Без ручного копіювання, з мінімальною затримкою, з коректним форматуванням під кожну платформу. Система побудована на event-driven архітектурі з чергами: при додаванні товару генерується подія, яка незалежно обробляється для кожної соцмережі. Це звільняє команду від монотонної роботи, пришвидшує інформування клієнтів та виключає помилки.
Проблеми, які вирішуємо
Ручний постинг — джерело помилок та втрати часу. Менеджер може забути опублікувати товар, скопіювати невірне посилання або вибрати неправильну картинку. При великому асортименті це стає вузьким місцем. Інша складність — платформи мають різні API, ліміти та вимоги до форматування. VK допускає до 16 тис. символів та емодзі, Telegram — лише 1024 з HTML-тегами, Facebook — preview генерується з посилання. Наша система уніфікує процес, адаптуючи контент під кожну соцмережу.
Як ми інтегруємо автоматичний постинг у соцмережі?
Архітектура — event-driven пайплайн. Публікація товару генерує подію ProductPublished, яку підхоплюють окремі listener-и для кожної соцмережі. Кожен listener ставить завдання в чергу, воркер його обробляє незалежно. Це гарантує, що збій в одній соцмережі не блокує публікацію в інших.
ProductPublished event
├── VkPostListener → queue: vk-posts
├── TelegramPostListener → queue: telegram-posts
├── FacebookPostListener → queue: facebook-posts
└── OdnoklassnikiPostListener → queue: ok-posts
Інтеграція з VK
Використовується VK API v5.199. Для публікації від імені спільноти потрібен токен з правом wall. Завантаження фото — двохетапне: отримати upload URL, потім залити файл і зберегти.
Приклад коду на PHP
// Шаг 1: получить сервер загрузки
$uploadServer = $vk->photos->getWallUploadServer(['group_id' => $groupId]);
// Шаг 2: загрузить изображение
$uploaded = Http::attach('photo', file_get_contents($imageUrl), 'photo.jpg')
->post($uploadServer['upload_url']);
// Шаг 3: сохранить фото
$saved = $vk->photos->saveWallPhoto([
'group_id' => $groupId,
'photo' => $uploaded['photo'],
'server' => $uploaded['server'],
'hash' => $uploaded['hash'],
]);
// Шаг 4: опубликовать пост
$vk->wall->post([
'owner_id' => -$groupId,
'message' => $caption,
'attachments' => "photo{$saved[0]['owner_id']}_{$saved[0]['id']}",
]);
Telegram — найпростіший варіант
Telegram Bot API вимагає лише токен та chat_id. Метод sendPhoto або sendMediaGroup для декількох фото. Підпис підтримує HTML та MarkdownV2.
import httpx
async def post_to_telegram(bot_token: str, channel_id: str, photo_url: str, caption: str):
async with httpx.AsyncClient() as client:
resp = await client.post(
f"https://api.telegram.org/bot{bot_token}/sendPhoto",
json={
"chat_id": channel_id,
"photo": photo_url,
"caption": caption,
"parse_mode": "HTML",
},
timeout=15,
)
resp.raise_for_status()
return resp.json()
Ліміт підпису — 1024 символи. Якщо опис довший, надсилається додаткове повідомлення через sendMessage з reply_to_message_id.
Facebook Page через Graph API
Graph API v19.0, метод /{page-id}/photos. Вимагає Page Access Token з правом pages_manage_posts.
POST /v19.0/{page-id}/photos
?url=https://cdn.example.com/img.jpg
&message=Новый товар в каталоге...
&published=true
Як обробляються збої при публікації?
Кожне завдання в черзі має 3 спроби з експоненціальною затримкою (1 хв → 5 хв → 15 хв). Після вичерпання спроб — запис у таблицю failed_social_posts з тілом помилки та сповіщення адміністратора. Метрики публікацій (успіх/провал по кожній платформі) виводяться в дашборд.
Переваги event-driven підходу
| Характеристика | Ручний постинг | Автоматичний постинг |
|---|---|---|
| Час реакції | Години–дні | Секунди після публікації |
| Помилки | Людський фактор | Система повторних спроб (3 спроби) |
| Адаптація під платформу | Потрібно пам'ятати особливості | Шаблони налаштовуються один раз |
Event-driven схема з чергами — в 10+ разів надійніша за простий HTTP-виклик у контролері.
Шаблони тексту
Різні платформи вимагають різного форматування. Шаблони зберігаються в базі та редагуються через CMS:
| Платформа | Особливості |
|---|---|
| ВКонтакте | До 16 тис. символів, емодзі, посилання клікабельні |
| Telegram | HTML-теги <b>, <i>, <a>, ліміт 1024 |
| Посилання в тексті — preview генерується автоматично |
Змінні в шаблоні: {name}, {price}, {url}, {description}, {tags}. Додатково можна налаштувати умовні блоки — наприклад, якщо ціна дорівнює нулю, виводити "Ціна за запитом".
Як налаштувати автопостинг за 5 кроків
- Аналіз поточного каталогу та вибір соцмереж.
- Отримання токенів та прав доступу для кожної платформи.
- Проектування event-driven пайплайну та черг.
- Інтеграція кожної платформи через API з тестуванням.
- Налаштування шаблонів постів та дашборду моніторингу.
Переваги автоматизації
Ми реалізували подібні інтеграції для десятків інтернет-магазинів. Наш досвід показує: автоматизація постингу скорочує час менеджерів на 80% і збільшує охоплення завдяки регулярності публікацій. Наприклад, у проекті з каталогом 5000 товарів час публікації скоротився з 2 годин до 20 секунд після додавання товару. Ви отримуєте готове рішення під ключ, з документацією та підтримкою після запуску. Зв'яжіться з нами для безкоштовної оцінки вашого проекту — ми підготуємо пропозицію щодо інтеграції.
Що входить у роботу
- Аналіз поточного каталогу та вибір соцмереж
- Проектування event-driven пайплайну
- Інтеграція кожної платформи (токени, API, тестування)
- Налаштування шаблонів постів та змінних
- Реалізація дашборду моніторингу
- Документація з адміністрування
- Навчання команди (1-2 години)
- Підтримка 1 місяць після запуску
Терміни реалізації
Інтеграція двох платформ (VK + Telegram) займає 4–6 робочих днів. Кожна додаткова платформа — 1–2 дні. Панель керування з історією постів та шаблонами — ще 2–3 дні. Точні терміни залежать від складності каталогу та кількості соцмереж.
Отримайте консультацію інженера з інтеграції — ми підберемо оптимальний стек та архітектуру під ваш проект.







