Meta Ads CLI w Claude Code — agent prowadzi kampanie

Zarządzanie kampaniami Meta z poziomu kodu zawsze wyglądało tak samo: autoryzacja, paginacja, formatowanie odpowiedzi, obsługa błędów. Kilkaset linijek boilerplate przy każdym projekcie, zanim dotkniesz logiki kampanii. 29 kwietnia 2026 Meta wydała Meta Ads CLI — narzędzie wiersza poleceń, które ten boilerplate zdejmuje — razem z oficjalnym serwerem MCP do reklam. I co dla mnie ważniejsze: jest wprost zaprojektowane pod agentów AI. To zmienia, jak agent w Claude Code może dotykać budżetów reklamowych.

Meta Ads CLI — czym jest i co robi

To interfejs wiersza poleceń nad Marketing API. Zamiast pisać własny kod odpytujący API, wydajesz komendy w strukturze noun-verb:

meta ads campaign create --name "Summer Sale" \
  --objective OUTCOME_SALES --daily-budget 5000
meta ads campaign list
meta ads insights get --date-preset last_7d \
  --fields=impressions,conversions

Jedna pułapka od razu: --daily-budget liczy się w centach — 5000 to $50, nie $5000. Łatwo się przejechać, zwłaszcza gdy komendę składa agent.

CLI pokrywa pełny cykl życia zasobów Meta Ads: kampanie, ad sety, ads, kreacje (list/create/get/update/delete), insighty z zakresami dat (--date-preset) i breakdownami (--breakdown age --breakdown gender — flaga powtarzalna), katalogi produktowe, datasety (piksele) oraz konta i strony. Autoryzacja idzie przez system user access token. Wymaga Pythona 3.12+ (pip albo uv). Dostępne od 29 kwietnia 2026.

Uwaga na nazwę: oficjalne narzędzie to subkomenda meta ads (część binarki meta). Na pip i GitHubie krąży kilka nieoficjalnych klonów o nazwie meta-ads-cli — to nie to samo, mają inne flagi i inny zakres. Instalując, upewnij się, że bierzesz to od Meta.

Jeden szczegół, który przy zwykłym użyciu jest wygodą, a przy agencie staje się bezpiecznikiem: każdy tworzony zasób domyślnie ląduje w statusie PAUSED — tak samo w CLI, jak w serwerze MCP. Do tego flagi pod automatyzację — --no-input (zero interaktywnych pytań), --force (pominięcie potwierdzeń), formaty wyjścia table/json/plain i spójne exit code’y 0–5. To nie są dodatki. To jest dokładnie ten zestaw, którego potrzebuje coś, co wywołuje komendy bez człowieka przy klawiaturze.

Dlaczego Meta nazywa to „AI connector”

Bo tym jest. Meta umieściła CLI w sekcji „Ads AI Connectors”, obok serwera MCP, i wskazuje agentów AI jako jednego z głównych odbiorców — obok deweloperów i zespołów ops.

Sedno jest takie. Agent, który miał zarządzać Meta Ads, do tej pory musiał generować surowe wywołania Marketing API: budować requesty, obsługiwać paginację, retry, parsować JSON, łapać błędy. Kruche — bo LLM pisze taki kod „prawie dobrze”, a „prawie” w wywołaniu, które wydaje pieniądze, to za mało. CLI odwraca ten układ. Daje agentowi stabilną powierzchnię: jedna komenda to jedna operacja, wyjście jest deterministyczne (--format json), a błąd to konkretny exit code, nie stack trace do interpretacji. Agent nie musi rozumieć API. Musi umieć złożyć poprawną komendę — a to modele robią dobrze.

To ten sam wzorzec, co gh, aws czy stripe. Dobrze zaprojektowane CLI stało się de facto interfejsem dla agentów, bo jest jednocześnie czytelne dla człowieka i przewidywalne dla maszyny.

Jak wpiąć Ads CLI w Claude Code

Claude Code prowadzi każde CLI przez narzędzie Bash — Ads CLI nie jest wyjątkiem. Układ, który sam bym postawił:

  1. Instalacja i token. uv/pip, token do .env (CLI czyta zmienne środowiskowe — klucz nie ląduje w komendzie ani w historii powłoki).
  2. Allowlista na odczyt. Operacje list, get, insights get wpuść bez promptu — to czysty odczyt, agent może swobodnie ciągnąć dane i analizować.
  3. Bramka na zapis. create, update, delete i aktywacja kampanii — zawsze za zgodą człowieka, nigdy automatycznie.
  4. Pętla robocza. Agent pobiera insighty (meta ads insights get --format json), analizuje, proponuje zmianę i składa komendę. Ty zatwierdzasz aktywację albo zmianę budżetu.

Tu domyślny PAUSED spina się z guardrailami idealnie: agent może zbudować całą strukturę kampanii, ale dopóki ktoś świadomie nie zmieni statusu na aktywny, nie wydaje ani grosza. Aktywacja to osobny, świadomy ruch człowieka — nie efekt uboczny tworzenia. --force na budżecie też zostaje po Twojej stronie.

Gdzie to realnie pomaga — i gdzie postawić bramkę

Pomaga tam, gdzie robota jest rutynowa i powtarzalna:

  • Scaffolding kampanii z briefu — agent generuje strukturę campaign → ad set → ad w PAUSED, Ty robisz review gotowego szkieletu zamiast klikać go od zera.
  • Operacje masowe — „wypauzuj wszystko z ROAS poniżej progu”: agent ciągnie insighty (--fields z odpowiednimi metrykami), składa listę, proponuje komendy pauzujące. Decyzję zatwierdzasz zbiorczo.
  • Zaciąganie insightów do analizy — --format json prosto do dalszego pipeline’u (BigQuery, notebook), bez ręcznego eksportu z Ads Managera.

Gdzie NIE puszczać agenta luzem:

  • --force na budżetach i aktywacji bez człowieka. To realne pieniądze, nie sandbox.
  • System user token z pełnymi uprawnieniami. Least privilege — token o zakresie dopasowanym do tego, co agent faktycznie ma robić.

CLI kontra surowe API kontra MCP

Meta wydała dwa oficjalne konektory naraz: CLI i serwer MCP pod adresem mcp.facebook.com/ads. Serwer MCP dodajesz w Claude Desktop, ChatGPT czy innym kliencie MCP jako konektor, logujesz się kontem Meta Business przez OAuth — bez aplikacji deweloperskiej i bez tokenu systemowego — i dostajesz 29 narzędzi: raporty, kampanie, katalogi, diagnostykę sygnałów. Wybór nie brzmi więc „oficjalne czy społecznościowe”, tylko „który interfejs do jakiej pracy”.

PodejścieZaletaWada
Surowe Marketing API (SDK/HTTP)pełna kontrola, zero pośrednikówboilerplate, kruche gdy kod pisze agent
Meta Ads CLIskrypty i potoki, każdy ruch = komenda w loguPython 3.12+, token systemowy do zarządzania
Meta Ads MCPlogowanie OAuth, działa w Claude Desktop bez terminalawywołania widać w rozmowie, nie w logu powłoki

W Claude Code wybieram CLI. Bardziej odporne niż surowe API pisane przez model, a przy tym łatwiejsze do audytu: każdy ruch agenta to komenda, którą widzisz w logu i możesz powtórzyć ręcznie albo wpiąć w skrypt. Serwer MCP ma sens tam, gdzie pracuje marketer w Claude Desktop, a nie analityk w terminalu. Ten sam kompromis rozbierałem przy agentowym audycie GTM przez MCP — tam agent sterował narzędziem przez MCP, tu robi to przez CLI. Dla porównania podejścia „agent plus zewnętrzne narzędzie danych” warto zerknąć też na agenta na BigQuery przez MCP toolbox.

Co z tego wynika

Ads CLI pokazuje trend: dobrze zaprojektowane CLI staje się interfejsem agenta i wypiera bespoke integracje z API. Meta zbudowała je świadomie pod maszynę po drugiej stronie — inaczej domyślny PAUSED i tryb --no-input nie byłyby priorytetem.

Dla e-commerce wniosek jest konkretny: agent w Claude Code może realnie zdjąć rutynę kampanijną — scaffolding, masowe pauzy, zaciąganie insightów. Pod jednym warunkiem. Pytanie nie brzmi „czy wpuścić agenta do Meta Ads”, tylko „gdzie postawić bramkę człowieka”. Odczyt i budowanie szkieletu — agent. Wydatek i aktywacja — Ty.

Źródło: Meta for Developers — Ads CLI Overview

Powiązane wpisy