Política · OSINT · Análisis de datos

Escucha social política con fuentes abiertas (OSINT)

Cómo construí un sistema diario de escucha social para la política de Argentina y Brasil: qué fuentes abiertas recolecta, cómo clasifica tono y narrativas con Python y modelos de lenguaje, y qué cuidados de privacidad aplica.

Matías Gaglio ·

Read in English
Contexto

Ordenar la conversación pública antes de interpretarla.

La información política abunda, pero está dispersa: notas de cientos de medios, comentarios en video, búsquedas, chequeos de datos y redes con lógicas distintas. Construí un sistema que todos los días recolecta esas fuentes abiertas, las normaliza y las convierte en indicadores agregados sobre unos cuarenta dirigentes de Argentina y Brasil: volumen de menciones, tono, narrativas dominantes, picos de atención y exposición a términos de riesgo reputacional.

El tablero es una herramienta de trabajo y no se publica en este sitio. Lo que sigue explica cómo funciona y qué tipo de lectura permite.

4.216notas analizadas en dos semanas (28/10 al 10/11/2026)
792medios distintos detectados en ese período
39dirigentes con perfil y fuentes propias
174chequeos de datos de verificadores incluidos en el mismo período
Fuentes

Solo fuentes abiertas y gratuitas.

Cada fuente tiene su propio recolector en Python, con reintentos, límites de velocidad y un registro del estado de cada corrida. Si una fuente falla, el resto sigue y el tablero lo informa.

Medios

Google News y RSS

Búsquedas por dirigente y por verificadores de datos, más feeds RSS de medios de todo el espectro, cada uno rotulado con su línea editorial.

Video

YouTube Data API

Comentarios públicos de videos políticos recientes, por búsqueda temática y por canal.

Redes abiertas

Bluesky, Mastodon y Reddit

Publicaciones de APIs públicas que no exigen acceso privilegiado.

Atención

Google Trends, GDELT y Wikipedia

Interés de búsqueda, cobertura internacional y visitas a las páginas de cada dirigente como señales de atención.

Límite explícito: la conversación en redes y medios muestra qué circula y cómo se dice, pero no representa a toda la población. Por eso el sistema no reemplaza a una encuesta con diseño muestral.
Método

De miles de textos a señales que se pueden explicar.

Recolectar

GitHub Actions corre el proceso todos los días y guarda los textos en una caché privada, fuera del repositorio público.

Clasificar

pysentimiento (modelos RoBERTuito y BERTweet sobre PyTorch) asigna tono, emoción y agresividad en español y portugués. Si el modelo no está disponible, hay diccionarios de respaldo que se pueden auditar.

Agrupar

TF-IDF y factorización NMF con scikit-learn detectan narrativas: grupos de términos que aparecen juntos y cómo cambia su participación día a día.

Alertar

Picos de volumen por puntaje z, términos de riesgo por dirigente y un índice simple de presión reputacional de 0 a 100.

El índice de presión combina cuatro componentes con pesos visibles: tono negativo, agresividad, términos de riesgo y aceleración del volumen. Prefiero una fórmula simple que cualquiera pueda reconstruir a un puntaje opaco que no se puede discutir.

Coordinación

Detectar mensajes casi idénticos sin acusar a nadie por error.

Para identificar posible actividad coordinada, el sistema compara publicaciones con n-gramas de caracteres y similitud coseno. Dos cuentas distintas que publican textos casi iguales (90% de similitud o más) en menos de una hora forman un vínculo en un grafo de NetworkX.

Una coincidencia aislada no alcanza, porque dos personas pueden copiar el mismo titular. Se exige que el mismo par de cuentas coincida en al menos dos mensajes distintos. En el período analizado no apareció ningún grupo que cumpliera ese criterio, y el tablero lo informa así en lugar de forzar un hallazgo.

Resultados

Qué se puede leer con este enfoque.

Narrativa detectadaNotas
Milei y Bullrich734
Lula y Alckmin659
El papa León XIV y Villarruel608
La familia Bolsonaro579
Kicillof, Máximo Kirchner y la provincia de Buenos Aires406
  • Tono general: 22,5% negativo, 69,4% neutro y 8,1% positivo, clasificado con el modelo en las 4.216 notas.
  • Picos: el 4 de noviembre el volumen superó en 3,2 desvíos estándar al promedio del período.
  • Lectura cualitativa: el modelo separa temas, pero una misma frase puede ser apoyo, ironía o rechazo. Los hallazgos se revisan leyendo ejemplos antes de sacar conclusiones.
Privacidad

Publicar agregados, nunca personas.

  • Textos fuera del repositorio: las publicaciones y comentarios viven en una caché temporal del flujo de trabajo; al repositorio solo llegan porcentajes y conteos.
  • Autores seudonimizados: las cuentas se reemplazan por identificadores con hash antes del análisis.
  • Fuentes legítimas: solo APIs públicas y datos abiertos, sin acceso a información privada.
  • Trazabilidad: cada indicador conserva el enlace a la fuente pública que lo originó para poder verificarlo.
Para qué sirve: detectar antes los temas que crecen, comparar cómo se habla de distintos dirigentes y dar contexto verificable a un equipo que tiene que tomar decisiones de comunicación.
Software y etiquetas

Herramientas y temas de este artículo.

Software usado o relacionado

  • Python
  • pandas
  • NumPy
  • scikit-learn
  • pysentimiento
  • Hugging Face
  • PyTorch
  • NetworkX
  • Plotly
  • GitHub
  • YouTube Data API
  • Google News
  • Google Trends
  • GDELT
  • Wikipedia
  • Bluesky
  • Mastodon
  • Reddit

Temas

  • OSINT
  • fuentes abiertas
  • escucha social
  • social listening
  • opinión pública
  • política argentina
  • política brasileña
  • análisis de sentimiento
  • análisis de discurso
  • NLP
  • procesamiento de lenguaje natural
  • modelado de tópicos
  • NMF
  • TF-IDF
  • detección de coordinación
  • reputación política
  • RoBERTuito
  • GitHub Actions
  • Milei
  • Lula

Trabajo relacionado

Siguiente paso

¿Querés aplicar este enfoque en tu marca o equipo?

Agendá una llamada de 30 minutos, revisá mi CV o escribime.