AutoAiSeo API und MCP
Nutzen Sie Ihre AutoAiSeo-Daten mit Ihrer eigenen Software (REST API) oder mit KI-Assistenten wie Claude, ChatGPT und Cursor (MCP). Jede Anfrage greift nur auf die Daten Ihres eigenen Kontos zu.
Erste Schritte
- Öffnen Sie im Panel den Tab API und MCP und erstellen Sie mit Neuer Schlüssel einen Schlüssel. Der Schlüssel (
rk_live_…) wird nur einmal angezeigt. - Senden Sie ihn bei Anfragen im Header
Authorization: Bearermit.
curl -H "Authorization: Bearer rk_live_…" https://autoaiseo.example/api/v1/sites
Basisadresse: https://autoaiseo.example/api/v1. Alle Antworten sind JSON; bei Erfolg wird das Ergebnis im Feld data zurückgegeben.
Authentifizierung und Berechtigungen
| Berechtigung | Möglichkeiten |
|---|---|
read (Lesen) | Konto, Websites, Artikel, Keywords, Backlink-Bericht, Entwicklung und Leistungsverlauf. |
read_write (Lesen und Schreiben) | Zusätzlich Artikelideen hinzufügen, Artikel schreiben lassen (wird vom monatlichen Tarifkontingent abgezogen) und Artikel veröffentlichen. |
- Höchstens 10 aktive Schlüssel pro Konto. Schlüssel können unbegrenzt oder 30 Tage, 90 Tage bzw. 1 Jahr gültig sein.
- AutoAiSeo speichert nicht den Schlüssel selbst, sondern nur seinen SHA-256-Hash und das sichtbare Präfix (
rk_live_Ab3dEf). Ein verlorener Schlüssel lässt sich nicht wiederherstellen; widerrufen Sie ihn und erstellen Sie einen neuen. - Widerrufene oder abgelaufene Schlüssel sowie Schlüssel gesperrter Konten funktionieren sofort nicht mehr.
- Browser-Sitzungscookies gelten in der API nicht; der Schlüssel muss bei jeder Anfrage gesendet werden.
Rate Limit
60 Anfragen pro Minute je Schlüssel (oder OAuth-Verbindung). Antworten enthalten X-RateLimit-Limit und X-RateLimit-Remaining als Header. Bei Überschreitung des Limits werden 429 und der Header Retry-After zurückgegeben, der angibt, wie viele Sekunden Sie warten müssen.
Fehler
{ "error": { "code": "not_found", "message": "Site bulunamadı" } }
| HTTP | code | Bedeutung |
|---|---|---|
| 400 | invalid_request | Parameter oder Body ungültig. |
| 401 | unauthorized, invalid_token | Schlüssel fehlt, ist ungültig, widerrufen oder abgelaufen. |
| 402 | quota_exceeded | Ihr Artikelkontingent für diesen Monat ist ausgeschöpft. |
| 403 | insufficient_scope | Für die Aktion ist die Berechtigung „Lesen und Schreiben“ erforderlich. |
| 403 | account_suspended | Konto gesperrt. |
| 404 | not_found | Eintrag existiert nicht oder gehört nicht Ihnen. |
| 409 | conflict, not_ready, limit_reached | Der Artikel wird bereits geschrieben oder ist online, ist nicht veröffentlichungsbereit, oder ein Limit wurde erreicht. |
| 429 | rate_limited | Rate Limit überschritten. |
| 502 | publish_failed | Das Veröffentlichungsziel (WordPress, Shopify…) hat die Veröffentlichung nicht angenommen. |
| 500 | internal_error | Unerwarteter Serverfehler. |
Seitennavigation
Lange Listen akzeptieren die Parameter page und per_page (maximal 100–200) und liefern folgende Angaben zurück:
"pagination": { "page": 1, "per_page": 50, "total": 132, "total_pages": 3 }
Endpunkte
GET /api/v1/me
Konto, Tariflimits, Nutzung in diesem Monat, zusätzliche Backlinks und die Berechtigung des verwendeten Schlüssels.
GET /api/v1/sites
Ihre Websites: id, Domain, Status, SEO-Health-Score, Trust-Score, veröffentlichte Artikel, Live-Backlinks, verweisende Domains, Veränderung in 30 Tagen und nächster Artikel.
GET /api/v1/sites/{id}
Website-Übersicht: Profil, Veröffentlichungseinstellungen, Artikelanzahl (nach Status), Übersicht zum Backlink-Netzwerk und Entwicklung der letzten 30 Tage.
GET /api/v1/sites/{id}/progress?range=90d
Entwicklungsbericht. range: 30d, 90d, 180d, 365d, all.
GET /api/v1/sites/{id}/articles
Artikel (paginiert). Parameter: status (planned, generating, review, approved, published, failed), q (Suche nach Titel/Keyword), page, per_page.
GET /api/v1/articles/{id}
Artikel: Titel, Meta-Beschreibung, Scores (SEO, GEO, Lesbarkeit), FAQ, Partner-Backlinks, Links im Text (intern/extern/Partner) und Inhalt. content: html (Standard), markdown oder none.
GET /api/v1/sites/{id}/keywords
Keywords (paginiert): Cluster, Suchintention, Priorität und der Artikel, der das Keyword abdeckt (article_id, article_status). Parameter: cluster, q, page, per_page.
GET /api/v1/sites/{id}/backlinks
Backlink-Bericht: Credits, Live-/ausstehende Links, verweisende Domains, Anchor-Verteilung, erhaltene Links (paginiert) und zuletzt gesetzte Links.
GET /api/v1/sites/{id}/services
Was AutoAiSeo für die Website erledigt hat: Summen, letzte 12 Monate und Verlauf (30 pro Seite). Parameter: kind, q, page.
POST /api/v1/sites/{id}/articles read_write
Fügt dem Content-Plan eine Artikelidee hinzu (Status planned). Ohne Datum wird die Idee auf den Tag nach dem letzten Artikel im Plan gesetzt; an diesem Tag schreibt AutoAiSeo den Artikel. Verbraucht kein Kontingent.
curl -X POST -H "Authorization: Bearer rk_live_…" -H "Content-Type: application/json" \
-d '{"title":"Filtre kahve nasıl demlenir?","target_keyword":"filtre kahve demleme","angle":"Yeni başlayanlar için"}' \
https://autoaiseo.example/api/v1/sites/12/articles
Request-Body: title (Pflichtfeld, 5–200), target_keyword, cluster, angle, scheduled_for (YYYY-MM-DD). Antwort: 201.
POST /api/v1/articles/{id}/generate read_write
Lässt den Artikel im Hintergrund schreiben (202, Status generating). Es gelten dieselben Regeln wie im Panel: Der Artikel wird von Ihrem Monatskontingent abgezogen (einen in diesem Monat bereits geschriebenen Artikel neu zu schreiben ist kostenlos), veröffentlichte Artikel können nicht neu geschrieben werden. Danach wechselt der Status zu review olur.
POST /api/v1/articles/{id}/publish read_write
Sendet den geschriebenen Artikel an das Veröffentlichungsziel der Website (AutoAiSeo-Blog, WordPress, Shopify, Webflow, Webhook) und gibt die Veröffentlichungsadresse zurück.
MCP-Server
Adresse: https://autoaiseo.example/mcp — Transport über Streamable HTTP (JSON-Antworten). Protokollversionen: 2026-07-28 sowie ältere Versionen mit Handshake (2025-11-25, 2025-06-18, 2025-03-26).
Die Authentifizierung erfolgt auf einem von zwei Wegen:
- OAuth — Konnektoren wie Claude und ChatGPT öffnen beim Hinzufügen der Adresse die Anmelde- und Zustimmungsseite von AutoAiSeo; ein API-Schlüssel ist nicht nötig. Die Verbindung können Sie im Panel unter Verbundene Apps entfernen.
- API-Schlüssel — in Clients wie Cursor, Claude Code oder VS Code mit
Authorization: Bearer rk_live_…als Header.
Claude
Einstellungen → Konnektoren → Benutzerdefinierten Konnektor hinzufügen, fügen Sie die MCP-Adresse als URL ein und klicken Sie auf Verbinden.
ChatGPT
Einstellungen → Apps und Konnektoren → Erweiterte Einstellungen: Aktivieren Sie dort den Entwicklermodus und wählen Sie unter Konnektor erstellen die MCP-Adresse und die OAuth-Authentifizierung.
Cursor (~/.cursor/mcp.json)
{
"mcpServers": {
"autoaiseo": {
"url": "https://autoaiseo.example/mcp",
"headers": { "Authorization": "Bearer rk_live_…" }
}
}
}
Claude Code
claude mcp add --transport http autoaiseo https://autoaiseo.example/mcp --header "Authorization: Bearer rk_live_…"
MCP-Tools
Tool-Ergebnisse enthalten eine kurze Textzusammenfassung und dieselben Daten in strukturierter Form (structuredContent). Schreib-Tools werden nur aufgelistet, wenn eine Schreibberechtigung erteilt wurde.
| Tool | Funktion |
|---|---|
list_sites | Websites und Kennzahlen im Überblick; für andere Tools: site_id. |
site_overview | Website-Profil, Kennzahlen, Artikelanzahl, Übersicht zum Backlink-Netzwerk. |
site_progress | Entwicklungsbericht für einen Zeitraum (Start und jetzt, Meilensteine). |
list_articles | Artikel; Filter nach Status und Text, paginiert. |
get_article | Artikelinhalt (Markdown/HTML), Scores, Links, FAQ. |
list_keywords | Keywords und die abdeckenden Artikel. |
backlink_report | Bericht zum Backlink-Netzwerk und erhaltene Links. |
services_history | Aufstellung der von AutoAiSeo erledigten Arbeit. |
add_article_idea yazma | Fügt dem Content-Plan eine Artikelidee hinzu. |
generate_article yazma | Lässt den Artikel schreiben (wird vom Kontingent abgezogen). |
publish_article yazma | Veröffentlicht den Artikel. |
OAuth (für Entwickler von MCP-Clients)
AutoAiSeo enthält einen schlanken OAuth-2.1-Autorisierungsserver gemäß der MCP-Autorisierungsspezifikation.
| Metadaten der geschützten Ressource | /.well-known/oauth-protected-resource (und mit /mcp als Suffix) |
| Metadaten des Autorisierungsservers | /.well-known/oauth-authorization-server |
| Client-Registrierung | Client ID Metadata Documents (https client_id) oder dynamische Registrierung: POST /oauth/register (nur öffentliche Clients, token_endpoint_auth_method: none) |
| Autorisierung | GET /oauth/authorize — response_type=code, PKCE S256 zorunlu, resource (RFC 8707), in der Antwort iss (RFC 9207) |
| Schlüssel | POST /oauth/token — authorization_code und refresh_token |
| Abgebrochen | POST /oauth/revoke (RFC 7009) |
| Scopes | read, write (Schreiben schließt Lesen ein). Die Stufe wählt der Nutzer auf dem Zustimmungsbildschirm. |
- Weiterleitungsadressen müssen https oder
localhost/127.0.0.1sein; sie müssen exakt übereinstimmen (bei Loopback-Adressen ist der Port frei). - Der Autorisierungscode ist 2 Minuten gültig und nur einmal verwendbar; eine zweite Verwendung widerruft alle Tokens dieser Verbindung.
- Das Zugriffstoken ist 1 Stunde gültig, das Refresh-Token 30 Tage. Refresh-Tokens ändern sich bei jeder Verwendung; wird ein altes Refresh-Token erneut verwendet, wird die Verbindung getrennt.
- Zugriffstokens werden nur für den MCP-Server ausgestellt; die REST API erfordert einen persönlichen API-Schlüssel.
- Bei unzureichendem Scope
403undWWW-Authenticate: Bearer error="insufficient_scope", scope="read write"wird zurückgegeben.
Datenschutz
Das API-Aktivitätsprotokoll im Panel enthält nur Methode, Pfad, Statuscode, Dauer, das sichtbare Schlüsselpräfix (bzw. den Namen der OAuth-App) und den Zeitpunkt. Inhalte von Anfragen und Antworten sowie IP-Adressen werden nicht protokolliert; pro Konto werden die letzten 1.000 Anfragen aufbewahrt.