Inmersión técnica en tgadsspy: clasificador y pipeline de ingestión de datos
Documentación técnica del pipeline de datos de tgadsspy — recopilación de datos, arquitectura del clasificador de nichos (regex + pesos), pipeline geoclasificador de 3 pasos, almacenamiento con dirección de contenido SHA256 y caché de agregación. Para desarrolladores, investigadores y equipos de cumplimiento.
Contents
- Propósito y audiencia
- 1. Fuente de datos
- 2. Pool de canales y niveles
- 3. Deduplicación de creativos
- 4. Clasificación de nichos
- 5. Clasificación geográfica
- 6. Mirror de medios
- 7. Extracción de anunciantes
- 8. Caché de agregación
- 9. Spider BFS discover-similar
- 10. Completitud de datos y brechas conocidas
- 11. Licencia de datos y citación
Propósito y audiencia#
Este documento es una inmersión técnica en cómo Telegram Ads Spy recopila, clasifica y sirve datos de anuncios de Telegram. Complementa la visión general en /about con detalles a nivel de implementación. La audiencia principal: desarrolladores que construyen sobre la API pública, investigadores que necesitan entender la procedencia de los datos para citarlos, y equipos de cumplimiento que evalúan la metodología OSINT del sistema.
1. Fuente de datos#
Todos los datos publicitarios en Telegram Ads Spy provienen de una única fuente: nuestro pipeline automatizado de recopilación. Nuestra capa de recopilación funciona sobre la API de Telegram y devuelve datos estructurados. Telegram Ads Spy depende exclusivamente de este pipeline — sin scraping.
Qué recopilamos#
- Mensajes patrocinados en los canales monitoreados: texto, botón CTA y su enlace, medios y destino del anunciante. Los enlaces originales de los medios caducan en 1 hora, por lo que los replicamos en almacenamiento permanente.
- Metadatos del canal: título, username, descripción, número de miembros y avatar.
- Búsqueda de canales, usada para el descubrimiento (con 47 consultas semilla rotativas) y cuando un usuario envía un enlace t.me.
- Recomendaciones de canales similares de Telegram, usadas para ampliar el pool de canales.
2. Pool de canales y niveles#
El pipeline de ingestión opera sobre un pool de ~9.000+ canales. Los canales se clasifican por número de miembros, lo que determina la frecuencia de ingestión:
| Nivel | Número de miembros | Intervalo de ingestión |
|---|---|---|
| S (Super) | 1M+ | 30 minutos |
| A | 100k–1M | 2 horas |
| B | 10k–100k | 8 horas |
| C | 1k–10k | 72 horas |
| Placeholder | Desconocido | No ingesta |
3. Deduplicación de creativos#
Cuando el cron de ingestión recibe creativos, la deduplicación ocurre antes de cualquier almacenamiento:
huella del creativo = sha256(title + text + ctaUrl + ctaLabel + accentColor)
Un creativo se considera nuevo solo si su huella no se ha visto antes. Esto significa:
- El mismo anuncio en 100 canales produce un registro
AdCreative(no 100) - Cada aparición en un canal produce un registro
SponsoredImpression - Las variaciones menores (diferente
accentColorcon el mismo texto) se tratan como creativos distintos — intencional, ya que las variantes de color se usan en pruebas A/B
4. Clasificación de nichos#
Cada AdCreative se clasifica en uno o más nichos. El clasificador es un sistema de detección de palabras clave ponderadas más detección de marcas implementado en lib/niche.ts.
Arquitectura#
Paso 1: Detección de marcas Una consulta contra un diccionario de ~400 marcas conocidas de anunciantes, mapeadas a su nicho principal. Ejemplos:
binance→crypto1xbet→gamblingexness→forex
Las coincidencias de marcas tienen peso alto (w=10) y dominan la clasificación cuando están presentes.
Paso 2: Puntuación de palabras clave Para cada nicho, se evalúan patrones regex contra el texto del creativo. Los patrones están diseñados para evitar falsos positivos mediante especificidad, reglas de negación y variantes de idioma.
Taxonomía de nichos#
Nichos actuales de nivel superior (abril 2026):
crypto, trading, forex, fintech, gambling, betting, vpn, dating, news, education, gaming, retail, tech, bots, adult, signals, remittance, ai, other
5. Clasificación geográfica#
El clasificador geográfico es una cascada de 3 pasos:
Paso 1: Análisis del TLD de la URL CTA
El TLD de la URL CTA se analiza: .ru → RU, .com.br → BR, etc.
Paso 2: Detección de idioma en el texto del creativo Si el Paso 1 es ambiguo, se detecta el idioma: árabe → AR, cirílico → RU/CIS, devanagari → HI, hangul → KR, etc.
Paso 3: Agregación geo a nivel de canal El canal en el que apareció el creativo tiene su propia señal geo. Cuando un creativo aparece predominantemente en canales de idioma ruso, hereda esa geo.
6. Mirror de medios#
Los enlaces temporales originales de los medios caducan en 1 hora. El cron Telegram Ads Spy-media-mirror (cada 5 minutos) procesa creativos con medios no espejados:
- Fetch: HTTP GET a la URL temporal del medio
- Hash: SHA-256 del contenido binario sin procesar
- Almacenamiento: Escribe en
/var/www/tgadsspy-media/<prefijo>/<sha256-hex>.<ext> - Actualización:
AdCreative.mediaUrlse actualiza a/m/<prefijo>/<sha256-hex>.<ext>
La caché de nginx sirve rutas /m/ con Cache-Control: public, immutable, max-age=31536000.
7. Extracción de anunciantes#
La identidad del anunciante se deriva de la URL CTA:
- Anunciante de dominio: si
ctaUrles una URL externa, el dominio registrado se convierte en un registroAdvertisercontype: domain - Anunciante de Telegram: si
ctaUrles una URLt.me/<username>, el nombre de usuario se convierte en un registroAdvertisercontype: telegram
8. Caché de agregación#
Dos claves Redis se pre-calientan cada minuto:
Telegram Ads Spy:home:agg (TTL 120s)
Contiene: recuento total de creativos, anunciantes, canales, nichos principales, 20 creativos recientes, estadísticas del día.
Telegram Ads Spy:pool:stats (TTL 600s)
Contiene: recuento de canales por nivel, recuento elegible para patrocinio, países representados.
9. Spider BFS discover-similar#
Telegram Ads Spy ejecuta un spider BFS continuo usando el grafo de "canales similares" de Telegram:
- Selección de ancla:
Channel.lastSimilarCheckAt IS NULL OR < NOW()-1h - Tamaño del lote: 30 canales por tick (cada minuto en proceso)
- Cooldown de ancla: 1 hora para evitar re-spidear el mismo canal
10. Completitud de datos y brechas conocidas#
Cobertura estimada: Para mensajes patrocinados del gabinete EUR, la cobertura se estima en 65–75% de todos los creativos únicos del período.
Brechas conocidas: publicidad en grupos, mensajes de bot a usuario, resultados de bot inline, canales muy nuevos, canales con < 1k suscriptores.
11. Licencia de datos y citación#
Todos los datos están bajo CC-BY-4.0:
Fuente: tgadsspy.com · tgadsspy.com/blog/tgadsspy-classifier-pipeline-technical-deep-dive · CC-BY-4.0
Also available in:
Cite this article
tgadsspy research (2026). Inmersión técnica en tgadsspy: clasificador y pipeline de ingestión de datos. tgadsspy.com. Retrieved from https://tgadsspy.com/blog/es-tgadsspy-inmersion-tecnica-clasificador-pipeline-2026
Licensed CC-BY-4.0 — reuse allowed including commercial, attribution required.