AutoAiSeo API y MCP
Usa tus datos de AutoAiSeo con tu propio software (REST API) o con asistentes de IA como Claude, ChatGPT o Cursor (MCP). Cada solicitud solo accede a los datos de tu cuenta.
Primeros pasos
- En el panel, abre la pestaña API y MCP y pulsa Nueva clave para crear una. La clave (
rk_live_…) solo se muestra una vez. - Envíala con la cabecera
Authorization: Beareren cada solicitud.
curl -H "Authorization: Bearer rk_live_…" https://autoaiseo.example/api/v1/sites
Dirección base: https://autoaiseo.example/api/v1. Todas las respuestas son JSON; en las correctas, el campo data contiene el resultado.
Autenticación y permisos
| Permisos | Qué permite |
|---|---|
read (Lectura) | Cuenta, sitios, artículos, palabras clave, informe de backlinks, progreso e historial de servicios. |
read_write (Lectura y escritura) | Además, añadir ideas de artículos, encargar la redacción de artículos (descuenta de la cuota mensual de tu plan) y publicar artículos. |
- Máximo 10 claves activas por cuenta. Las claves pueden no caducar o ser válidas durante 30 días, 90 días o 1 año.
- AutoAiSeo no guarda la clave en sí, solo su hash SHA-256 y el prefijo visible (
rk_live_Ab3dEf). Una clave perdida no se puede recuperar; revócala y crea una nueva. - Las claves revocadas o caducadas, y las de cuentas suspendidas, dejan de funcionar de inmediato.
- Las cookies de sesión del navegador no son válidas en la API; hay que enviar la clave en cada solicitud.
Límite de solicitudes
60 solicitudes por minuto por clave (o conexión OAuth). Las respuestas incluyen X-RateLimit-Limit y X-RateLimit-Remaining como cabeceras. Si superas el límite, se devuelve un 429 con la cabecera Retry-After que indica cuántos segundos debes esperar.
Errores
{ "error": { "code": "not_found", "message": "Site bulunamadı" } }
| HTTP | code | Significado |
|---|---|---|
| 400 | invalid_request | Parámetro o cuerpo no válido. |
| 401 | unauthorized, invalid_token | Falta la clave o no es válida, se revocó o caducó. |
| 402 | quota_exceeded | Has agotado tu cuota de artículos de este mes. |
| 403 | insufficient_scope | La operación requiere el permiso “Lectura y escritura”. |
| 403 | account_suspended | La cuenta está suspendida. |
| 404 | not_found | El registro no existe o no te pertenece. |
| 409 | conflict, not_ready, limit_reached | El artículo ya se está escribiendo o ya está publicado, no está listo para publicarse o se alcanzó un límite. |
| 429 | rate_limited | Se superó el límite de solicitudes. |
| 502 | publish_failed | El destino de publicación (WordPress, Shopify…) rechazó la publicación. |
| 500 | internal_error | Error inesperado del servidor. |
Paginación
Las listas largas aceptan los parámetros page y per_page (máximo 100–200) y devuelven esta información:
"pagination": { "page": 1, "per_page": 50, "total": 132, "total_pages": 3 }
Endpoints
GET /api/v1/me
Cuenta, límites del plan, uso de este mes, backlinks extra y permisos de la clave usada.
GET /api/v1/sites
Tus sitios: id, dominio, estado, puntuación de salud SEO, puntuación de confianza, artículos publicados, backlinks activos, dominios de referencia, cambio en 30 días y próximo artículo.
GET /api/v1/sites/{id}
Resumen del sitio: perfil, ajustes de publicación, número de artículos (por estado), resumen de la red de backlinks y resumen del progreso en 30 días.
GET /api/v1/sites/{id}/progress?range=90d
Informe de progreso. range: 30d, 90d, 180d, 365d, all.
GET /api/v1/sites/{id}/articles
Artículos (paginados). Parámetros: status (planned, generating, review, approved, published, failed), q (búsqueda por título/palabra clave), page, per_page.
GET /api/v1/articles/{id}
Artículo: título, meta descripción, puntuaciones (SEO, GEO, legibilidad), FAQ, backlinks de socios, enlaces del cuerpo (internos/externos/socios) y contenido. content: html (predeterminado), markdown o none.
GET /api/v1/sites/{id}/keywords
Palabras clave (paginadas): clúster, intención de búsqueda, prioridad y el artículo que apunta a cada palabra (article_id, article_status). Parámetros: cluster, q, page, per_page.
GET /api/v1/sites/{id}/backlinks
Informe de backlinks: créditos, enlaces activos/pendientes, dominios de referencia, distribución de anchors, enlaces recibidos (paginados) y últimos enlaces dados.
GET /api/v1/sites/{id}/services
El trabajo que AutoAiSeo ha hecho para el sitio: totales, últimos 12 meses e historial (30 por página). Parámetros: kind, q, page.
POST /api/v1/sites/{id}/articles read_write
Añade una idea de artículo al plan de contenidos (estado planned). Si no se indica fecha, se coloca el día siguiente al último artículo del plan; AutoAiSeo lo escribe cuando llega la fecha. No consume cuota.
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
Cuerpo: title (obligatorio, 5–200), target_keyword, cluster, angle, scheduled_for (YYYY-MM-DD). Respuesta 201.
POST /api/v1/articles/{id}/generate read_write
Escribe el artículo en segundo plano (202, estado generating). Se aplican las mismas reglas que en el panel: descuenta de tu cuota mensual (reescribir un artículo ya escrito este mes es gratis) y no se puede reescribir un artículo publicado. Al terminar, el estado pasa a review olur.
POST /api/v1/articles/{id}/publish read_write
Envía el artículo escrito al destino de publicación del sitio (blog de AutoAiSeo, WordPress, Shopify, Webflow, webhook) y devuelve la URL publicada.
Servidor MCP
Dirección: https://autoaiseo.example/mcp — capa de transporte Streamable HTTP (respuestas JSON). Versiones del protocolo: 2026-07-28 y versiones anteriores con handshake (2025-11-25, 2025-06-18, 2025-03-26).
La autenticación se hace de una de estas dos formas:
- OAuth — Los conectores como Claude y ChatGPT abren la página de inicio de sesión y autorización de AutoAiSeo al añadir la dirección; no se necesita clave de API. En el panel, ve a Aplicaciones conectadas: desde ahí puedes eliminar la conexión.
- Clave de API — en clientes como Cursor, Claude Code o VS Code, enviando
Authorization: Bearer rk_live_…como cabecera.
Claude
Ajustes → Conectores → Añadir conector personalizado: pega la dirección MCP como URL y haz clic en Conectar.
ChatGPT
Ajustes → Aplicaciones y conectores → Configuración avanzada: activa el modo desarrollador y en Crear conector indica la dirección MCP y elige la autenticación OAuth.
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_…"
Herramientas MCP
Los resultados de las herramientas incluyen un breve resumen en texto y los mismos datos en formato estructurado (structuredContent). Las herramientas de escritura solo aparecen si se concede permiso de escritura.
| Herramienta | Qué hace |
|---|---|
list_sites | Sitios y métricas resumidas, más el ID que necesitan las demás herramientas: site_id. |
site_overview | Perfil del sitio, métricas, número de artículos, resumen de la red de backlinks. |
site_progress | Informe de progreso de un periodo (inicio frente a ahora, hitos). |
list_articles | Artículos; filtro por estado y texto, paginados. |
get_article | Contenido del artículo (markdown/HTML), puntuaciones, enlaces, FAQ. |
list_keywords | Palabras clave y los artículos que las cubren. |
backlink_report | Informe de la red de backlinks y enlaces recibidos. |
services_history | Desglose del trabajo realizado por AutoAiSeo. |
add_article_idea yazma | Añade una idea de artículo al plan de contenidos. |
generate_article yazma | Encarga la redacción del artículo (descuenta de la cuota). |
publish_article yazma | Publica el artículo. |
OAuth (para desarrolladores de clientes MCP)
AutoAiSeo incluye un pequeño servidor de autorización OAuth 2.1 conforme a la especificación de autorización de MCP.
| Metadatos del recurso protegido | /.well-known/oauth-protected-resource (y con /mcp añadido al final) |
| Metadatos del servidor de autorización | /.well-known/oauth-authorization-server |
| Registro de clientes | Client ID Metadata Documents (https client_id) o registro dinámico: POST /oauth/register (solo clientes públicos, token_endpoint_auth_method: none) |
| Autorización | GET /oauth/authorize — response_type=code, PKCE S256 zorunlu, resource (RFC 8707), en la respuesta iss (RFC 9207) |
| Clave | POST /oauth/token — authorization_code y refresh_token |
| Cancelar | POST /oauth/revoke (RFC 7009) |
| Alcances | read, write (escritura incluye lectura). El usuario elige el nivel en la pantalla de consentimiento. |
- Las URL de redirección deben ser https o
localhost/127.0.0.1y deben coincidir exactamente (en las direcciones de loopback el puerto es libre). - El código de autorización es válido durante 2 minutos y de un solo uso; un segundo uso revoca todos los tokens de esa conexión.
- El token de acceso es válido durante 1 hora y el de actualización, 30 días. Los tokens de actualización cambian con cada uso; reutilizar un token de actualización antiguo cierra la conexión.
- Los tokens de acceso solo se emiten para el servidor MCP; la API REST requiere una clave de API personal.
- Si el alcance es insuficiente, se devuelven
403yWWW-Authenticate: Bearer error="insufficient_scope", scope="read write"como respuesta.
Privacidad
El registro de actividad de la API que ves en el panel solo contiene el método, la ruta, el código de estado, la duración, el prefijo visible de la clave (o el nombre de la aplicación OAuth) y la hora. No se registran los contenidos de solicitudes y respuestas ni las direcciones IP; se conservan las últimas 1.000 solicitudes de cada cuenta.