Kann ChatGPT über Shager posten? Ja: per Anmeldung verbinden oder einen von drei weiteren Wegen nutzen

ChatGPTs MCP-Connectoren melden sich per OAuth an, und Shager unterstützt das: im Entwicklermodus hinzufügen, anmelden, bestätigen. Dazu Codex, API und Skript.

Ja. Die benutzerdefinierten MCP-Connectoren von ChatGPT authentifizieren sich per OAuth, und Shagers MCP-Server unterstützt die Anmeldung per OAuth. Füge https://app.shager.ai/api/mcp im Entwicklermodus als Connector hinzu, melde dich bei Shager an und bestätige, ohne Schlüssel zum Kopieren. Außerdem kannst du OpenAI-Modelle für Shager einspannen: über Codex, über die OpenAI-API oder indem ChatGPT die Texte schreibt und ein kurzes Skript sie ausliefert.

Dieser Artikel zeigt, wie du den Connector hinzufügst, und liefert für jeden der anderen Wege funktionierenden Code.

Wie fügst du Shager als ChatGPT-Connector hinzu?

OpenAIs Leitfaden zur Authentifizierung für Apps in ChatGPT beschreibt das unterstützte Modell: Server, die eine Anmeldung brauchen, implementieren einen OAuth-2.1-Ablauf nach der MCP-Autorisierungsspezifikation – bevorzugt mit Client ID Metadata Documents, unterstützt wird aber auch die dynamische Client-Registrierung. Alternativ können Server ganz ohne Authentifizierung laufen. Derselbe Leitfaden stellt klar, dass ChatGPT keine eigenen API-Schlüssel übermitteln kann.

Shagers Server unter https://app.shager.ai/api/mcp folgt dieser Spezifikation, mit Client ID Metadata Documents und dynamischer Client-Registrierung. So verbindest du ihn:

  1. Öffne in ChatGPT die Einstellungen, dann „Apps & Connectors“, schalte den Entwicklermodus („Developer mode“) ein und klicke auf „Create“.
  2. Nenne ihn Shager, trag https://app.shager.ai/api/mcp ein und wähle OAuth.
  3. Klicke auf „Connect“. Shager öffnet sich: Melde dich an, wähle die Organisation und bestätige.

Der Entwicklermodus ist in den kostenpflichtigen Tarifen von ChatGPT verfügbar. Die Verbindung kann lesen und Entwürfe anlegen. Planen und Veröffentlichen ist ein eigenes Häkchen auf der Bestätigungsseite und bleibt aus, solange du es nicht setzt. Trennen kannst du die Verbindung jederzeit unter https://app.shager.ai/dashboard/agents.

Warum nicht einfach einen Proxy ohne Anmeldung vor einen API-Schlüssel schalten?

Das wird oft vorgeschlagen, und es ist eine schlechte Idee, zumal du es nicht mehr brauchst. Ein Proxy, der Anfragen ohne Anmeldung annimmt und deinen Shager-Schlüssel einsetzt, macht den Veröffentlichungszugang deiner Agentur zu einem öffentlichen Endpunkt. Wer die URL findet, kann Entwürfe in Kunden-Workspaces anlegen – und mit einem publish-Schlüssel auch planen. Lass es.

Diagramm: Ein KI-Agent (Claude, Codex oder Cursor) verbindet sich über den MCP-Server oder die REST-API mit Shager, und Shager verteilt an Facebook, Instagram, YouTube, X, LinkedIn und TikTok.
Shager übernimmt Verbindungen, Prüfungen, gestaffelten Versand und Klickmessung. Facebook und Instagram warten auf die Freigabe durch Meta; bis dahin können sich nur Testkonten verbinden. Auf TikTok werden Beiträge als privat („Nur ich“) veröffentlicht, bis TikTok die App freigibt.

Weg 1: Codex, der Coding-Agent von OpenAI

Wenn du „ein OpenAI-Modell, das Shager bedient“ willst, erledigt Codex das schon heute sauber. Es unterstützt Bearer-Tokens aus einer Umgebungsvariablen für Streamable-HTTP-MCP-Server, die Einrichtung sind also ein paar Zeilen in ~/.codex/config.toml:

[mcp_servers.shager]
url = "https://app.shager.ai/api/mcp"
bearer_token_env_var = "SHAGER_API_KEY"

Laut OpenAIs MCP-Dokumentation teilen sich die ChatGPT-Desktop-App, die Codex CLI und die IDE-Erweiterung diese Konfigurationsdatei. Die vollständige Anleitung, inklusive Allowlist für Tools, steht in Shager mit Codex verbinden.

Weg 2: die OpenAI Responses API mit einem Remote-MCP-Tool

Baust du deinen eigenen Agenten auf der OpenAI-API, kann die Responses API Remote-MCP-Server selbst aufrufen. Der Leitfaden zu Connectoren und MCP dokumentiert ein mcp-Tool mit server_url, einem authorization-Feld für das Zugriffstoken, allowed_tools und require_approval. Außerdem steht dort, dass die API den Wert von authorization nicht speichert – du sendest ihn also bei jeder Anfrage mit.

import os
from openai import OpenAI

client = OpenAI()

response = client.responses.create(
    model=os.environ["OPENAI_MODEL"],
    input=(
        "In the Shager workspace 'Cedar Clinics', list the channels, then create a "
        "DRAFT post to all active channels announcing Saturday walk-in hours. "
        "Use a different caption per channel that names the clinic's town. "
        "cta_url https://cedarclinics.example/walk-in, campaign 'walk-in-sat'. "
        "Do not pass schedule_at."
    ),
    tools=[{
        "type": "mcp",
        "server_label": "shager",
        "server_url": "https://app.shager.ai/api/mcp",
        "authorization": os.environ["SHAGER_API_KEY"],
        "allowed_tools": [
            "whoami", "list_workspaces", "list_channels",
            "list_groups", "create_post", "get_post",
        ],
        "require_approval": {
            "never": {"tool_names": ["whoami", "list_workspaces", "list_channels", "list_groups", "get_post"]}
        },
    }],
)

print(response.output_text)

Drei Hinweise aus der Praxis mit solchen Setups.

Erstens: Teste die Anmeldung vor allem anderen mit whoami. Die OpenAI-Dokumentation beschreibt authorization als Feld für ein OAuth-Zugriffstoken; Shagers Schlüssel ist ein Bearer-Token. Der erste Aufruf zeigt dir also sofort, ob der Header so ankommt, wie Shager ihn erwartet. Bekommst du in der Tool-Ausgabe einen 401 zurück, weich auf Weg 3 aus.

Zweitens: create_post steht bewusst nicht in der never-Liste. Die API liefert deshalb eine Freigabeanfrage, bevor der Aufruf läuft. Dein Code prüft die Argumente und antwortet mit einer Freigabe. Das ist ein günstiger Kontrollpunkt – menschlich oder regelbasiert –, bevor ein Entwurf entsteht.

Drittens: Lass publish bei diesem Schlüssel weg. Dann kann selbst ein freigegebener Aufruf nur Entwürfe anlegen.

Weg 3: ChatGPT schreibt, dein Skript liefert aus

Das ist das gängigste Muster bei Agenturen, die in ChatGPT zu Hause sind. Das Modell tut, was es gut kann: vierzig Varianten eines Texts schreiben. Ein zwanzigzeiliges Skript übernimmt die Auslieferung über Shagers REST-API unter https://app.shager.ai/api/v1, die das OpenAPI-Dokument vollständig beschreibt.

Bitte ChatGPT um eine strukturierte Ausgabe, die du in eine Datei einfügen kannst:

For each account below, write a caption for our Saturday walk-in hours post.
Vary the opening line and mention the town. Keep facts identical.
Return only JSON: [{"channel_id": "...", "caption": "..."}]
Accounts: <paste the id and name list from list_channels>

Dann schickst du sie als Entwurf ab:

import json, os, requests

API = "https://app.shager.ai/api/v1"
H = {"Authorization": f"Bearer {os.environ['SHAGER_API_KEY']}"}
WS = os.environ["SHAGER_WORKSPACE_ID"]

captions = json.load(open("captions.json"))

r = requests.post(f"{API}/workspaces/{WS}/posts", headers=H, json={
    "caption": captions[0]["caption"],
    "channel_ids": [c["channel_id"] for c in captions],
    "per_channel": captions,
    "cta_url": "https://cedarclinics.example/walk-in",
    "campaign": "walk-in-sat",
    "first_comment": "Hours and directions: https://cedarclinics.example/walk-in",
}, timeout=60)

body = r.json()
if not r.ok:
    raise SystemExit(f"{body['error']['code']}: {body['error']['message']}")
print("draft", body["data"]["id"], body["data"]["status"])

Das Array per_channel nimmt Objekte mit channel_id und caption an (optional außerdem first_comment und format), das JSON von ChatGPT passt also direkt hinein. Die cta_url bekommt pro Konto einen eigenen Kurzlink und eigene UTM-Parameter, wobei utm_content das Konto benennt. Genau das macht die Ergebnisse später zuordenbar.

Eine curl-Anfrage, die über die REST-API von Shager einen Beitrag erstellt: Text, Kontogruppe, Tracking-Link und Veröffentlichungszeit.
Dieselben Operationen wie der MCP-Server, dokumentiert in OpenAPI.

Welcher Weg passt zu welchem Team?

Situation Weg
Du willst schon heute einen Agenten mit Tools im Terminal oder in der IDE Codex mit bearer_token_env_var
Du baust ein eigenes Produkt oder einen eigenen Agenten auf OpenAI-Modellen Responses API mit dem mcp-Tool oder reines REST
Dein Team schreibt in ChatGPT und will dort bleiben ChatGPT für die Texte, ein Skript für die Auslieferung
Du willst Shager direkt in der ChatGPT-App Ein benutzerdefinierter Connector im Entwicklermodus, mit Anmeldung per OAuth

Was bringt dir die Anmeldung?

Du fügst https://app.shager.ai/api/mcp als benutzerdefinierten MCP-Server in ChatGPT hinzu und meldest dich mit deinem Shager-Konto an – so, wie OpenAIs Leitfaden zur Verbindung aus ChatGPT es für Server mit Anmeldung beschreibt. Jede Person verbindet sich mit ihrem eigenen Konto, statt einen Schlüssel zu teilen. Das Audit-Log funktioniert genauso, ebenso die Tools, die eins zu eins den REST-Operationen entsprechen.

FAQ

Gibt es irgendeinen Weg, in den Connector-Einstellungen von ChatGPT einen API-Schlüssel zu verwenden?

Laut OpenAIs Authentifizierungsleitfaden für Apps in ChatGPT nicht: Er nennt OAuth und den Modus ohne Anmeldung und sagt, dass ChatGPT keine eigenen API-Schlüssel übermitteln kann. Du brauchst auch keinen: Wähle OAuth und melde dich an. Jeden Workaround, der deinen Schlüssel hinter einem offenen Endpunkt preisgibt, solltest du als Sicherheitsproblem betrachten, nicht als Lösung.

Funktioniert Shager mit ChatGPT auf dem Smartphone?

Das hängt davon ab, wo ChatGPT benutzerdefinierte MCP-Server zulässt. Das entscheidet OpenAI, und es hat sich während der Einführung schon geändert. Schau in OpenAIs aktuelle Dokumentation, statt dich auf früheres Verhalten zu verlassen.

Brauche ich einen kostenpflichtigen Shager-Tarif, um einen dieser Wege auszuprobieren?

Nein. API- und MCP-Zugang sind in jedem Tarif enthalten, und während der Startphase ist Shager kostenlos, ganz ohne Karte; bevor wir etwas berechnen, sagen wir dir rechtzeitig Bescheid. Die Kontolimits pro Tarif findest du auf der Preisseite.

Nächster Schritt

Wenn du den Weg über Code gehst, orientierst du dich am schnellsten mit dem Schnellstart für die REST-API. Er führt in sechs Aufrufen von einem frischen Schlüssel zu einem Entwurf für mehrere Konten mit Tracking.

Probier’s aus – mit deinen eigenen Konten.

Kostenlos in der Launch-Phase, ohne Karte. Verbinden, einmal schreiben, und Shager veröffentlicht und misst.