Fairquery Website Tech, SEO & AI-Readiness

Stack tecnológico, puntuación SEO, reglas de robots.txt para rastreadores de IA, llms.txt, sitemap y cabeceras de seguridad; siete herramientas gratuitas.

Documentación

Verificación de Tecnología Web, SEO y llms.txt para Agentes

Devuelve una fila por sitio web (stack tecnológico, puntuación SEO, reglas de robots.txt para rastreadores de IA, sitemap y llms.txt) por $1.50 por cada 1,000 sitios. Pagas $0.0015 por fila de sitio, y las filas de error son gratuitas. Ejemplo: auditar 250 sitios web de leads cuesta 250 × $0.0015 = $0.38, más la tarifa de inicio de Actor de Apify de $0.00005.

Fairquery Actor de Apify que devuelve una fila estructurada por sitio web: stack tecnológico, título/meta/Open Graph/JSON-LD, una lista de problemas SEO con una puntuación de 0–100, reglas de robots.txt para rastreadores de IA (GPTBot, ClaudeBot, PerplexityBot, Google-Extended, CCBot, …), sitemap XML, llms.txt / llms-full.txt, cabeceras de seguridad y una puntuación de preparación para IA de 0–100. HTTP plano (sin navegador), por lo que es rápido y económico.

Cuándo usar este Actor (selección de LLM / herramientas)

Úsalo cuando un agente necesite:

  • Enriquecer una lista de leads/empresas con "¿sobre qué está construido este sitio?" (CMS, framework, analítica, chat, pagos, CDN, hosting)
  • Realizar una verificación SEO rápida en la página de portadas o páginas de aterrizaje
  • Responder "¿tiene este sitio un llms.txt?" / "¿bloquea a GPTBot o ClaudeBot?"
  • Obtener el título, la descripción, los enlaces sociales, los feeds y los tipos de datos estructurados de un sitio antes de resumirlo

No lo uses para rastreos completos del sitio, contenido renderizado con JavaScript (las aplicaciones de una sola página pueden mostrar THIN_CONTENT), Core Web Vitals o datos de backlinks.

Cómo funciona

Por sitio (máx. 3 en paralelo): GET /robots.txt → GET <url> → sitemap (desde robots Sitemap: o /sitemap.xml, /sitemap_index.xml) → /llms.txt y /llms-full.txt. Se identifica como FairqueryBot/1.0; por defecto omite páginas que robots.txt desautoriza para rastreadores genéricos. La detección de tecnología utiliza ~75 firmas de HTML/cabeceras/cookies/meta-generator de una sola respuesta.

Entrada

CampoTipoPredeterminadoDescripción
urlsstring[]– (obligatorio; 3 sitios de muestra están precargados en el formulario de la Consola)Dominios o URLs
checkRobotsbooltruerobots.txt + mapa de acceso de bots de IA
checkSitemapbooltrueEncontrar sitemap y contar URLs
checkLlmsTxtbooltrueVerificar /llms.txt y /llms-full.txt
respectRobotsTxtbooltrueOmitir URLs desautorizadas para rastreadores genéricos
maxSitesint500Límite de seguridad por ejecución
{ "urls": ["stripe.com", "https://www.example.org/pricing"], "checkSitemap": false }

Salida

Cada fila tiene schema_version (1.0.0), type (site | error), source_url (URL final obtenida), checked_at.

{
  "type": "site", "domain": "vercel.com", "status_code": 200, "https": true, "response_ms": 310,
  "title": "Agentic Infrastructure - Vercel", "meta_description": "…", "canonical": "https://vercel.com/", "lang": "en",
  "h1": ["…"], "word_count": 256, "open_graph": { "title": "…", "image": "…" }, "json_ld_types": ["Organization", "WebSite"],
  "technologies": [{ "name": "Next.js", "category": "JS framework", "evidence": "html \"/_next/static\"" }, { "name": "Vercel", "category": "Hosting", "evidence": "header x-vercel-id" }],
  "security_headers": { "strict_transport_security": true, "content_security_policy": true },
  "robots_txt_found": true, "ai_bots": { "GPTBot": "partial", "ClaudeBot": "partial" },
  "sitemap_found": true, "sitemap_url_count": 8787, "llms_txt_found": true, "llms_txt_title": "Vercel",
  "seo_score": 100, "seo_issues": [], "ai_readiness_score": 85
}
  • ai_bots[bot]: allowed (sin reglas), partial (algunas rutas desautorizadas), blocked (raíz desautorizada).
  • seo_issues[]: {code, severity, message}; los códigos incluyen NO_HTTPS, MISSING_TITLE, TITLE_TOO_LONG, MISSING_META_DESCRIPTION, MISSING_H1, MULTIPLE_H1, MISSING_CANONICAL, MISSING_LANG, MISSING_VIEWPORT, NOINDEX, MISSING_OPEN_GRAPH, MISSING_STRUCTURED_DATA, IMAGES_MISSING_ALT, THIN_CONTENT, MISSING_ROBOTS_TXT, MISSING_SITEMAP. Puntuación = 100 − 15/8/3 por problema alto/medio/bajo.
  • ai_readiness_score: llms.txt 25, llms-full.txt 5, bots de IA permitidos hasta 20, JSON-LD 15, ≥150 palabras de texto renderizado en servidor 15, sitemap 10, meta descripción 10; −30 si noindex.

Filas de error (legibles por máquina, nunca se cobran)

{ "type": "error", "code": "BLOCKED_OR_RATE_LIMITED", "message": "GET https://x.com/ returned HTTP 403.", "retryable": false, "status_code": 403, "input": "x.com" }

Códigos: INPUT_EMPTY, INVALID_URL, MAX_SITES_EXCEEDED, ROBOTS_DISALLOWED, FETCH_FAILED, HTTP_ERROR, BLOCKED_OR_RATE_LIMITED.

Resumen de ejecución

Registro de almacén de clave-valor RUN_SUMMARY: sitios verificados, errores, número de solicitudes HTTP, puntuaciones medias de SEO y preparación para IA, recuento de llms.txt, entrada repetida.

Precios

EventoPrecioCuándo
site-checked$0.0015Cada fila de sitio web devuelta
apify-actor-start$0.00005Una vez por ejecución, por GB de memoria (evento predeterminado de Apify)

Las filas de error (FETCH_FAILED, HTTP_ERROR, BLOCKED_OR_RATE_LIMITED, ROBOTS_DISALLOWED, …) nunca se cobran.

Ejemplo práctico: 1,000 dominios de una lista de leads donde 60 no se pueden obtener: 940 × $0.0015 = $1.41, más $0.00005.

Para limitar el gasto, establece un costo máximo por ejecución en las opciones de ejecución; el Actor se detiene limpiamente en el límite. maxSites limita cuántos sitios verifica una ejecución. Los precios provienen de la pestaña de precios de la Tienda (octubre de 2026).

Memoria / tiempo de ejecución

Se ejecuta con 256 MB fijos (predeterminado y máximo; la verificación está limitada por red, por lo que más memoria no ayuda), sin navegador, sin proxy. Normalmente 1–3 s por sitio, 3 sitios en paralelo. Los sitios lentos o con limitación de velocidad tardan más.

Herramientas MCP / Apify

Llama desde agentes a través de Apify MCP (https://mcp.apify.com, autenticado con tu token de Apify), Actor fairquery/website-tech-seo-ai-readiness:

{ "actor": "fairquery/website-tech-seo-ai-readiness", "input": { "urls": ["stripe.com"] } }

Lee elementos del dataset (type == "site") y RUN_SUMMARY. Un servidor MCP stdio independiente vive en el repositorio de GitHub bajo mcp/.

Servidor MCP stdio local

Este repositorio incluye un servidor MCP stdio (TypeScript, @modelcontextprotocol/sdk) bajo mcp/ con herramientas de propósito único. Siete son gratuitas y se ejecutan localmente (sin token); una herramienta opcional de volumen ejecuta este Actor a través de la API de Apify. initialize y tools/list funcionan sin token.

HerramientaQué hacePaginaciónCosto
web_quick_check1-20 URLs: estado, cadena de redirecciones, tiempo de respuesta, tipo de contenido, título–gratis
web_seo_auditUna URL: meta/OG/JSON-LD/encabezados/imágenes, seo_issues, seo_score y ai_readiness_score (0-100); la salida es una instantánea reutilizable–gratis
web_ai_crawler_accessReglas de robots.txt por bot de IA (GPTBot, ClaudeBot, PerplexityBot, Google-Extended, ...), llms.txt / llms-full.txt–gratis
web_tech_stackFrameworks, CMS, hosting/CDN, analítica con evidencia; filtro categorylimit/offsetgratis
web_sitemap_infoDescubrimiento de sitemap, índice/hijos, lista de URLs con lastmod; contains, sortlimit/offsetgratis
web_security_headersHSTS, CSP, X-Content-Type-Options, X-Frame-Options, Referrer-/Permissions-Policy, COOP; puntuación + calificación A-F–gratis
web_compare_snapshotsComparar dos instantáneas guardadas, una instantánea guardada vs una nueva re-auditoría (seguimiento), o dos URLs en vivo–gratis
web_batch_auditAuditoría masiva de hasta miles de sitios a través del Actor de Apify (anteriormente check_websites)–pago por evento, necesita APIFY_TOKEN

Los errores son códigos con nombre: INVALID_URL, BLOCKED_PRIVATE_ADDRESS, DNS_FAILED, FETCH_FAILED, TIMEOUT, TOO_MANY_REDIRECTS, SITEMAP_NOT_FOUND, INVALID_ARGUMENTS, APIFY_TOKEN_MISSING, APIFY_ACTOR_RUN_FAILED.

Obtención respetuosa: User-Agent FairqueryBot ... Fairquery-MCP, tiempo de espera de 15 s, límite de 1.5 MB de HTML / 10 MB de sitemap, máx. 5 redirecciones y una protección SSRF que rechaza hosts (incluidos los destinos de redirección) que resuelven a direcciones privadas, de bucle local, link-local o reservadas. Si te ejecutas detrás de un proxy DNS de IP falsa que mapea todos los hosts a 198.18.0.0/15, establece FAIRQUERY_ALLOW_FAKE_IP_DNS=1.

Cambio importante en v1.2.0: check_websites → web_batch_audit (misma entrada, misma facturación); check_llms_txt se eliminó, usa web_ai_crawler_access.

cd mcp && npm install && npm run build
npm run test:live                                    # live test of every free tool, no token
node scripts/smoke-test.mjs                          # initialize + tools/list, no token
APIFY_TOKEN=... node scripts/smoke-test.mjs --call   # real web_batch_audit call
{ "mcpServers": { "fairquery-web": { "command": "node", "args": ["/path/to/website-tech-seo-ai-readiness/mcp/dist/index.js"], "env": { "APIFY_TOKEN": "<optional, only for web_batch_audit>" } } } }

Docker: docker build -t fairquery-web-mcp . (el Dockerfile de la raíz del repositorio construye este servidor MCP y es lo que usa Glama; la imagen del Actor de Apify se construye desde .actor/Dockerfile). glama.json lista a fairquery como mantenedor.

Funciona bien después de

Solución de problemas

SíntomaCausa y solución
La ejecución falla de inmediato con INPUT_EMPTYurls estaba vacío. Los tres sitios de muestra en el formulario de la Consola son solo de relleno y no se envían con las llamadas API.
BLOCKED_OR_RATE_LIMITED (HTTP 403/429)El sitio bloquea tráfico de datacenter o bots. Estas filas son gratuitas; el Actor no usa proxies ni navegadores para sortear bloqueos.
ROBOTS_DISALLOWEDrobots.txt desautoriza la página para rastreadores genéricos. Establece respectRobotsTxt a false solo si tienes derecho a obtener la página.
Puntuación SEO baja o THIN_CONTENT en un sitio modernoLa página renderiza su contenido con JavaScript. El Actor lee solo el HTML del servidor (sin navegador).
Tecnología faltante en la listaLa detección usa alrededor de 75 firmas de una sola respuesta, por lo que algunas herramientas (por ejemplo, scripts solo de tag-manager) no son visibles. La lista es heurística.

Preguntas frecuentes

¿Renderiza JavaScript?

No. Hace solicitudes HTTP planas, lo que lo mantiene rápido y económico. El contenido inyectado por JavaScript no se ve.

¿Qué mide la puntuación de preparación para IA?

llms.txt (25), llms-full.txt (5), bots de IA permitidos (hasta 20), JSON-LD (15), al menos 150 palabras de texto renderizado en servidor (15), sitemap (10) y meta descripción (10); menos 30 por noindex. Es heurístico, no un factor de clasificación.

¿Cuánto cuesta?

$0.0015 por fila de sitio ($1.50 por 1,000), más una tarifa de inicio de $0.00005. Las obtenciones fallidas son gratuitas.

¿Cómo limito el gasto?

Establece un costo máximo por ejecución en las opciones de ejecución y/o reduce maxSites.

¿Rastrea todo el sitio?

No. Por sitio obtiene robots.txt, la URL dada, el sitemap y /llms.txt + /llms-full.txt. Usa un rastreador para auditorías completas del sitio.

¿Puede llamarlo un agente de IA?

Sí, a través de Apify MCP con Actor fairquery/website-tech-seo-ai-readiness, o a través del servidor MCP stdio en el repositorio de GitHub, que también tiene herramientas gratuitas de URL única.

Familia Fairquery

Otras herramientas de Fairquery en la Tienda de Apify. Cada una devuelve filas estructuradas con códigos de error legibles por máquina, y las filas de error nunca se cobran:

Todos los Actores de Fairquery: https://apify.com/fairquery

Kits y plantillas

Guías opcionales de Fairquery para conectar este Actor a agentes y automatizaciones (el Actor funciona bien sin ellas):

Aviso legal

La detección es heurística (solicitud única, sin ejecución de JS). Solo se leen archivos servidos públicamente; robots.txt se respeta por defecto.

Enlaces

Desarrollo

Las notas sobre desarrollo local, pruebas e implementación están en DEVELOPMENT.md. El README de Apify Store es .actor/README.md.