Zum Hauptinhalt springen
Die CLI ist für Automatisierung gebaut: Sie gibt standardmäßig strukturiertes JSON aus, akzeptiert Zugangsdaten aus Umgebungsvariablen und verwendet Standard-Exit-Codes. Jeder Befehl entspricht 1:1 einem REST-Endpunkt von Social media studio, sodass alles, was die App kann, auch skriptbar ist.
Das Binary heißt so-me (der Entwicklungs-Build heißt so-me-dev). Alle Beispiele unten verwenden so-me. Unterbefehle verwenden die Doppelpunkt-Syntax — posts:list, media:upload, agent export-tools.

Ausgabemodi

Die Ausgabeformatierung wird über globale Flags gesteuert, die für jeden Befehl gelten. Sie müssen zusammen mit deinen übrigen Argumenten in der Kommandozeile stehen (Commander behandelt sie als globale Optionen).
Verwende --table für Menschen, nicht für Skripte. Die Tabellenansicht kürzt lange Felder und wählt eine Teilmenge der Spalten aus, sie ist daher nicht maschinenlesbar. Leite in der Automatisierung immer das Standard-JSON an jq weiter.
Das Standardformat kann auch in der CLI-Konfiguration gespeichert werden (outputFormat), aber --table in der Kommandozeile gewinnt für diesen Aufruf immer.

JSON-Ausgabe und jq

Leite jeden Befehl an jq weiter, um Daten zu extrahieren und umzuformen.
Listen-Endpunkte geben einen paginierten Umschlag zurück, kein bloßes Array. Die Form ist { "data": [ ... ], "meta": { ... } }, du musst also mit .data[] darauf zugreifen. Befehle für einzelne Objekte (posts:get, posts:create, posts:update, …) geben das Objekt direkt zurück, Felder wie .id liegen also auf oberster Ebene.

Paginierung

Listenbefehle akzeptieren zwei Paginierungs-Flags. Es gibt bei Listenbefehlen kein Flag --cursor oder --all — paginiere, indem du --page erhöhst.
Das Flag --all gibt es nur bei agent export-tools, wo es „jedes Tool-Format ausgeben“ bedeutet — es hat nichts mit Paginierung zu tun.

Shell-Skripte

Erstellen und planen

posts:create löst das Social-Konto automatisch aus --platform auf, wenn du -a/--accounts nicht angibst. Passen mehrere Konten, fragt der Befehl interaktiv nach — in nicht interaktiver CI gibst du daher mit -a eine explizite Konto-ID an oder verlässt dich darauf, dass für diese Plattform nur ein Konto verbunden ist.

Fehlgeschlagene Beiträge in einem Rutsch löschen

Alle Entwürfe umwandeln

Authentifizierung für CI

Die CLI sucht Zugangsdaten in dieser Reihenfolge: das Flag --api-key, dann die Umgebungsvariable SOME_API_KEY, dann der von auth:login gespeicherte API-Schlüssel. Für die Automatisierung ist die Umgebungsvariable vorzuziehen, damit nichts auf die Festplatte geschrieben wird.

GitHub Actions

Speichere deinen API-Schlüssel als Repository-Secret (SOME_API_KEY). Die CLI liest ihn automatisch aus der Umgebung — schreibe den Schlüssel niemals fest in eine Workflow-Datei und committe ihn nicht ins Repository.

Fehlerbehandlung

Exit-Codes

Bei einem Fehler setzt die CLI einen Exit-Code ungleich null (process.exitCode = 1), sodass &&, set -e und if-Abfragen wie erwartet funktionieren.

Ausführliche Fehler

Mit --verbose siehst du die vollständigen Fehlerdetails, einschließlich des Stacktraces, sofern einer verfügbar ist:
Häufige Fehlerbedingungen, die der API-Client meldet:

Umgang mit Rate Limits

Eine ratenbegrenzte Anfrage (HTTP 429) beendet sich mit Exit-Code 1. Füge in Skripten eine Wiederholungslogik mit Backoff hinzu:

Agent-Tool-Definitionen

Die CLI kann den Tool-Katalog von Social media studio in Formaten exportieren, die KI-Agent-Frameworks verarbeiten können. agent export-tools ruft die kanonische Tool-Liste live vom MCP-Server ab (ein JSON-RPC-Aufruf tools/list an POST /mcp) und gibt sie im gewählten Format aus. Der MCP-Server ist die einzige Quelle der Wahrheit, daher stimmen exportierte Definitionen immer mit dem Live-Katalog überein.
string
Eines von mcp, openai, anthropic, hermes, openclaw. Erforderlich, sofern nicht --all angegeben ist.
string
Schreibt die Ausgabe in eine Datei (und legt eventuelle Begleitdateien daneben ab). Sieht der Pfad wie ein Verzeichnis aus (keine Dateiendung oder ein abschließender Schrägstrich), wird der Standarddateiname des Formats angehängt. Wenn weggelassen, wird die Hauptausgabe auf stdout geschrieben.
boolean
Standard:"false"
Gibt jedes unterstützte Format aus. Behandelt --out als Verzeichnis (Standard ./agent-tools) und schreibt jedes Format in ein eigenes Unterverzeichnis.

Unterstützte Formate

Beispiele

Jedes Format wird aus derselben tools/list-Antwort abgeleitet, daher bleiben exportierte Definitionen mit dem Live-Tool-Katalog synchron. Tool-Namen sind in snake_case (z. B. create_post) und spiegeln die resource:verb-Befehle der CLI wider. Über den MCP-Transport werden dieselben Tools als mcp_so-me-studio_<tool_name> registriert (z. B. mcp_so-me-studio_create_post).

Selbst gehostete Instanzen

Richte die CLI über das Flag oder die Umgebungsvariable auf eine eigene API-URL aus: