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

_2026-09-05 · 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](https://developers.openai.com/apps-sdk/build/auth) 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.

## 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`:

```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](/en/blog/connect-shager-to-codex).

## 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](https://developers.openai.com/api/docs/guides/tools-connectors-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.

```python
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](https://app.shager.ai/api/v1/openapi.json) vollständig beschreibt.

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

```text
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:

```python
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.

## 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](https://developers.openai.com/apps-sdk/deploy/connect-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](/en/pricing).

## Nächster Schritt

Wenn du den Weg über Code gehst, orientierst du dich am schnellsten mit dem [Schnellstart für die REST-API](/en/blog/shager-rest-api-quickstart). Er führt in sechs Aufrufen von einem frischen Schlüssel zu einem Entwurf für mehrere Konten mit Tracking.

---
Source: https://shager.ai/de/blog/shager-and-chatgpt
