← всі звіти · meta-integration-3-projects-2026-04-22.md
Meta інтеграції — план налаштування для 3 проектів
Дата: 2026-04-22
Запит: безпечна архітектура + покрокові інструкції для 3 Meta-залежних проектів
Задачі
- FB Ad Library моніторинг конкурентів (Market Research Auto) — read-only доступ до Ad Library API для відстежування активних кампаній конкурентів у фарм-сегменті UA.
- Pediatric News → Threads публікація — автопостинг 3×/день у
@smart_pediatric_news threads-акаунт.
- Meta Ads аудит наших кабінетів — read-only доступ до Marketing API для автоматичного аудиту campaign performance, структури, креативів.
🚫 Блокери (вирішити ПЕРЕД будь-якою технічною роботою)
B1. Facebook акаунт Андрія Савченка — заблоковано 2026-04-16
- Апеляція подана, чекаємо відповіді Meta.
- Без розблокованого FB-акаунту неможливо створити Business Manager (потрібен активний FB profile як власник).
- Статус сьогодні? Питання Сергію: апеляція вирішена? Відмова? Без відповіді?
B2. Business Verification (компанія)
- Для Threads publish і App Review обов'язкова перевірка документів юрособи.
- Документи: свідоцтво про реєстрацію ТОВ (ЄДРПОУ), податкова/VAT certificate, інколи — виписка банку.
- Тривалість: 2-10 робочих днів.
- Під яку юрособу реєструвати: ТОВ Delta Medical (рекламодавець) чи окрема маркетингова структура? Питання Сергію.
B3. Ad Accounts — де вони (MCC структура)
- Для Marketing API аудиту потрібно точно знати які Ad Account ID ми хочемо бачити (зараз клієнтські акаунти у різних Business Managers).
- Якщо клієнтські Ad Accounts у чужих BM — потрібен Partner Request (delegation), не просто System User.
Висновок по блокерах
Якщо B1 не вирішений — ми не починаємо Phase 1. Альтернативи:
- A. Чекати апеляції Meta (може бути швидко, може тижнями)
- B. Створити Business Manager під особистим FB акаунтом Сергія (небажано — змішання personal/work)
- C. Delegate від існуючого Business Manager клієнта (якщо є дружні рекламні кабінети з активним BM)
🏗 Архітектура — 3 варіанти
Варіант A: Один App з усіма product'ами
Структура: 1 Business Manager → 1 App → 3 products (Marketing API, Ad Library, Threads) → 1 System User
| Pros |
Cons |
| Один App ID, один System User — простіше ротувати |
Якщо App блокують — падають ВСІ 3 сервіси |
| Єдина точка моніторингу usage |
App Review з широким scope'ом складніший |
| Менше рутинної адміністрації |
Компроміс безпеки (один токен = вся поверхня) |
Варіант B: 3 окремих Apps під одним Business Manager
Структура: 1 BM → 3 Apps (один product кожен) → 3 System Users (або один shared)
| Pros |
Cons |
| Повна ізоляція: бан одного App не торкається інших |
3× більше налаштувань |
| Окремі rate limits на кожен сервіс |
3 App Reviews |
| Вужчий App Review для кожного App |
Більше токенів зберігати й ротувати |
Варіант C: Гібрид — 1 App для Graph API + окремий для Threads ⭐
Структура: 1 BM → 2 Apps:
- App "delta-graph": Marketing API + Ad Library (обидва через Graph API)
- App "delta-threads": Threads API (окремий Meta product, все одно йде через свій endpoint)
→ 2 System Users (один на Graph, один на Threads)
| Pros |
Cons |
| Логічне розділення — Threads все одно окремий сервіс Meta |
2 App Reviews (але швидші за 3) |
| Graph API + Ad Library природно комплементарні (Marketing та Ad Library використовують той самий auth flow) |
На 1 токен/сервіс більше ніж у варіанті A |
| Bан Threads App не зачіпає Ads аудит |
|
📌 Рекомендація: Варіант C
- Threads API від Meta технічно окремий product із власним OAuth flow (developers.facebook.com > Products > Threads), тому його природно тримати окремо.
- Ad Library + Marketing API взаємодоповнюючі та використовують той самий Graph API endpoint — логічно в одному App.
- Компроміс між ізоляцією (B) і простотою (A).
🔐 Безпекові принципи (всі варіанти)
1. System User замість User Access Token
- Чому: User Access Token прив'язаний до людини — зміна пароля, 2FA event, блокування акаунту → токен мертвий. System User token не залежить від людини.
- Як: Business Manager → Users → System Users → Add. Assign ролей до Ad Accounts, Pages, Instagram, Threads профілю.
2. Scope мінімальності
| Проект |
Мінімально необхідні scope |
| FB Ad Library |
ads_read (достатньо для /ads_archive endpoint) |
| Threads publish |
threads_basic, threads_content_publish, (опц.) threads_manage_replies |
| Marketing API audit |
ads_read, business_management (без ads_management — це write scope) |
3. Зберігання токенів
- Вся метадата —
/srv/passepartout/meta/ (chmod 700 на директорію, 600 на файли, root only).
- Формат:
{project}-{token-type}-{rotation-date}.txt + парний .meta з описом (scope, expires, owner).
- Правило з
feedback_passepartout_labels.md: кожен новий токен → .meta з описом.
- Ніколи в коді,
.env поза /srv/passepartout/, не в git, не в Telegram чаті.
4. Long-lived vs short-lived
- Short-lived User Token (1 година) → exchange на Long-lived (60 днів) → створити System User → System User token не expires (але можна revoke).
- Пайплайн ротації: System User token ротувати кожні 90 днів превентивно навіть якщо не expires.
5. App secret
- App Secret — як інший токен: passepartout, chmod 600, ніде не логувати.
- Використовувати
appsecret_proof при дзвінках з серверної сторони (SHA256 HMAC token+secret) — захист від столеного токена.
6. Rate limit моніторинг
- Facebook Developer Dashboard → My Apps → Analytics → Usage.
- Alert при 80% від ліміту → перевіряти в cron + Telegram notification.
📋 Покрокові інструкції (для Варіанту C)
Phase 0: Pre-requisites (блокери)
- [ ] 0.1 Розблокувати FB Андрій (або домовитись про альтернативу)
- [ ] 0.2 Створити Business Manager: business.facebook.com → Create Account → Name "Delta Medical" → власник FB Андрія
- [ ] 0.3 Business Verification: BM → Security Center → Business Verification → завантажити документи ТОВ → чекати 2-10 днів
- [ ] 0.4 Додати Ad Accounts до BM (або запросити як Partner) — список рекламних кабінетів, які хочемо ревью'їти
- [ ] 0.5 Додати Threads акаунт Pediatric News до BM (Business Assets → Accounts → Instagram/Threads → Add)
Phase 1: Створення Apps (після BV verified)
App 1: delta-graph (Marketing + Ad Library)
- [ ] 1.1 developers.facebook.com/apps → Create App → Type: Business → Name:
delta-graph → Business: Delta Medical
- [ ] 1.2 Add Products: Marketing API, Facebook Login for Business
- [ ] 1.3 Settings → Basic → App Domain, Privacy Policy URL (https://medizine.ua/privacy або similar), Terms URL
- [ ] 1.4 App Review → Permissions → Request:
ads_read, business_management → описати use case: "Internal ad audit tool for our own Ad Accounts"
- [ ] 1.5 Ad Library: дзвінки на
/ads_archive працюють з ads_read без окремого Ad Library product.
App 2: delta-threads (Pediatric News)
- [ ] 2.1 Create App → Type: Consumer (для Threads обов'язково Consumer) → Name:
delta-pediatric-threads
- [ ] 2.2 Add Product: Threads API
- [ ] 2.3 App Review:
threads_basic + threads_content_publish → use case: "Automated publishing of pediatric health news for medical audience (3 posts/day)"
- [ ] 2.4 Rate limit очікуваний: 250 publish/24h — достатньо для 3×/день × 30 днів
Phase 2: System Users
System User "graph-reader" (App 1)
- [ ] 2.1 BM → Users → System Users → Add → Name:
graph-reader → Role: Employee
- [ ] 2.2 Assign Assets: Ad Accounts (які аудитуємо) → Role: Analyst (read-only)
- [ ] 2.3 Generate Token → App: delta-graph → Scopes:
ads_read, business_management → Never Expire
- [ ] 2.4 Зберегти:
/srv/passepartout/meta/graph-reader-token-2026-04-XX.txt (600) + .meta
System User "threads-publisher" (App 2)
- [ ] 2.5 BM → System Users → Add → Name:
threads-publisher → Role: Admin (потрібен для publish)
- [ ] 2.6 Assign: Threads Account @smart_pediatric_news → Role: Admin
- [ ] 2.7 Generate Token → App: delta-threads → Scopes:
threads_basic, threads_content_publish
- [ ] 2.8 Зберегти:
/srv/passepartout/meta/threads-publisher-token-2026-04-XX.txt + .meta
Phase 3: Інтеграція в проекти
Project: Market Research Auto (FB Ad Library)
- [ ] 3.1 Env:
META_GRAPH_TOKEN=$(cat /srv/passepartout/meta/graph-reader-token-2026-04-XX.txt)
- [ ] 3.2 Test call:
curl -G "https://graph.facebook.com/v20.0/ads_archive" --data-urlencode "search_terms=Arteggia" -d "ad_reactive_region=UA" -d "access_token=$META_GRAPH_TOKEN" | jq .
- [ ] 3.3 Інтегрувати в
/srv/projects/market-research-auto/ (коли проект стартує)
Project: Pediatric News → Threads
- [ ] 3.4 Env:
THREADS_TOKEN=$(cat /srv/passepartout/meta/threads-publisher-token-2026-04-XX.txt)
- [ ] 3.5 Test:
curl -X POST "https://graph.threads.net/v1.0/me/threads" -d "media_type=TEXT" -d "text=Test from Pediatric News" -d "access_token=$THREADS_TOKEN"
- [ ] 3.6 Підключити в n8n pipeline (Make.com альтернативно — швидший MVP)
Project: Google Ads Crew → extend на Meta (audit наших кабінетів)
- [ ] 3.7 Той самий
META_GRAPH_TOKEN (scope ads_read)
- [ ] 3.8 Endpoint:
/act_{ad-account-id}/campaigns?fields=name,status,objective,daily_budget,insights{spend,impressions,ctr,cpa}
- [ ] 3.9 Додати до
/srv/projects/google-ads-crew/ads_crew.py (новий Meta-analyzer агент)
Phase 4: Моніторинг та ротація
- [ ] 4.1 Cron в
/srv/services/meta-health/: перевіряє 401/403 на обох токенах 2×/день → alert у Telegram
- [ ] 4.2 Rotation schedule у
open-tasks.md: ротувати System User tokens 2026-07-XX (90 днів)
- [ ] 4.3 FB Dashboard usage alert: коли досягаємо 80% rate limit на будь-якому App
⏱ Часова оцінка
| Phase |
Блокована чим |
ETA |
| 0 Pre-requisites |
FB Андрія + BV |
2-14 днів (чекаємо Meta) |
| 1 Apps |
Phase 0 |
1 день на обидва Apps |
| 2 System Users |
Phase 1 |
2 години |
| 3 Integration |
Phase 2 |
1 день на проект (3 проекти paralleled) |
| App Review |
Meta |
3-10 днів |
| Total realistic |
— |
2-4 тижні до повної готовності всіх 3 проектів |
App Review для threads_content_publish — окрема довга пісня (тиждень+). Для ads_read зазвичай швидко (24-72 години).
❓ Питання, на які потрібна відповідь від Сергія, щоб рухатись
- Статус апеляції FB Андрія — чекаємо або пробуємо альтернативу?
- Юрособа для BV — Delta Medical ТОВ, чи окрема маркетингова юрособа?
- Ad Accounts scope — тільки наші (Delta Medical) чи клієнтські теж (тоді Partner Request)?
- Threads profile —
@smart_pediatric_news вже існує? Переведений на Business? Прив'язаний до Instagram?
- Terms/Privacy URL — можемо використати medizine.ua/privacy чи треба окремий для Delta Medical?
Поточна готовність до старту
- FB Ad Library моніторинг: 5% (чекаємо на FB акаунт, все інше research-ready)
- Threads публікація (Pediatric News): 10% (research готовий, threads акаунт існує, чекаємо BM+BV)
- Meta Ads аудит: 0% (чекаємо BM, немає System User, немає інтеграції в google-ads-crew)