W Inmint testujemy rzeczy zanim zaczniemy o nich mówić. Zanim więc opublikowaliśmy cokolwiek na temat AI w zarządzaniu kampaniami, przeprowadziliśmy live test: zbudowanie kompletnej kampanii Meta Ads — wybór konta, targeting, struktura zestawu reklam, copy, 5 wariantów kreacji — wyłącznie przez rozmowę z Claude AI z wykorzystaniem integracji MCP.

Żadnego Ads Managera. Żadnych ręcznych kliknięć. Ludzki nadzór na każdym etapie. Poniżej pełny techniczny opis tego, co zadziałało, co się posypało i co to oznacza dla klientów.

Czym jest MCP i dlaczego ma znaczenie w paid media?

MCP (Model Context Protocol) to otwarty protokół, który pozwala modelom AI łączyć się bezpośrednio z zewnętrznymi narzędziami i API — w tym z Marketing API Meta — przez ustrukturyzowany interfejs. Zamiast AI opisującego co powinieneś zrobić w Ads Managerze, MCP pozwala AI faktycznie to zrobić: odczytywać dane konta, tworzyć kampanie, przesyłać specyfikacje kreacji, pobierać dane o wynikach.

Dla performance marketerów to eliminuje odległość między strategią a egzekucją. AI nie generuje instrukcji — wykonuje je, a specjalista weryfikuje i zatwierdza każdy krok.

Setup

  • Narzędzie: Claude (Sonnet 4.6/Opus 4.7) z podłączonym MCP dla Meta Ads
  • Konto: konto agencyjne XXX (act_1937XXXXXXXX)
  • Cel: pełna struktura kampanii dla agencji marketingu B2B targetującej firmy w Łodzi
  • Cel kampanii: Traffic / Link Clicks
  • Budżet: 20 PLN/dzień CBO

Krok 1: Odkrycie kont reklamowych

Pierwsze zapytanie pobrało wszystkie konta reklamowe dostępne dla tokena — 25 kont w kilku business managerach.

AI automatycznie odfiltrowało konta według:

  • is_ads_mcp_enabled: true — MCP nie jest jeszcze dostępne dla wszystkich kont (Meta prowadzi stopniowe wdrożenie)
  • account_status: ACTIVE — wykluczone konta zamknięte, zablokowane i z nieopłaconymi fakturami

Wynik: 5 użytecznych kont spośród 25. Samo to wymagałoby ręcznego sprawdzenia każdego konta w Business Managerze.

Krok 2: Tworzenie kampanii

Cel: OUTCOME_LEADS (użytkownik powiedział „Instant leads”)

Budżet: 2000 centów (20 PLN) — API Meta działa w centach

Typ zakupu: AUCTION

Strategia licytacji: LOWEST_COST_WITHOUT_CAP (domyślna CBO)

Status: PAUSED

Zwrócone ID kampanii: 120246188078450463

Pierwsze ograniczenie API: Później w sesji okazało się, że cel kampanii wymaga zmiany. API Meta blokuje aktualizację celu kampanii, która ma już podłączony zestaw reklam — "Cannot update the objective of a campaign that has at least one adset." Jedyne wyjście to przebudowanie zestawu reklam pod nową kampanię. To ograniczenie Meta, nie AI

Krok 3: Zestaw reklam — targetowanie i placement

Zamiast domyślnie ustawić Advantage+, AI podjęło aktywną decyzję dotyczącą placementów:

„Tylko Facebook Feed + Instagram Feed. Advantage+ przepali budżet na Audience Network i Reels — słabe dopasowanie dla decydentów B2B. Feed to miejsce, gdzie trafiasz na nich w trybie przeglądania i rozważania.”

Zbudowana specyfikacja targetowania:

json
{
  "geo_locations": {
    "custom_locations": [{
      "latitude": 51.7592,
      "longitude": 19.4560,
      "radius": 30,
      "distance_unit": "kilometer",
      "name": "Łódź, Poland"
    }]
  },
  "age_min": 25,
  "age_max": 55,
  "publisher_platforms": ["facebook", "instagram"],
  "facebook_positions": ["feed"],
  "instagram_positions": ["stream"]
}

Uwaga: targetowanie na miasto w Meta wymaga numerycznych kluczy z Targeting Search API. Użycie custom_locations ze współrzędnymi omija tę zależność i daje kontrolę nad promieniem — czystsze podejście przy targetowaniu regionalnym.

Drugie ograniczenie: Cel optymalizacji LEAD_GENERATION wymaga promoted_object (konkretnie page_id). AI wyłapało to z odpowiedzi błędu, pobrało dostępne strony przez ads_get_ad_account_pages, znalazło właściwe Page ID i automatycznie ponowiło zapytanie.


Krok 4: Kreacja i copy — 5 wariantów

Tu widać skumulowaną wartość. Zamiast jednego tekstu głównego, AI wygenerowało 5 wariantów copy po polsku, każdy oparty na innym kącie psychologicznym:

WariantKątHook
v1Problem → Dane„Wydajesz na reklamy, ale nie wiesz co tak naprawdę działa?”
v2Społeczny dowód słuszności„Firmy, którym pomagamy, nie pytają już 'czy reklamy działają’. Widzą to w CRM.”
v3Autorytet konkurencyjny„Twoja konkurencja już reklamuje się online. Pytanie: kto robi to lepiej?”
v4FOMO / przepalony budżet„Każdy miesiąc bez spójnej strategii to klienci trafiający do konkurencji.”
v5Ciekawość CPL„Ile kosztuje Cię jeden pozyskany klient? Jeśli nie znasz odpowiedzi — mamy problem.”


Każda reklama została wdrożona jako osobny element pod tym samym zestawem reklam z unikalną konwencją nazewnictwa (Inmint | Copy v1 | Problem-Data) dla czystej segmentacji raportowania.

Trzecie ograniczenie: Polskie znaki diakrytyczne (ą, ę, ó, ł, ź, ż) powodowały błędy parsowania JSON w warstwie transportowej MCP. AI zgłosiło to z wyprzedzeniem, usunęło znaki przed wysłaniem do API i zaznaczyło, które pola wymagają ręcznego przywrócenia przed aktywacją. To znany problem kodowania na poziomie MCP — nie ograniczenie API Meta.

Czwarte ograniczenie: asset_feed_spec (natywny sposób Meta do A/B testowania wielu wariantów copy w jednej reklamie) nie jest dostępny przez obecną implementację MCP. Obejście — 5 osobnych reklam — osiąga ten sam efekt testowy. System dostarczania Meta i tak optymalizuje budżet w kierunku lepiej działających wariantów, niezależnie od struktury.

Piąte ograniczenie: Po ustawieniu is_dynamic_creative: true na zestawie reklam, nie można tego cofnąć przez API. Stworzono nowy, czysty zestaw reklam dla struktury z 5 reklamami.

Warstwa ludzka — co zostało sprawdzone i poprawione

To jest część, którą większość treści o „AI w marketingu” pomija. Oto co wymagało ludzkiego osądu:

  • Konflikt celów: Użytkownik najpierw powiedział „Traffic”, potem „Instant leads” — człowiek musiał doprecyzować intencję zanim AI mogło wybrać właściwy cel
  • Uprawnienia do strony: Strona podłączona do konta reklamowego miała niewystarczające uprawnienia w tokenie MCP — wymagało ręcznego sprawdzenia dostępu w Business Managerze
  • Znaki diakrytyczne: Wymagają ręcznego przywrócenia w Ads Managerze przed uruchomieniem
  • Weryfikacja copy: 5 wariantów wymaga sprawdzenia przez native speakera pod kątem tonu i dokładności przed aktywacją
  • Specyfikacja zdjęcia: Dostarczone zdjęcie z WordPressa wymaga weryfikacji pod kątem wymagań Meta dotyczących proporcji (1:1 lub 4:5) przed uruchomieniem

AI zbudowało strukturę w minutach. Człowiek zatwierdza zanim zostanie wydana pierwsza złotówka.

Co to oznacza dla klientów

Zbudowanie jednej kampanii z 2 wariantami reklamy, właściwym targetowaniem i poprawną strukturą zajmuje doświadczonemu specjaliście 45–90 minut w Ads Managerze.

Przy workflow wspomaganym MCP:

  • Czas do struktury: ~10 minut
  • Warianty reklamy w dniu startu: 5 zamiast 1–2
  • Czas weryfikacji specjalisty: ~20–30 minut (QA, poprawki copy, weryfikacja zdjęcia)
  • Budżet przepalony na setup: Zero — czas specjalisty idzie w strategię, nie w klikanie

Więcej wariantów testowanych od pierwszego dnia oznacza szybsze znalezienie tego, co rezonuje z odbiorcami. Szybszy sygnał = szybsza optymalizacja = lepszy CPL w ramach tego samego budżetu.

Aktualne ograniczenia — uczciwy przegląd

MCP dla Meta Ads jest w trakcie stopniowego wdrożenia. Nie każde konto ma jeszcze dostęp. Niektóre możliwości API (jak asset_feed_spec, tworzenie formularzy leadowych, zarządzanie grupami odbiorców) nie są jeszcze dostępne przez obecny interfejs MCP. Warstwa kodowania ma problemy z zestawami znaków spoza łaciny.

To wczesna infrastruktura — odpowiednik skryptów Google Ads z 2012 roku. Obecny poziom jest już użyteczny. Sufit szybko się podnosi.

Co z tym robimy?

W Inmint integrujemy workflow wspomagany MCP do standardowego procesu onboardingu nowych klientów. Cel to nie automatyzacja — to bardziej zróżnicowana kreacja, szybsze wejście na rynek i czystsza struktura od pierwszego dnia, z nadzorem specjalisty nad każdą decyzją dotyczącą żywego budżetu.

Jeśli chcesz zobaczyć jak wygląda ten proces dla Twojej branży lub rynku — napisz. Pierwsze spotkanie jest bezpłatne.