Telegram Ads Spy
Sign in
Telegram Ads Spy
Account menu
Read this article in English →

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.

by Telegram Ads Spy research
5 min read
TelegramX
Contents
  1. Propósito y audiencia
  2. 1. Fuente de datos
  3. 2. Pool de canales y niveles
  4. 3. Deduplicación de creativos
  5. 4. Clasificación de nichos
  6. 5. Clasificación geográfica
  7. 6. Mirror de medios
  8. 7. Extracción de anunciantes
  9. 8. Caché de agregación
  10. 9. Spider BFS discover-similar
  11. 10. Completitud de datos y brechas conocidas
  12. 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 accentColor con 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 → crypto
  • 1xbet → gambling
  • exness → 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:

  1. Fetch: HTTP GET a la URL temporal del medio
  2. Hash: SHA-256 del contenido binario sin procesar
  3. Almacenamiento: Escribe en /var/www/tgadsspy-media/<prefijo>/<sha256-hex>.<ext>
  4. Actualización: AdCreative.mediaUrl se 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 ctaUrl es una URL externa, el dominio registrado se convierte en un registro Advertiser con type: domain
  • Anunciante de Telegram: si ctaUrl es una URL t.me/<username>, el nombre de usuario se convierte en un registro Advertiser con type: 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.

Related research

#osint →