Data Hunter Pro es una herramienta de alto rendimiento diseñada para rastrear, identificar y clasificar datasets de código abierto en la web. Combina la velocidad de Rust para el crawling web con la potencia de OpenAI (GPT-4o-mini) para analizar semánticamente el contenido de los recursos encontrados.
Cuenta con una interfaz moderna en React que permite la monitorización en tiempo real mediante Server-Sent Events (SSE).
- 🚀 Motor de Alto Rendimiento: Backend escrito en Rust utilizando
TokioyAxumpara manejo asíncrono y concurrente de múltiples hilos de búsqueda. - 🧠 Análisis Semántico con IA: Integración con OpenAI para analizar URLs y generar descripciones sintéticas y categorización automática (Gobierno, Academia, Open Data).
- 🎯 Búsqueda Dirigida: Capacidad de subir listas de temáticas personalizadas (CSV/TXT) para realizar búsquedas específicas usando dorking avanzado.
- 📡 Monitorización en Tiempo Real: Dashboard interactivo con logs en vivo, barra de progreso y tabla de resultados dinámica.
- 📦 Todo en Uno: Empaquetado en una sola imagen Docker (Multi-stage build) que sirve tanto la API como el Frontend estático.
- 💾 Exportación de Datos: Descarga inmediata de los hallazgos en formato CSV.
- Framework: Axum
- Runtime: Tokio
- HTTP Client: Reqwest
- Embedding: RustEmbed (para servir el frontend)
- Utilidades: Scraper, Regex, Serde
- Estilos: TailwindCSS
- Iconos: Lucide React
- Comunicación: EventSource (SSE)
- Containerización: Docker (Debian Slim)
- Docker instalado en tu sistema.
- Una API Key de OpenAI (necesaria para la función de análisis inteligente, aunque el crawler funciona en modo básico sin ella).
-
Clonar el repositorio:
git clone https://github.com/tu-usuario/data-hunter-pro.git cd data-hunter-pro -
Construir la imagen:
docker build -t data-hunter . -
Ejecutar el contenedor: Debes pasar tus variables de entorno, especialmente la
OPENAI_API_KEY.docker run -d -p 3000:3000 \ -e OPENAI_API_KEY="tu-api-key-aqui" \ --name hunter-instance \ data-hunter -
Acceder: Abre tu navegador en
http://localhost:3000.
Backend:
# Necesitas Rust instalado
cargo runFrontend:
# En otra terminal, dentro de la carpeta /web
cd web
npm install
npm run dev- Configuración del Objetivo:
- En el panel izquierdo, establece el número de Fuentes Objetivo (ej. 50 datasets).
- Búsqueda Temática (Opcional):
- Si deseas buscar algo específico (ej. "Datos climáticos", "Finanzas 2024"), crea un archivo
.txto.csvcon una temática por línea. - Arrastra el archivo al área de "Temáticas CSV".
- Si deseas buscar algo específico (ej. "Datos climáticos", "Finanzas 2024"), crea un archivo
- Iniciar Caza:
- Presiona el botón INICIAR.
- Verás los logs en tiempo real en la "Agéntic Console".
- Resultados:
- La tabla principal se llenará con los enlaces encontrados, la categoría detectada y la descripción generada por la IA.
- Exportar:
- Haz clic en "EXPORTAR CSV" para descargar tus resultados.
El sistema utiliza un archivo .env o variables de entorno del sistema. Las principales son:
| Variable | Descripción | Valor por defecto |
|---|---|---|
PORT |
Puerto de escucha del servidor | 3000 |
OPENAI_API_KEY |
Clave API para análisis inteligente | (Requerido para IA) |
AI_MODEL |
Modelo de OpenAI a utilizar | gpt-4o-mini |
RUST_LOG |
Nivel de log del backend | info |
.
├── Cargo.toml # Dependencias de Rust
├── Dockerfile # Construcción Multi-stage
├── src/
│ └── main.rs # Lógica del servidor, crawler y IA
└── web/ # Frontend React
├── index.html
├── src/
│ └── main.jsx # UI Lógica
├── package.json
└── vite.config.js
Esta herramienta está diseñada con fines educativos y de investigación para la localización de datos abiertos (Open Data). El usuario es responsable de asegurar que el uso del crawler cumpla con los términos de servicio de los sitios web visitados y las regulaciones locales sobre scraping.
¡Las contribuciones son bienvenidas! Si tienes ideas para mejorar el algoritmo de búsqueda o la interfaz:
- Haz un Fork del proyecto.
- Crea tu rama de características (
git checkout -b feature/AmazingFeature). - Haz Commit de tus cambios (
git commit -m 'Add some AmazingFeature'). - Push a la rama (
git push origin feature/AmazingFeature). - Abre un Pull Request.
Hecho con ❤️ y 🦀 (Rust).