Scraping y extracción

sacar datos de sitios que no te dieron una API.

esfuerzo un fin de semana45 apps del cementerio la necesitan

cómo se usa · 3 pasos

  1. Copia el archivo.Botón copiar archivo. Es un SKILL.md: texto en Markdown con instrucciones para tu agente, ya con el encabezado que los agentes esperan. No tienes que entenderlo ni editarlo.
  2. Guárdalo en tu carpeta de skills.Una carpeta con el nombre de la skill y dentro el archivo SKILL.md, tal cual. En tu carpeta personal sirve para todos tus proyectos, no hace falta copiarla en cada uno. Claude Code: ~/.claude/skills/scraping-y-extraccion/SKILL.md · Codex: ~/.agents/skills/scraping-y-extraccion/SKILL.md · Cursor lee esas dos carpetas, no necesita otra. ¿Solo para un proyecto? La misma ruta sin ~/, dentro de la carpeta del proyecto.
  3. Pídele la app.Abre tu agente y escríbele en español qué quieres construir («una agenda para mi consultorio con recordatorios por WhatsApp»). Él carga la skill solo cuando hace falta; también puedes llamarla tú: /scraping-y-extraccion en Claude Code y Cursor, $scraping-y-extraccion en Codex. Cuando se trabe, vuelve a en qué te vas a trabar.

archivo de la skill

---
name: scraping-y-extraccion
description: sacar datos de sitios que no te dieron una API.
---

# Scraping y extracción

Instrucciones para el agente que está construyendo esta app. Sigue esta skill cuando
descargues páginas, extraigas datos de HTML o vigiles cambios en sitios ajenos.

## Cuándo usar esta skill

Actívala en cuanto se cumpla cualquiera de estas condiciones:

- Los datos que necesitas están en páginas web y no en un endpoint.
- Vas a vigilar cambios: precios, posiciones, disponibilidad, menciones.
- Estás armando un directorio o un índice a partir de fuentes públicas.
- Necesitas convertir páginas en texto limpio para resumir o indexar.

Esto sostiene a media categoría de herramientas de SEO, prospección e investigación, y
también es lo que más mantenimiento exige: el sitio de enfrente cambia y tu extractor
deja de servir sin avisar.

## Cómo construirla

Usa este stack salvo que el proyecto ya tenga otro decidido: `fetch` + **cheerio** para
HTML estático, **Playwright** solo cuando la página necesita JavaScript, todo detrás de
una tabla de trabajos en Postgres (o `p-queue`) con reintentos y backoff.

1. Antes de escribir código busca feed RSS, sitemap, endpoint JSON interno o API
   oficial. Casi siempre existe uno y te ahorra todo lo demás.
2. Respeta `robots.txt` y los términos del sitio. Identifícate con un User-Agent honesto
   y de contacto.
3. Empieza con HTML estático y selectores. El navegador headless cuesta diez veces más
   por página, resérvalo para cuando realmente lo necesites.
4. Separa tres etapas: descargar, guardar el crudo, extraer. Si cambia el selector,
   reprocesas sin volver a descargar.
5. Limita la velocidad y agrega espera creciente ante 429 y 503. Un scraper agresivo se
   gana un bloqueo permanente.
6. Alerta cuando el porcentaje de campos vacíos suba: así te enteras de que el sitio
   cambió antes que tu usuario.

## En qué te vas a trabar

- **Esto se rompe solo, sin que toques nada.** Presupuesta mantenimiento, no solo
  construcción, cuando estimes cuánto tiempo lleva esta skill.
- **Evadir protecciones anti-bot cambia el problema de técnico a legal.** No lo trates
  como un detalle de implementación.
- **Un LLM extrayendo campos página por página es cómodo y carísimo:** úsalo para lo
  raro, no para el volumen.

## Criterio de terminado

No declares esto listo hasta que el extractor sobreviva un cambio menor de HTML sin
tronar por completo, la alerta de campos vacíos dispare de verdad ante un cambio de
sitio, y el ritmo de peticiones respete los límites que ya viste en 429 y 503.

cópialo en tu agente de código: Claude Code, Codex, Cursor · pégalo como su archivo de skill y sigue las instrucciones tal cual.