# 📋 Documento del Proyecto — Website Craw CSS > ← [Anterior: 🕷️ Crawl4AI](./04-crawl4ai-ubuntu.md) | [Volver al índice](../README.md) --- ## 1. Iniciación | Campo | Detalle | |-------|---------| | **Objetivo** | Automatizar la extracción de productos desde páginas web mediante Crawl4AI, procesar los datos con n8n y exportarlos en formato usable (JSON/archivo) | | **Stakeholders** | Equipo de datos/marketing *(consumirá los resultados)*, equipo de IT *(mantendrá el flujo en n8n)* | | **Justificación** | Reducir esfuerzo manual en scraping, garantizar consistencia de datos y preparar pipeline para análisis en Google Sheets u otras herramientas | --- ## 2. Planificación ### Requerimientos técnicos - Servidor con n8n instalado (Ubuntu/Docker) - Conexión a Crawl4AI - Credenciales: `httpBasicAuth` y `httpHeaderAuth` - Acceso a Google Sheets (OAuth2 configurado) ### Alcance - Número de URLs a escanear: `Array.from({ length: 2 })` → 2 páginas por ahora, escalable - **Campos a extraer**: `link`, `título`, `rating` (conteo de estrellas), `descripción`, `precio`, `stock` ### Riesgos | Riesgo | Descripción | |--------|-------------| | 🔴 Bloqueo de IP | Crawling excesivo puede resultar en bloqueo por el sitio objetivo | | 🟡 Cambio en HTML | Si la estructura de la web cambia, los selectores CSS deben actualizarse | | 🟡 Fallos de credenciales | Acceso perdido a Crawl4AI o Google Sheets interrumpe el flujo | --- ## 3. Diseño y Arquitectura ### Flujo de nodos en n8n ``` Manual Trigger │ ▼ Markdown Crawl Request ──► POST a Crawl4AI con URLs + esquema JSON-CSS │ ▼ Wait (15s) ──────────────► Pausa mientras Crawl4AI procesa │ ▼ Get LLM Crawl ───────────► Recupera resultados por task_id │ ▼ LLM if In Process ───────► ¿Sigue en estado "pending/processing"? │ │ [Sí] [No] │ │ └─────────┤ ▼ LLM Result ──────► Convierte rating a número (star_count) │ ▼ Split Out ──────► Divide resultados por producto │ ▼ Convert to File ───► Exporta a archivo final (JSON/CSV) │ ▼ [Opcional] Google Sheets ── (deshabilitado por defecto) ``` **Tipo de arquitectura**: Workflow asincrónico con polling + procesamiento + exportación. --- ## 4. Ejecución / Desarrollo ### Implementación inicial 1. Configurar credenciales: `crawl4aiserver`, `panel`, Google Sheets. 2. Probar con dataset pequeño (2 páginas) para validar selectores CSS. ### Edición futura - Ampliar `Array.from({ length: N })` para procesar más páginas. - Ajustar `baseSelector` y `fields` si cambia la estructura web. - Habilitar el módulo de Google Sheets para registro en línea. --- ## 5. Monitoreo y Control ### Logs Revisar ejecuciones en: **n8n → Execution History** ### KPIs | Indicador | Descripción | |-----------|-------------| | % productos extraídos | Porcentaje de productos extraídos correctamente por batch | | Tiempo de procesamiento | Tiempo promedio por batch de páginas | ### Control de cambios - Antes de editar `schema.fields`, probar en ambiente de desarrollo. - Documentar versiones del flujo (`versionId` ya está incluido en el JSON de n8n). --- ## 6. Cierre / Entrega | Entregable | Formato | |------------|---------| | Archivo de productos estructurados | JSON o CSV | | Exportación automática | Google Drive / Google Sheets | | Documentación de uso | Este repositorio | --- > ← [Anterior: 🕷️ Crawl4AI](./04-crawl4ai-ubuntu.md) | [Volver al índice](../README.md)