AX
El Toolkit de Agent Experience
Tres herramientas open source que trabajan juntas para preparar tu sitio web para agentes IA. ax-audit te dice qué falta. ax-init lo genera. ax-cite hace tu contenido extraíble.
ax-audit
v3.0.0Lighthouse para Agentes IA
Auditá la preparación de cualquier sitio web para la experiencia de agentes IA (AX) en segundos. ax-audit ejecuta 14 verificaciones ponderadas — llms.txt, robots.txt, renderizado HTML, datos estructurados, headers HTTP, Agent Card, MCP, SEO básico, security.txt, meta tags, OpenAPI, TLS / HTTPS, sitemap y archivos AI well-known emergentes — y produce un puntaje único de 0 a 100 con hallazgos accionables. Soporta comparación con baseline, auditorías batch y reportes HTML.
- 14 verificaciones ponderadas: llms.txt, robots.txt, renderizado HTML, datos estructurados, headers HTTP, Agent Card, MCP, SEO básico, security.txt, meta tags, OpenAPI, TLS / HTTPS, sitemap, y archivos AI well-known emergentes
- Auditoría batch de múltiples URLs en una sola ejecución con resumen agregado
- Formatos de salida: terminal, JSON y reporte HTML autocontenido
- Listo para CI/CD: aplicá umbrales de score AX en cada deploy con GitHub Actions o GitLab CI
- API programática: importá como librería para integraciones y workflows de automatización
- TypeScript, 2 dependencias runtime, 198 tests, Node.js 18+, Apache 2.0
$ npx ax-audit https://your-site.comax-init
v1.4.0Generá archivos AX para tu sitio
CLI interactivo que genera los 10 tipos de archivos AX que tu sitio necesita — a través de un prompt interactivo o automatizado desde un escaneo de URL. Soporta archivos de configuración para pipelines CI/CD.
- Genera 10 tipos de archivo AX: llms.txt, robots.txt, agent.json, mcp.json, security.txt, openapi.yaml, JSON-LD, meta tags y headers HTTP
- Modo auto-detect: escaneá una URL, descubrí archivos existentes y pre-completá prompts con metadata detectada
- Soporte de archivo config: guardá respuestas en ax.json para ejecuciones no-interactivas repetibles en CI/CD
- Modo update: regenerá desde config, compará con archivos existentes, solo escribí lo que realmente cambió
- Preview dry-run: mirá exactamente qué se generaría sin escribir ningún archivo
$ npx ax-init --from https://your-site.comax-cite
v1.0.0Bloques de citación extraíbles por IA
Web component ultra-liviano que renderiza bloques de citación semánticos con atributos data-* que los crawlers de IA pueden parsear. Funciona con React, Vue, HTML y cualquier framework. ~2.8 KB gzipped.
- 10 tipos de citación: producto, artículo, servicio, evento, organización, persona, lugar, reseña, FAQ y genérico
- Genera JSON-LD automáticamente con el atributo jsonld — compatible con schema.org
- Modo oculto: embebe datos legibles por máquina invisibles para usuarios, visibles para crawlers IA
- API programática: toJSON(), extractAll() y eventos ax-cite:render
- Cero dependencias, ~2.8 KB gzipped, Custom Element vanilla, TypeScript strict, ESM-only
<ax-cite type="product" name="Espresso Machine"
price="USD 239" in-stock="true" jsonld
summary="Available at USD 239. Ships free.">
</ax-cite>Qué verifica
LLMs.txt
/llms.txt presence, llmstxt.org spec, and Content-Type
- /llms.txt file exists and returns 200
- Content-Type is text/plain or text/markdown
- H1, blockquote, sections, and links per spec
- /llms-full.txt extended version (bonus)
Robots.txt
AI crawler configuration (47 known bots)
- 8 core AI crawlers explicitly configured
- 47 known AI crawlers can be allow-listed
- Sitemap directive present
- No wildcard Disallow blocking AI bots
HTML Rendering
Server-rendered content for AI crawlers without JS
- Visible text + word count thresholds
- No empty SPA mount points (#root, #__next, …)
- Semantic landmarks (main, article, header, …)
- Single <h1>, alt coverage, noscript fallback
Structured Data
JSON-LD on homepage (schema.org, @graph, entity types)
- JSON-LD <script> in <head>
- @context set to schema.org
- @graph array with multiple entities
- Person / Organization / WebSite / WebPage
HTTP Headers
Security headers + AI discovery Link headers + CORS
- HSTS, X-Content-Type-Options, CSP, Referrer-Policy
- Link: </llms.txt>; rel="alternate"
- CORS Access-Control-Allow-Origin on .well-known
- X-Robots-Tag noindex on /llms.txt (bonus)
Agent Card
A2A + same-origin url + skill quality
- /.well-known/agent.json + Content-Type
- Required fields (name, description, url, skills)
- url is absolute and matches site origin
- Every skill has id + description
MCP
/.well-known/mcp.json Model Context Protocol server config
- /.well-known/mcp.json + Content-Type
- Valid JSON with server metadata
- Tools array with descriptions
- CORS + protocol version
SEO Basics
title / description / canonical / lang / charset / hreflang
- <title> length 20–70 chars
- Meta description 70–160 chars
- Single absolute <link rel="canonical">
- <html lang>, charset, viewport, hreflang
Security.txt
/.well-known/security.txt RFC 9116 compliance
- /.well-known/security.txt exists
- Contact field (required by RFC 9116)
- Expires field with valid future date
- Canonical, Preferred-Languages, Policy
Meta Tags
AI meta tags + OpenGraph + Twitter Card completeness
- ai:summary / ai:content_type / ai:author / …
- rel="alternate" to llms.txt and agent.json
- rel="me" identity links
- Full OpenGraph (title/description/url/type/image)
- Twitter Card (card/title/description/image)
OpenAPI
/.well-known/openapi.json presence + schema + Content-Type
- /.well-known/openapi.json + Content-Type
- OpenAPI 3.x version field
- info.title + info.description
- Paths and servers documented
TLS / HTTPS
HTTPS, HTTP→HTTPS redirect, HSTS preload eligibility
- Site served over HTTPS
- HTTP requests redirect to HTTPS
- HSTS max-age ≥ 1 year
- includeSubDomains + preload directive
Sitemap
sitemap.xml validation, freshness, sitemap-index handling
- Located via robots.txt or /sitemap.xml
- Valid XML, correct Content-Type
- <lastmod> coverage and freshness
- Sitemap-index children reachable
AI Well-Known
Emerging AI discovery files (5 probes)
- /.well-known/ai.txt (Spawning)
- /.well-known/genai.txt
- /ai-plugin.json (legacy ChatGPT)
- /agents.json (Wildcard / OpenAgents)
- /.well-known/nlweb.json (Microsoft NLWeb)
Guías de Remediación
Instrucciones paso a paso para corregir cada hallazgo de ax-audit.
Ver Guías de Remediación →Inicio Rápido
$ npx ax-audit https://your-site.comEjemplo de Salida
Salida JSON
Usá el flag --json para obtener una salida legible por máquina para integración programática.
{
"url": "https://lucioduran.com",
"overallScore": 88,
"grade": { "label": "Good", "color": "yellow", "min": 70 },
"timestamp": "2026-04-30T12:00:00.000Z",
"duration": 807,
"results": [
{
"id": "llms-txt",
"name": "LLMs.txt",
"score": 100,
"findings": [
{ "status": "pass", "message": "/llms.txt exists" },
{ "status": "pass", "message": "Content-Type OK (text/plain)" },
{ "status": "pass", "message": "/llms-full.txt available" }
]
},
{
"id": "robots-txt",
"name": "Robots.txt",
"score": 100,
"findings": [
{ "status": "pass", "message": "8 core AI crawlers configured" },
{ "status": "pass", "message": "32/47 known crawlers have rules" }
]
},
{
"id": "html-rendering",
"name": "HTML Rendering",
"score": 90,
"findings": [
{ "status": "pass", "message": "Server-rendered content (473 words)" },
{ "status": "warn", "message": "Low text-to-markup ratio (2.4%)" }
]
},
{
"id": "tls-https",
"name": "TLS / HTTPS",
"score": 100,
"findings": [
{ "status": "pass", "message": "HSTS preload-eligible" }
]
}
]
}Referencia CLI
Todos los flags y opciones de línea de comandos disponibles.
--jsonOutput results as JSON to stdout--output <format>Output format: terminal, json, html--checks <ids>Run only specified checks (comma-separated IDs)--timeout <ms>HTTP request timeout in milliseconds (default: 10000)--verboseShow detailed request and check execution logs--only-failuresOnly show checks/findings with failures or warnings--save-baseline <path>Save the current audit as a baseline JSON file--baseline <path>Compare against a previous baseline (per-check deltas)--fail-on-regression <n>Exit with code 1 if any check regresses by more than n points--help, -hShow help information--version, -vPrint version number and exitUso Programático
Importá ax-audit como librería para integraciones y flujos de automatización personalizados.
import { audit, batchAudit } from 'ax-audit';
// Single URL
const result = await audit({
url: 'https://your-site.com',
checks: ['llms-txt', 'robots-txt', 'structured-data'],
timeout: 15000,
});
console.log(result.overallScore); // 98
console.log(result.grade.label); // "Excellent"
for (const check of result.results) {
console.log(`${check.name}: ${check.score}/100`);
}
// Batch audit
const batch = await batchAudit(
['https://site-a.com', 'https://site-b.com'],
{ timeout: 10000 }
);
console.log(batch.summary.averageScore);Puntuación
Integración CI/CD
Agregá ax-audit a tu pipeline para garantizar estándares de preparación IA en cada deploy.
name: AX Audit
on: [push]
jobs:
ax-audit:
runs-on: ubuntu-latest
steps:
- name: Run AX Audit
run: npx ax-audit ${{ secrets.SITE_URL }} --json > report.json
- name: Check score threshold
run: |
SCORE=$(jq .overallScore report.json)
echo "AX Score: $SCORE/100"
[ "$SCORE" -ge 70 ] || exit 1Qué genera ax-init
llms.txtLLM-readable site descriptionllms-full.txtExtended inline sectionsrobots.txtAI crawler rules (47 bots)agent.jsonA2A Agent Cardmcp.jsonMCP server configsecurity.txtRFC 9116 security contactopenapi.yamlAPI specification stubsitemap.xmlXML sitemap with lastmodJSON-LDStructured data for <head>Meta TagsAI meta + OpenGraph + Twitter CardHTTP HeadersNginx / Apache / Vercel configHSTS preloadTLS / HTTPS hardening