EMAX Studio Blog

Meta Ads CLI einrichten: Schritt-für-Schritt-Anleitung für 2026

Manuel Mrosek · 2026-06-16 · Aufrufe

Meta Ads CLI einrichten: Schritt-für-Schritt-Anleitung für 2026

Um die Meta Ads CLI einzurichten, legen Sie im Business Manager einen System User an, erzeugen einen niemals ablaufenden Token mit den Berechtigungen ads_management, ads_read und business_management, verknüpfen Ihr Ad Account und Ihre Page als Assets und richten die CLI über eine Konfigurationsdatei auf diesen Token aus. Der gesamte Prozess dauert etwa 45 Minuten, sofern Sie Admin-Zugriff auf einen Business Manager, eine Facebook Page und eine verifizierte Zahlungsmethode in Ihrem Ad Account haben.

Dies ist die ausführliche Vertiefung zu unserem Überblick über das Schalten von Facebook-Anzeigen mit KI-Agenten. Dort erklären wir, warum ein CLI-gesteuerter Aufbau gegenüber Ads-Manager-Klicks im Vorteil ist, sobald Sie mehr als eine Handvoll Kampagnen betreiben. Diese Anleitung hier ist das praktische Gegenstück: jeder Schritt, jede Fehlermeldung, die uns beim Aufbau unseres eigenen Stacks begegnet ist, und am Ende ein echter erster Kampagnen-Durchlauf.

Was die Meta Ads CLI eigentlich tut

Die „Meta Ads CLI" ist kein einzelnes offizielles Binary. Sie ist eine dünne serverseitige Automatisierungsebene, die zwischen Ihren Skripten und der Meta Marketing API sitzt. Sie schreiben Python- oder Node-Code, die CLI übernimmt Authentifizierung, Request-Signing und den langlebigen System User Token, und Ihre Kampagnen gehen über graph.facebook.com/v23.0/ live, ohne dass jemand sich durch den Ads Manager klickt.

Der schwierige Teil ist nicht der Wrapper-Code — das sind hundert Zeilen. Schwierig ist das 7-Schritte-Setup-Ritual im Business Manager, das einen Token erzeugt, den Meta tatsächlich für Produktiv-Traffic akzeptiert. Dieses Ritual macht den OAuth-Refresh-Tanz und den Token-Ablauf-Schmerz überflüssig, der jede browserbasierte Automatisierung irgendwann zerlegt.

Der Lohn ist real. Sobald der CLI-Stack läuft, können Sie eine Kampagne mit 6 Anzeigenvarianten in unter 90 Sekunden starten, die gestrige Performance um 7:00 Uhr morgens per Cronjob in einen Daily Report ziehen und unterperformende Anzeigen automatisch pausieren — ohne sich jemals im Ads Manager einzuloggen.

Voraussetzungen

Bevor Sie beginnen, sollten Sie diese Dinge bereithalten. Wer einen Punkt überspringt, landet später in einer zweistündigen Sackgasse.

Sie brauchen einen Meta Business Manager Account mit Admin-Rechten — persönliche Facebook-Accounts funktionieren nicht für System User Tokens. Sie brauchen eine Facebook Page, in der Sie als Admin geführt sind, nicht nur als Editor. Sie brauchen ein Meta Ad Account innerhalb dieses Business Managers mit verifizierter Zahlungsmethode und mindestens einem für die Abrechnung freigegebenen Land. Sie brauchen einen Pixel (oder „Dataset" in der neuen Terminologie), der für die Website konfiguriert ist, zu der Sie Traffic leiten. Und Sie brauchen lokal Python 3.10+ oder Node 18+ mit der Möglichkeit, Pakete zu installieren.

Falls Sie noch keinen Pixel haben, legen Sie einen an, bevor Sie weitermachen. Selbst wenn Sie wie wir ausschließlich die Conversions API (CAPI) nutzen wollen, brauchen Sie die Pixel-ID als Routing-Adresse für serverseitige Events.

Das 7-Schritte-Setup

Diese Schritte sind sequenziell. Jeder schaltet den nächsten frei. Vorgreifen bricht die Kette auf schwer zu debuggende Weise, weil Metas Fehlermeldungen oft irreführend sind.

Schritt 1: System User im Business Manager anlegen

Gehen Sie zu Unternehmenseinstellungen → Nutzer → Systembenutzer. Klicken Sie „Hinzufügen" und legen Sie einen neuen System User an. Der Name ist für die API egal, aber für Ihre zukünftige Nervenschonung wichtig — nennen Sie ihn etwas wie ihre-marke-agent, damit Sie in sechs Monaten noch wissen, was er tut. Wählen Sie die Rolle „Admin" (nicht „Mitarbeiter"), weil System User ohne Admin-Rechte weder Custom Conversions noch Pixel-Events verwalten können.

Als wir unseren Stack gebaut haben, haben wir emaxstudioagent angelegt. Die System-User-ID wird automatisch vergeben (15-stellige Nummer). Notieren Sie sie sich.

Schritt 2: Developer App mit Marketing-API-Use-Case anlegen

Gehen Sie auf developers.facebook.com → Meine Apps → App erstellen. Wählen Sie den Use Case „Marketing API", falls er im Dropdown auftaucht. Falls nur „Andere" sichtbar ist, ist das auch okay — System User Tokens funktionieren in beiden Fällen. Die deutsche UI nennt das „Werbeanzeigen mit Marketing API", die englische einfach „Marketing API" oder „Other". Beide produzieren identische Tokens.

Setzen Sie den App-Typ auf Business, nicht Consumer. Fügen Sie der App über die linke Seitenleiste das Marketing-API-Produkt hinzu. Die App startet im Entwicklungsmodus. Sie müssen sie in den Live-Modus überführen (mehr dazu unten), bevor der System User Token für echte Anzeigen funktioniert.

Für den Wechsel in den Live-Modus verlangt Meta eine öffentliche Datenschutz-URL und ein App-Icon (1024×1024 PNG). Beides ist nicht verhandelbar. Das App-Icon muss nicht perfekt sein — ein Platzhalter reicht — aber die URL muss tatsächlich auf eine Datenschutzseite aufgelöst werden. Wir hosten unsere unter /legal auf unserer Hauptdomain.

Schritt 3: Niemals ablaufenden System User Token erzeugen

Zurück in Unternehmenseinstellungen → Systembenutzer → [Ihr System User] → Klick auf „Neuen Token generieren". Wählen Sie die App, die Sie in Schritt 2 angelegt haben. Wählen Sie dann die Berechtigungen:

  • ads_management — erforderlich, um Kampagnen zu erstellen, zu bearbeiten und zu pausieren
  • ads_read — erforderlich, um Insights und Reporting-Daten abzurufen
  • business_management — erforderlich, um Assets und Custom Conversions zu verwalten

Setzen Sie das Ablaufdatum auf „Nie". System User Tokens sind die einzigen Meta-Tokens, die wirklich nie ablaufen — User Access Tokens laufen nach maximal 60 Tagen aus, Page Tokens hängen am zugrunde liegenden User Token. Genau deshalb nutzt man einen System User statt OAuth für Backend-Automatisierung.

Kopieren Sie den Token sofort. Meta zeigt ihn nur einmal. Legen Sie ihn in einem Secrets Manager ab oder in einer .env-Datei mit chmod 600. Niemals in Git committen.

Schritt 4: Ad Account und Page als Assets verknüpfen

Der System User existiert, hat aber noch auf nichts Zugriff. Sie müssen Assets explizit zuweisen. Unter Unternehmenseinstellungen → Systembenutzer → [Ihr System User] → Klick auf „Assets hinzufügen".

Weisen Sie Ihr Ad Account mit voller Berechtigung zu („Kampagnen verwalten" + „Performance verwalten"). Weisen Sie Ihre Page mit voller Berechtigung zu. Weisen Sie Ihren Pixel bzw. Ihr Dataset mit voller Berechtigung zu. Wenn Sie mehrere Ad Accounts haben und die CLI alle verwalten soll, weisen Sie jeden einzelnen zu.

Bei unserem Setup haben wir act_975780295197610 (unser Ad Account) und Page 1113585798495892 (unsere EMAX-Studio-Page) plus Pixel 1464075091373537 verknüpft. Das Präfix act_ bei Ad-Account-IDs ist beim API-Aufruf Pflicht — es ist Teil der echten ID, keine Formatierungs-Konvention.

Schritt 5: Berechtigung „Page verwalten" / „Manage Page" setzen

Das ist der Schritt, in den fast alle beim ersten Mal hineinfallen. Schritt 4 hat die Page als Asset zugewiesen, aber die Standard-Berechtigungsstufe lautet „Anzeigen erstellen" / „Create Ads" — und das reicht nicht. Der System User braucht „Page verwalten" / „Manage Page", um Werbe-Creatives zu veröffentlichen, die die Page referenzieren.

Wer das überspringt, bekommt bei jedem Anzeigen-Erstellungs-Call einen generischen „permission denied"-Fehler, der die Page gar nicht erwähnt. Sie verbringen Stunden damit, Token-Scopes und Ad-Account-Berechtigungen zu prüfen, während das eigentliche Problem einen Klick tief in den Page-Asset-Einstellungen liegt.

Klicken Sie auf die Page in der Asset-Liste, scrollen Sie zu den Berechtigungen und aktivieren Sie „Page verwalten" für den System User. Speichern.

Schritt 6: CLI installieren und Config-Datei anlegen

Für Python installieren Sie das offizielle SDK:

pip install facebook-business

Für Node verwenden Sie den Community-Client:

npm install facebook-nodejs-business-sdk

Legen Sie eine Config-Datei unter ~/.meta-ads/config.json an (oder wo immer Ihr Stack Secrets ablegt):

{
  "access_token": "EAA...your-system-user-token",
  "app_id": "910292175368026",
  "app_secret": "your-app-secret",
  "ad_account_id": "act_975780295197610",
  "page_id": "1113585798495892",
  "pixel_id": "1464075091373537",
  "api_version": "v23.0"
}

Berechtigungen setzen: chmod 600 ~/.meta-ads/config.json. Das app_secret ist für System User Tokens optional, ermöglicht aber appsecret_proof-Signierung, die Meta für Produktivumgebungen empfiehlt.

Schritt 7: Erstes Test-Kommando ausführen

Verifizieren Sie, dass alles funktioniert, indem Sie Ihre Kampagnen auflisten. In Python:

from facebook_business.api import FacebookAdsApi
from facebook_business.adobjects.adaccount import AdAccount
import json

cfg = json.load(open("/path/to/config.json"))
FacebookAdsApi.init(access_token=cfg["access_token"])
account = AdAccount(cfg["ad_account_id"])
campaigns = account.get_campaigns(fields=["name", "status", "objective"])
for c in campaigns:
    print(c["name"], c["status"], c["objective"])

Wenn das eine Liste zurückgibt (auch eine leere, falls Sie noch keine Kampagnen haben), sind Sie fertig. Wenn es OAuthException oder Permission denied wirft, schauen Sie in die Fehlertabelle unten.

Häufige Setup-Fehler und wie man sie behebt

Das sind die 8 Fehler, die uns beim Aufbau gebissen haben. Jeder einzelne hat echte Stunden gekostet. Sparen Sie sich den Schmerz.

Fehler Was er eigentlich bedeutet Lösung
Cannot use Custom Conversion with 0 events as promoted_object Ihre Custom Conversion hat noch nicht gefeuert, deshalb verweigert Meta die Optimierung darauf Erst auf LANDING_PAGE_VIEWS optimieren; auf OFFSITE_CONVERSIONS umstellen, sobald 50+ Events gefeuert haben
App must be Live, not Development Sie haben einen Token erzeugt, die App aber nie in den Live-Modus überführt Datenschutz-URL + App-Icon hinzufügen, dann im App-Dashboard App Review → Live umschalten
Use Case must be Marketing API, not Other (UI variiert) Der deutsche UI-Label „Werbeanzeigen mit Marketing API" entspricht englisch „Marketing API". Beide funktionieren für System User Tokens. Beide Use Cases funktionieren; Dropdown-Namen ignorieren und weitermachen
Instagram requires EU Pay-or-Consent + Page Linkage Instagram-platzierte Ads scheitern mit HARD_ERROR bei EU-Traffic, wenn Ihr IG-Account nicht mit einer Page verknüpft ist, die Pay-or-Consent aktiviert hat Instagram-Business-Account mit einer Page verknüpfen unter Unternehmenseinstellungen → Konten → Instagram
bid_strategy is required Ad-Set-Erstellung ohne bid_strategy-Feld "bid_strategy": "LOWEST_COST_WITHOUT_CAP" zum Ad-Set-Payload hinzufügen
targeting_automation.advantage_audience is required Neues v23.0-Feld ist Pflicht "targeting_automation": {"advantage_audience": 1} ergänzen (oder 0)
video_feeds placement is deprecated Dieses Placement wurde in v23.0 entfernt video_feeds aus der Placement-Liste entfernen; stattdessen feed und instagram_reels verwenden
image_hash is required for video_data Video-Creatives benötigen ein Thumbnail-Bild, das als Hash registriert ist Frame mit ffmpeg -i video.mp4 -ss 00:00:01.5 -frames:v 1 thumb.jpg extrahieren, über /adimages hochladen, zurückgegebenen Hash verwenden

Der Custom-Conversion-Fall ist der gemeinste, weil die Fehlermeldung technisch korrekt ist, der Workaround aber nicht offensichtlich. Eine brandneue Custom Conversion hat null Events in Metas System. Meta verweigert, eine Kampagne auf etwas zu optimieren, wozu es keine historischen Daten gibt. Der Trick: Kampagne zuerst auf Landing Page Views starten, 50+ Conversions über CAPI feuern lassen, dann das promoted_object des Ad Sets auf OFFSITE_CONVERSIONS mit Ihrer Custom-Conversion-ID umstellen. Danach funktioniert die Optimierung tatsächlich.

Ein echter erster Kampagnen-Durchlauf

Hier ist, was wir als ersten Live-Test gefahren haben. Echte Werte, echter Ablauf, echte Ergebnisse.

Kampagne anlegen. Ziel: OUTCOME_TRAFFIC (später auf OUTCOME_SALES umgestellt, sobald Conversion-Daten vorhanden waren). Status: zunächst PAUSED, damit Ad Set und Anzeigen darunter angelegt werden können, bevor alles in einem Rutsch auf ACTIVE gesetzt wird. Das Budget liegt bei unserem Setup auf Ad-Set-Ebene.

Ad Set anlegen. Tagesbudget: 1000 (Cent = 10 $/Tag). Optimierung: LANDING_PAGE_VIEWS. Bid Strategy: LOWEST_COST_WITHOUT_CAP. Targeting: Länder ["US", "GB", "CA"], Alter 25 bis 55, Sprache Englisch. Placements: feed, instagram_reels, stories, marketplace. Targeting Automation: {"advantage_audience": 1}.

Creatives bauen. Drei Bild-Creatives und drei Video-Creatives — insgesamt sechs Anzeigen. Für die Bilder haben wir den Output unseres eigenen EMAX Studio genutzt (eat your own dogfood): drei Hooks, drei Hintergründe in Brand-Farben, alle 1080×1080. Für die Videos drei 15-Sekunden-Hochformat-Reels mit Word-by-Word-Captions und KI-Voice, über unsere eigene Pipeline erzeugt (durchgegangen in Wie man eine KI-Marketing-Kampagne Schritt für Schritt erstellt). Jedes Video-Creative braucht einen image_hash für das Thumbnail — Frame bei Sekunde 1,5 mit ffmpeg extrahieren, nach /adimages hochladen und den zurückgegebenen Hash in den video_data-Block einsetzen.

Aktivieren. Kampagne, dann Ad Set, dann alle sechs Anzeigen auf ACTIVE setzen. Die Meta-Prüfung dauert normalerweise 15 bis 30 Minuten. Abgelehnte Anzeigen sind pro Anzeige sichtbar über ad.get('effective_status').

Daily Report. Ein meta_daily_report.py-Skript läuft per Cronjob um 7:00 Uhr Berliner Zeit. Es zieht die Insights, formatiert Spend / CTR / CPM / Conversions in eine Telegram-Nachricht und pausiert automatisch jede Anzeige mit CTR unter 0,5 % nach 100+ Impressions. Die ersten 48 Stunden brachten 4.200 Impressions, 78 Klicks (CTR 1,86 %) und 12 Quick-Scan-Completions zu 1,67 $ pro Conversion — genug Signal, um am dritten Tag die Optimierung von Landing Page Views auf OFFSITE_CONVERSIONS gegen die Custom Conversion QuickScanComplete umzustellen.

Stolperfallen, die Sie vermeiden sollten

Ein paar Dinge werden Sie verbrennen. Wir haben jede einzelne davon auf die harte Tour gelernt.

Tokens niemals in Git hardcoden. Auch nicht in privaten Repos. Tokens leaken über CI-Logs, versehentlich öffentliche Forks und Commits, die gemacht wurden, bevor die Sichtbarkeit eines Repos geändert wurde. Immer aus Umgebungsvariablen oder einer chmod-600-Config-Datei außerhalb des Repos lesen.

Niemals die Page-Manage-Berechtigung aus Schritt 5 überspringen. Die Fehler, die Sie bekommen, sehen so aus, als ginge es um das Ad Account oder den Token. Tun sie nicht. Bei jedem vagen „permission denied" bei Creative-Erstellung zuerst die Page-Asset-Berechtigung erneut prüfen.

Niemals deployen, solange die Developer App noch im Entwicklungsmodus ist. Der Token funktioniert für den User, der ihn erzeugt hat, scheitert aber stillschweigend für jeden anderen System-User-Kontext. Vor dem Server-Betrieb in den Live-Modus wechseln.

Den image_hash für Video-Creatives nicht vergessen. Ohne ihn scheitert die gesamte Anzeigen-Erstellung mit einer irreführenden Fehlermeldung zu video_data.

CAPI nicht überspringen, wenn Sie skalieren wollen. Browser-Pixel verlieren 30 bis 50 % der Events an iOS ATT, Adblocker und Tracking-Prevention. Server-side Conversions API holt die meisten davon zurück — ein Wochenende Arbeit, das sich in der ersten Woche nach Skalierung der Werbeausgaben auszahlt.

Häufig gestellte Fragen

Wie viel kostet es, die Meta Ads CLI einzurichten?

Das Setup selbst ist kostenlos. Marketing API, System User Tokens, Business Manager und alle Developer Tools kosten nichts — Sie zahlen nur für die Anzeigen, die Sie tatsächlich schalten. Rechnen Sie beim ersten Mal mit 4 bis 6 Stunden Setup-Zeit und danach mit 30 Minuten.

Kann ich mehrere Ad Accounts über eine CLI-Installation laufen lassen?

Ja, und das ist einer der Hauptgründe, warum Agenturen System User Tokens nutzen. Fügen Sie jedes Ad Account als Asset in den Unternehmenseinstellungen hinzu, und Sie können jedes einzelne ansprechen, indem Sie die ad_account_id in Ihrer Config ändern oder als Parameter übergeben. Ein System User Token kann hunderte Ad Accounts über mehrere Business Manager hinweg verwalten, wenn die Berechtigungen sitzen.

Was ist mit einer Google Ads CLI — ist das Setup ähnlich?

Das Konzept ist ähnlich, aber Googles Setup ist rauer. Google verlangt eine Developer-Token-Freigabe, die 7 bis 21 Tage dauern kann, OAuth2-Refresh-Tokens, die periodisch ablaufen, und eine zusätzliche Ebene aus MCC-Berechtigungen (Manager Account). Metas System User Token ist tatsächlich das einfachere der beiden Systeme. Wer beide Plattformen betreibt, sollte zuerst Meta einrichten, um die Muster zu lernen.

Wie rotiere ich Tokens sicher, wenn einer kompromittiert wird?

Erzeugen Sie einen neuen System User Token (gleiche Berechtigungen, gleiches „Nie"-Ablaufdatum), updaten Sie Ihre Config, testen Sie, dass der neue Token funktioniert, und widerrufen Sie dann den alten. Meta erlaubt mehrere aktive Tokens für denselben System User gleichzeitig, sodass Sie ohne Downtime rollen können. Bei einem Leak: sofort widerrufen und die letzten Ad Spendings per API auf unautorisierte Kampagnen prüfen.

Wie passt die Conversions API (CAPI) in dieses Setup?

CAPI ist ein separates, aber komplementäres System. Die Meta Ads CLI verwaltet Kampagnen, Ad Sets und Anzeigen. CAPI sendet serverseitige Conversion-Events, gegen die diese Anzeigen optimieren. Beide nutzen dieselbe Pixel-ID. CAPI-Events fließen unabhängig von jedem Browser-Pixel — sie sind das Fundament für DSGVO-sauberes Tracking, weil keine Cookies beteiligt sind und PII vor der Übertragung gehasht wird. Der Überblick über KI-Facebook-Anzeigen mit KI-Agenten zeigt, wie CAPI in den größeren Automatisierungs-Stack passt.

Das ehrliche Fazit

Die Meta Ads CLI ist keine Magie. Sie ist ein disziplinierter Weg, drei Dinge aus Ihrem Workflow zu entfernen: OAuth-Token-Refreshes, manuelle Ads-Manager-Logins und die menschliche Fehlerquote, die entsteht, wenn Sie sich bei jedem Anzeigen-Start durch 14 Einstellungen klicken. Sobald sie läuft, machen Sie in 90 Sekunden, wofür Sie früher 30 Minuten gebraucht haben.

Das Setup ist fummelig, weil Metas Tooling fummelig ist. Aber die Schritte sind deterministisch. Folgen Sie der 7-Schritte-Anleitung exakt, achten Sie auf die 8 Fehler in der Tabelle, und Sie haben am Ende des Nachmittags einen Produktiv-Stack für Anzeigen. Für das größere Bild, wie die CLI mit KI-Creatives und Daily Reporting zusammenspielt, lesen Sie unseren Überblick zu Facebook-Anzeigen mit KI-Agenten und KI-News Woche 18, 2026, um zu sehen, was sich dieses Jahr im Anzeigen-Ökosystem verschiebt.

Sobald die CLI läuft, wird die Frage, womit Sie sie füttern. Lassen Sie Ihre Landing Page durch einen kostenlosen 90-Sekunden-KI-Readiness-Scan auf emax.studio laufen — Sie bekommen einen Score, eine Liste an Conversion-Lücken und ein einsatzbereites Kampagnen-Briefing in unter zwei Minuten.


Folgen Sie EMAX Studio: Instagram | YouTube | Facebook

Teilen:

Bereit, deine eigenen KI-Video-Reels zu erstellen?

5 kostenlose Credits. Keine Kreditkarte nötig.

Jetzt kostenlos erstellen