¡OFERTA POR TIEMPO LIMITADO|20% DE DESCUENTO en Seedance 2.0 y 2.0 Mini!

Cómo convertir sitios web a JSON listo para LLM con AnyCrawl

Aprende a autohospedar AnyCrawl con Docker, configurar Atlas Cloud como fuente de API de modelos y extraer páginas web a formato Markdown y JSON estructurado para aplicaciones de IA.

Cómo convertir sitios web a JSON listo para LLM con AnyCrawl

AnyCrawl te ayuda a convertir páginas web desordenadas en Markdown o JSON limpio para aplicaciones de LLM. Este tutorial muestra cómo emparejar AnyCrawl con Atlas Cloud como fuente de API de modelos, extraer datos de una página de proyecto, obtener campos estructurados y luego escalar el mismo patrón para flujos de trabajo de rastreo (crawl) y búsqueda (search).

La mayoría de los tutoriales de web scraping terminan en "descargar el HTML". Para las aplicaciones de IA, ahí es donde empieza el trabajo real. Las páginas sin procesar incluyen encabezados, pies de página, barras laterales, banners de cookies, enlaces repetidos y contenido renderizado por JavaScript. Lo que tu modelo realmente necesita es una interfaz de datos estable: texto limpio cuando buscas contexto y JSON tipado cuando necesitas campos específicos.

Ese es el modelo mental útil para AnyCrawl. Es un crawler y scraper de Node.js / TypeScript diseñado para convertir sitios web en datos listos para LLM, con soporte para scraping de una sola página, rastreo de sitios, recolección de SERP, cargas de trabajo multihilo/multiproceso y extracción de JSON impulsada por IA.

Lo que vamos a construir

Crearemos un pequeño "extractor de investigación de proyectos".

Entrada:

plaintext
1La URL de una página pública de un proyecto o documentación

Salida:

plaintext
1{
2  "project_name": "AnyCrawl",
3  "one_sentence_summary": "...",
4  "core_features": ["..."],
5  "best_for": ["..."],
6  "input_types": ["url", "search query"],
7  "output_formats": ["markdown", "json"],
8  "evidence_urls": ["..."]
9}

La demostración utiliza tres características de AnyCrawl:

td {white-space:nowrap;border:0.5pt solid #dee0e3;font-size:10pt;font-style:normal;font-weight:normal;vertical-align:middle;word-break:normal;word-wrap:normal;}

   
NecesidadCaracterísticaPor qué importa
Extraer una página/v1/scrapeEl mejor punto de partida para convertir una URL a Markdown o JSON
Extraer muchas/v1/crawlÚtil para sitios de docs, páginas de productos, blogs y ayuda
Encontrar páginas/v1/searchÚtil cuando necesitas resultados de SERP antes de scrapear URLs
Forzar campos establesModo JSONÚtil cuando tu app requiere salida tipada, no solo texto plano

La API de Scrape de AnyCrawl convierte una URL en datos estructurados listos para LLM y puede devolver Markdown, HTML, texto, capturas de pantalla, HTML crudo, JSON, resúmenes y enlaces. Los documentos describen Scrape como sincrónico, por lo que no necesitas un bucle de sondeo (polling) para una sola página.

Paso a paso: Ejecutar AnyCrawl con Atlas Cloud y extraer páginas web a JSON

En este tutorial, autoalojaremos AnyCrawl con Docker, estableceremos a Atlas Cloud como el proveedor de API de modelos para la extracción y luego llamaremos al servidor local de AnyCrawl para convertir una página web en JSON estructurado.

Nota: Este tutorial está escrito para entornos de terminal en macOS y Linux.

Paso 1: Crear una carpeta de proyecto limpia

Abre tu terminal y crea una pequeña carpeta para esta demo.

plaintext
1mkdir anycrawl-atlas-demo
2cd anycrawl-atlas-demo

Esta carpeta solo contendrá el archivo de entorno y el cuerpo de la solicitud que usaremos para probar la API.

Paso 2: Obtener una clave de API de Atlas Cloud

Ve a la consola de Atlas Cloud, abre la página de API Keys, haz clic en Create API Key, luego copia y guarda la clave de forma segura. Atlas Cloud indica que la clave solo se muestra una vez, así que guárdala en un lugar seguro al crearla.

Atlas Cloud

Mantén la clave privada. No la pegues en un repositorio público de GitHub, borradores de artículos públicos o capturas de pantalla.

Paso 3: Crear el archivo .env

Crea un archivo .env en la carpeta actual:

plaintext
1cat > .env <<'EOF'
2NODE_ENV=production
3ANYCRAWL_API_PORT=8080
4ANYCRAWL_HEADLESS=true
5ANYCRAWL_API_AUTH_ENABLED=false
6
7ATLASCLOUD_BASE_URL=https://api.atlascloud.ai/v1
8ATLASCLOUD_API_KEY=TU_CLAVE_DE_ATLASCLOUD
9DEFAULT_LLM_MODEL=atlascloud/deepseek-v4
10DEFAULT_EXTRACT_MODEL=atlascloud/deepseek-v4
11EOF

Reemplaza TU_CLAVE_DE_ATLASCLOUD con tu clave real.

Este es el lugar correcto para configurar el proveedor del modelo. La solicitud de scraping en sí misma debe centrarse en la URL, el formato de salida y el esquema JSON. El enrutamiento del modelo pertenece al entorno del servidor AnyCrawl, ya que AnyCrawl es el servicio que ejecuta el paso de extracción potenciado por LLM.

Paso 4: Iniciar AnyCrawl con Docker

Nota: En macOS, asegúrate de que Docker Desktop esté instalado y ejecutándose antes de iniciar AnyCrawl. Para Macs con Apple Silicon, usa auto o playwright en lugar de puppeteer a menos que ejecutes explícitamente la imagen amd64.

Ejecuta el contenedor todo en uno de AnyCrawl y monta el archivo .env en él.

plaintext
1docker run -d \
2  --name anycrawl-atlas-demo \
3  -p 8080:8080 \
4  -v "$(pwd)/.env:/usr/src/app/.env:ro" \
5  ghcr.io/any4ai/anycrawl:latest

Verifica si el servicio se está ejecutando:

plaintext
1curl http://localhost:8080/health

Los documentos de Docker usan el puerto 8080 para despliegue local y muestran /health como el endpoint de verificación.

Paso 5: Probar primero una solicitud de scrape básica

Antes de pedir JSON, prueba si AnyCrawl puede leer una página y devolver Markdown.

plaintext
1curl -X POST "http://localhost:8080/v1/scrape" \
2  -H "Content-Type: application/json" \
3  -d '{
4    "url": "https://github.com/any4ai/AnyCrawl",
5    "engine": "auto",
6    "formats": ["markdown"],
7    "only_main_content": true
8  }'

La API de Scrape de AnyCrawl convierte una URL en datos estructurados listos para LLM. Admite motores como auto, cheerio, playwright y puppeteer, y formatos de salida que incluyen markdown, html, text, json, summary y links.

Para esta primera solicitud, markdown es suficiente. Estás verificando si el contenido de la página es visible antes de pedirle al modelo que extraiga campos estructurados.

Paso 6: Crear la solicitud de extracción JSON

Ahora crea un cuerpo de solicitud que le pida a AnyCrawl que extraiga un perfil de proyecto estructurado.

plaintext
1cat > scrape-project.json <<'EOF'
2{
3  "url": "https://github.com/any4ai/AnyCrawl",
4  "engine": "auto",
5  "formats": ["markdown", "json"],
6  "only_main_content": true,
7  "extract_source": "markdown",
8  "json_options": {
9    "schema_name": "open_source_project_profile",
10    "schema_description": "Un perfil estructurado de un proyecto de código abierto basado solo en el contenido visible de la página.",
11    "schema": {
12      "type": "object",
13      "properties": {
14        "project_name": {
15          "type": "string"
16        },
17        "one_sentence_summary": {
18          "type": "string"
19        },
20        "core_features": {
21          "type": "array",
22          "items": {
23            "type": "string"
24          }
25        },
26        "best_for": {
27          "type": "array",
28          "items": {
29            "type": "string"
30          }
31        },
32        "supported_tasks": {
33          "type": "array",
34          "items": {
35            "type": "string"
36          }
37        },
38        "developer_setup_notes": {
39          "type": "array",
40          "items": {
41            "type": "string"
42          }
43        }
44      },
45      "required": [
46        "project_name",
47        "one_sentence_summary",
48        "core_features"
49      ]
50    },
51    "user_prompt": "Extrae solo hechos visibles en la página. No adivines. Resume el proyecto para un desarrollador que quiere usar datos web en una aplicación de IA."
52  }
53}
54EOF

Hay un error común aquí: al usar json_options, debes incluir "json" en formats; de lo contrario, la respuesta no contendrá los datos JSON extraídos. El modo JSON de AnyCrawl admite extracción solo por prompt, solo por esquema, o ambos. En este tutorial, usamos prompt más esquema porque permite control de campos y guía de extracción.

Paso 7: Ejecutar la extracción JSON

Envía la solicitud a tu servidor local de AnyCrawl:

plaintext
1curl -X POST "http://localhost:8080/v1/scrape" \
2  -H "Content-Type: application/json" \
3  -d @scrape-project.json

Si todo está configurado correctamente, la respuesta debería incluir un resultado de scrape exitoso y un resultado de extracción JSON siguiendo el esquema que definiste.

En este punto, el flujo está completo:

plaintext
1Página de proyecto de GitHub
2→ API de scrape local de AnyCrawl
3→ Extracción de Markdown
4→ Extracción de JSON con LLM
5→ Perfil de proyecto estructurado

Lo importante es que la solicitud nunca llama directamente al proveedor del modelo. AnyCrawl maneja el flujo de trabajo de scraping y extracción, mientras que la fuente de la API del modelo ya está configurada a nivel de servidor.

Paso 8: Probar una página cargada de JavaScript si el Markdown parece vacío

Si el resultado en Markdown es demasiado corto, está vacío o falta contenido visible, cambia el motor a playwright.

plaintext
1{
2  "url": "https://example.com",
3  "engine": "playwright",
4  "formats": ["markdown", "json"],
5  "only_main_content": true,
6  "json_options": {
7    "user_prompt": "Extrae el tema principal, hechos clave y enlaces importantes de esta página."
8  }
9}

Los documentos de AnyCrawl describen cheerio como rápido para HTML estático, playwright como mejor para páginas renderizadas con JavaScript y auto como la opción de propósito general que puede elegir el motor automáticamente.

Paso 9: Detener y limpiar el contenedor de demostración

Cuando termines de probar, detén el contenedor:

plaintext
1docker stop anycrawl-atlas-demo
2docker rm anycrawl-atlas-demo

Puedes reiniciar el mismo flujo de trabajo más tarde ejecutando el comando de Docker nuevamente desde la carpeta que contiene tu archivo .env.

Lo que acabas de construir

Ahora tienes un servicio local de AnyCrawl que puede scrapear una página web pública, limpiarla a Markdown y extraer JSON tipado a través de un flujo de LLM guiado por esquema. La configuración mantiene el crawler, el modelo de extracción y la salida de la aplicación en el orden correcto: página web primero, contenido estructurado después, integración en la app al final.

Preguntas frecuentes

¿Para qué se usa AnyCrawl?

AnyCrawl se usa para convertir páginas web, sitios web y resultados de búsqueda en datos listos para LLM, como Markdown y JSON estructurado. Admite scraping de una sola página, rastreo de sitios completos, recolección de SERP y extracción de JSON con LLM, lo que lo hace útil para aplicaciones de RAG, agentes de IA, herramientas de investigación y pipelines de datos internos.

¿Cómo extraigo JSON de una página web con AnyCrawl?

Usa /v1/scrape, incluye "json" en formats y pasa json_options con un prompt, esquema, o ambos. La documentación del modo JSON de AnyCrawl señala específicamente que si usas json_options pero olvidas incluir "json" en formats, la respuesta no contendrá datos JSON extraídos.

¿Cómo uso Atlas Cloud con AnyCrawl?

Usa Atlas Cloud como el proveedor de LLM compatible con OpenAI en el entorno del servidor de AnyCrawl, no dentro de cada solicitud de scrape. Los documentos de Atlas Cloud describen su endpoint de LLM como compatible con OpenAI con la URL base https://api.atlascloud.ai/v1, mientras que la configuración de proveedor de AnyCrawl usa variables de entorno como ATLASCLOUD_BASE_URL, ATLASCLOUD_API_KEY y configuraciones del modelo de extracción por defecto.

¿Puede AnyCrawl rastrear un sitio web completo?

Sí, AnyCrawl puede rastrear un sitio web a través de /v1/crawl, lo que crea un trabajo de rastreo asíncrono. La API de Crawl te permite controlar el alcance con opciones como max_depth, limit, include_paths y exclude_paths, luego sondear el trabajo de rastreo y obtener resultados paginados.

¿Puede AnyCrawl scrapear resultados de búsqueda de Google?

Sí, AnyCrawl incluye una API de búsqueda (Search API) para recolectar resultados de SERP estructurados antes de scrapear las URLs seleccionadas. Su API de búsqueda admite parámetros como query, pages, limit, lang, country y timeRange, lo que la hace útil cuando tu flujo de IA comienza con una consulta de investigación en lugar de una URL conocida.

¿Es AnyCrawl mejor que Firecrawl o Crawl4AI?

No universalmente; depende de tus necesidades de despliegue y flujo de trabajo. AnyCrawl encaja bien en este tutorial porque buscamos un servicio de Docker local, configuración de proveedor de modelos a nivel de servidor y un flujo de /v1/scrape a JSON simple, mientras que Firecrawl y Crawl4AI tienen fortalezas en extracción gestionada y rastreo programable, respectivamente.

¿Debo usar Cheerio, Playwright o Puppeteer en AnyCrawl?

Comienza con auto o cheerio, y cambia a playwright cuando la página necesite renderizado de JavaScript. La documentación de scrape de AnyCrawl posiciona a Cheerio como ligero para HTML estático y a Playwright/Puppeteer como motores basados en navegador para páginas más complejas; el flujo práctico es inspeccionar el Markdown primero y solo usar un motor más pesado cuando sea necesario.

¿Por qué falta mi salida JSON de AnyCrawl?

La razón más común es que no se incluyó "json" en formats. Otra causa común es que el motor seleccionado no capturó el contenido correctamente, especialmente en sitios renderizados con JavaScript; en ese caso, vuelve a intentar con auto o playwright y verifica el Markdown antes de depurar el esquema.

¿Puedo usar AnyCrawl para pipelines de datos RAG?

Sí, AnyCrawl es una opción práctica para la preparación de datos RAG porque puede convertir páginas web en Markdown y JSON guiado por esquema antes de que el contenido entre en tu base de datos vectorial o sistema de conocimiento. Un buen patrón de producción es scrapear primero, validar los campos extraídos, almacenar la URL de origen y mantener suficiente Markdown para depuración.

¿Cuál es el flujo de trabajo de AnyCrawl más fácil para principiantes?

El flujo más fácil es: scrapear una URL, solicitar Markdown, confirmar que el contenido se ve bien, agregar el modo JSON, validar la salida y solo entonces avanzar a crawl o search. Esto evita mezclar problemas de acceso a páginas, problemas de renderizado y problemas de esquema de extracción en una sola solicitud difícil de depurar.

Conclusión

AnyCrawl es útil porque trata a las páginas web como entradas para sistemas de IA, no solo como documentos HTML para descargar. Comienza con una página, inspecciona el Markdown, agrega un esquema, valida el JSON y solo entonces escala a rastreo o búsqueda.

Ese orden mantiene el flujo de trabajo simple. También mantiene los puntos de falla visibles, que es lo que buscas cuando los datos web se convierten en parte de una aplicación de IA.

Modelos recientes

Una sola API para toda la IA multimedia.

Explorar Todos los Modelos

Join our Discord community

Join the Discord community for the latest model updates, prompts, and support.

Tutorial de AnyCrawl: Convierte sitios web en JSON listo para LLM