Skip to Content
Uncodie Market Fit está disponible 🎉
Rest APIAnalysisSitesAPI de Análisis de UX de Sitios Web

API de Análisis de UX de Sitios Web

El endpoint /api/site/analyze permite realizar análisis completos de sitios web, evaluando su rendimiento, SEO, accesibilidad y mejores prácticas.

Características principales

  • Implementación avanzada y flexible
  • Ofrece múltiples tipos de análisis: básico, completo y estructurado
  • Utiliza servicios especializados para cada tipo de análisis
  • Permite configurar múltiples opciones avanzadas
  • Puede utilizar diferentes proveedores de IA (OpenAI, Anthropic, Gemini)
  • Sistema sofisticado de manejo de errores

Analizador de Sitios Web

Prueba el API de análisis de sitios web con tus propios parámetros.

Tipos de análisis

Análisis básico (basic)

Proporciona un análisis rápido y general del sitio web, incluyendo:

  • Información básica del sitio
  • Estructura general
  • Problemas evidentes

Análisis completo (complete)

Proporciona un análisis más profundo, incluyendo:

  • Todo lo del análisis básico
  • Evaluación de rendimiento
  • Análisis SEO
  • Verificación de accesibilidad
  • Mejores prácticas
  • Recomendaciones detalladas

Análisis estructurado (structured)

Proporciona un análisis estructurado del sitio, incluyendo:

  • Jerarquía de elementos
  • Bloques de contenido
  • Estructura semántica
  • Relaciones entre elementos

Métodos disponibles

POST /api/site/analyze

Realiza un análisis completo de un sitio web, evaluando múltiples aspectos como rendimiento, SEO, accesibilidad y mejores prácticas.

Parámetros de solicitud

{ "url": "https://ejemplo.com", // URL del sitio (obligatorio) "options": { "analysisType": "complete", // Tipo de análisis: 'basic', 'complete', 'structured' "depth": 2, // Profundidad del análisis (1-3) "timeout": 30000, // Tiempo máximo de espera en milisegundos (entre 5000 y 60000) "ignoreSSL": false, // Ignorar errores de certificados SSL "userAgent": "Mozilla/5.0...", // User Agent personalizado (opcional) "failOnError": false, // Si es false, intenta continuar incluso con errores "safeSelectors": true, // Si es true, valida los selectores antes de usarlos "includeScreenshot": true, // Incluir captura de pantalla en la respuesta "aiProvider": "openai", // Proveedor de IA: 'openai', 'anthropic', 'gemini' "aiModel": "gpt-5-nano" // Modelo específico de IA a utilizar } }

Respuesta

{ "url": "https://ejemplo.com", "title": "Título del sitio", "description": "Descripción del sitio", "screenshot": "data:image/png;base64,...", // Captura de pantalla en base64 (opcional) "performance": { "overall": 85, "firstContentfulPaint": { "score": 90, "label": "First Contentful Paint", "description": "Tiempo hasta que se muestra el primer contenido" }, "largestContentfulPaint": { "score": 85, "label": "Largest Contentful Paint", "description": "Tiempo hasta que se muestra el contenido principal" }, // Otras métricas de rendimiento... }, "seo": { "overall": 88, "metaTags": { "score": 95, "label": "Meta Tags", "description": "Uso correcto de meta tags" }, // Otras métricas de SEO... }, "accessibility": { "overall": 78, "contrast": { "score": 80, "label": "Contraste", "description": "Contraste adecuado entre texto y fondo" }, // Otras métricas de accesibilidad... }, "bestPractices": { "overall": 82, "httpsUsage": { "score": 100, "label": "Uso de HTTPS", "description": "El sitio utiliza HTTPS correctamente" }, // Otras métricas de mejores prácticas... }, "technologies": [ { "name": "React", "version": "18.2.0", "category": "JavaScript Framework" }, // Otras tecnologías detectadas... ], "resources": { "total": 45, "totalSize": 2500000, "byType": { "image": { "count": 15, "size": 1200000 }, "script": { "count": 12, "size": 800000 } // Otros tipos de recursos... }, "largest": [ { "url": "https://ejemplo.com/imagen.jpg", "type": "image", "size": 500000, "transferSize": 480000 } // Otros recursos grandes... ] }, "recommendations": [ { "category": "performance", "priority": "alta", "issue": "Imágenes sin optimizar", "recommendation": "Optimizar y comprimir imágenes para reducir su tamaño", "impact": "Mejora significativa en el tiempo de carga" }, // Otras recomendaciones... ], "timestamp": "2023-06-15T14:30:00Z", "analyzedBy": "AI Site Analyzer v1.0", "analysisVersion": "1.0.0", "processingTime": 12345, "errors": [ { "code": "RESOURCE_LOAD_ERROR", "message": "No se pudo cargar un recurso", "details": "https://ejemplo.com/script.js", "recoverable": true } // Otros errores no críticos... ], "completeness": 98 // Porcentaje de completitud del análisis (0-100) }

GET /api/site/analyze

Obtiene información sobre el servicio de análisis.

Respuesta

{ "service": "AI Site Analyzer", "version": "1.0.0", "status": "operational", "capabilities": [ "performance", "seo", "accessibility", "best-practices", "technology-detection" ], "limits": { "requestsPerDay": 100, "maxTimeout": 60000 } }

POST /api/site/analyze/structure

Realiza un análisis estructural del sitio web, enfocado en la estructura del DOM y la organización del contenido.

Parámetros de solicitud

{ "url": "https://ejemplo.com", // URL del sitio (obligatorio) "htmlContent": "<html>...</html>", // HTML de la página (opcional) "screenshot": "data:image/png;base64,...", // Captura de pantalla en Base64 (opcional) "options": { "timeout": 30000, // Tiempo máximo de espera en milisegundos "userAgent": "Mozilla/5.0...", // User Agent personalizado (opcional) "depth": 2, // Profundidad del análisis (1-3) "includeScreenshot": true, // Incluir captura de pantalla en la respuesta "aiProvider": "openai", // Proveedor de IA: 'openai', 'anthropic', 'gemini' "aiModel": "gpt-5-nano" // Modelo específico de IA a utilizar } }

Respuesta

{ "url": "https://ejemplo.com", "structure": { "headings": { "h1": 1, "h2": 5, "h3": 12, "h4": 8 }, "sections": [ { "type": "header", "elements": 5, "importance": "high" }, { "type": "main-content", "elements": 25, "importance": "high" }, { "type": "sidebar", "elements": 10, "importance": "medium" }, { "type": "footer", "elements": 8, "importance": "low" } ], "navigation": { "mainMenu": { "items": 6, "depth": 2 }, "footer": { "items": 4, "depth": 1 } }, "contentBlocks": [ { "type": "hero", "elements": 3, "position": "top" }, { "type": "features", "elements": 12, "position": "middle" }, { "type": "testimonials", "elements": 6, "position": "middle-bottom" }, { "type": "contact", "elements": 5, "position": "bottom" } ] }, "analysis": { "clarity": 85, "hierarchy": 90, "consistency": 80, "userExperience": 88 }, "recommendations": [ { "category": "estructura", "priority": "media", "issue": "Jerarquía de encabezados inconsistente", "recommendation": "Asegurar que los encabezados sigan una jerarquía lógica", "impact": "Mejora en SEO y accesibilidad" } // Otras recomendaciones... ] }

Diferencias con la API Básica

Esta API avanzada (/api/site/analyze) difiere de la API básica (/api/analyze) en los siguientes aspectos:

  1. Implementación: Utiliza servicios especializados para diferentes tipos de análisis, mientras que la API básica usa la función analyzeSiteAction.
  2. Opciones: Permite configurar múltiples opciones avanzadas como tipo de análisis, profundidad, timeout, proveedor de IA, etc. La API básica tiene opciones limitadas.
  3. Respuesta: Devuelve una estructura de respuesta más detallada con metadatos adicionales.
  4. Manejo de errores: Implementa un sistema de manejo de errores más sofisticado con tipos de errores específicos.

Nota: Si necesitas una implementación más simple para casos de uso básicos, puedes utilizar la API básica /api/analyze. Para más información, consulta la documentación de la API Básica de Análisis.

Códigos de estado

  • 200 OK: La solicitud se completó correctamente
  • 400 Bad Request: Parámetros de solicitud inválidos
  • 404 Not Found: El recurso solicitado no existe
  • 429 Too Many Requests: Se ha excedido el límite de solicitudes
  • 500 Internal Server Error: Error en el servidor durante el análisis
  • 504 Gateway Timeout: Tiempo de espera agotado durante el análisis

Ejemplos de uso

Realizar un análisis completo

const response = await fetch('https://tudominio.com/api/site/analyze', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ url: 'https://ejemplo.com', options: { analysisType: 'complete', timeout: 45000, includeScreenshot: true, aiProvider: 'openai', aiModel: 'gpt-5-nano' } }) }); const data = await response.json(); console.log(data.performance.overall); // Puntuación de rendimiento console.log(data.recommendations); // Recomendaciones de mejora

Realizar un análisis estructural

const response = await fetch('https://tudominio.com/api/site/analyze/structure', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ url: 'https://ejemplo.com', options: { depth: 3, aiProvider: 'anthropic', aiModel: 'claude-3-5-sonnet-20240620' } }) }); const data = await response.json(); console.log(data.structure); // Estructura del sitio console.log(data.analysis); // Análisis de la estructura
Last updated on