Una publicación de r/AnnArbor obtuvo 110 votos a favor al agregar eventos de muchas fuentes dispersas. Esta es la receta de Scavio para un agregador de eventos de una sola ciudad.
Requisitos previos
- Clave API de Scavio
- Python o Nodo
- Una lista seleccionada de entre 5 y 15 lugares por ciudad
- Front-end Next.js estático o simple
Guia paso a paso
Paso 1: Seleccionar la lista de fuentes del lugar
5-15 dominios por ciudad.
// domains = ['theark.org', 'thelivery.com', 'umich.edu/events', ...]Paso 2: Por lugar: búsqueda en el sitio Scavio
Devuelve resultados_orgánicos con título + URL + fragmento.
import requests, os
H = {'x-api-key': os.environ['SCAVIO_API_KEY']}
for d in domains:
r = requests.post('https://api.scavio.dev/api/v1/search', headers=H, json={'query': f'site:{d} events 2026'}).json()Paso 3: Señal de Reddit por ciudad
Muestra eventos comunitarios que los calendarios de los lugares pasan por alto.
r = requests.post('https://api.scavio.dev/api/v1/search', headers=H, json={'query': 'reddit r/AnnArbor this weekend events 2026'}).json()Paso 4: Normalizar a JSON escrito
{título, fecha y hora, lugar, URL, categoría}.
# Per result: regex date + venue inference + category guess. Use LLM as fallback for ambiguous cases.Paso 5: Deduplicar por URL + coincidencia aproximada de título
Muchos eventos aparecen en feeds de múltiples lugares.
# Use rapidfuzz or LLM judge for the 5-10% fuzzy overlaps.Paso 6: Cron diario
Funciona a las 6 a. m. local; actualiza JSON estático.
# crontab: 0 6 * * * /usr/bin/python /app/aggregate.pyPaso 7: Representar como una fuente pública limpia
Sin iniciar sesión.
// pages/[city].tsx → fetch /data/events-${city}.json → render list grouped by dateEjemplo en Python
# Per-month: $30 Scavio + ~$5 hosting = under $40/mo for one city.Ejemplo en JavaScript
// Same shape in Next.js + fetch.Salida esperada
Daily-updated events feed at /CityName route. Mid-size city: ~600-1,000 normalized events/mo.