cómo parsear trump truth social posts con python 2026

Por qué monitorear Truth Social con código propio

Truth Social se ha convertido en el canal principal de comunicación de Trump desde 2022, y en 2026 sigue siendo la fuente más rápida de señales de política comercial, aranceles y declaraciones de mercado. Para traders algorítmicos y analistas que necesitan reaccionar en segundos, depender de medios de comunicación o de alertas manuales es insuficiente. Construir tu propio scraper en Python te da control total sobre la latencia, los filtros y la integración con tu stack de trading.

La arquitectura de Truth Social está basada en Mastodon, un protocolo de redes sociales federadas de código abierto. Esto significa que existe una API compatible con Mastodon que, aunque con limitaciones, permite acceder a los posts de forma programática. Además, Trump tiene un feed RSS público que actualiza en tiempo casi real. Combinar ambos métodos produce el sistema de monitoreo más robusto posible sin depender de servicios de terceros.

Para traders en México, Colombia y Argentina, la ventaja competitiva de tener una alerta en segundos frente a competidores que reaccionan en minutos puede traducirse en diferencias de precio significativas, especialmente en instrumentos sensibles como el USD/MXN, los contratos de futuros sobre materias primas o los ADRs latinoamericanos listados en Nueva York.

Método 1: Feed RSS (el más simple y rápido)

Truth Social expone un feed RSS para cualquier cuenta pública. La URL del feed de Trump es https://truthsocial.com/@realDonaldTrump.rss. Este es el método de menor complejidad técnica y, en la práctica, uno de los más rápidos, con una latencia típica de 30 a 90 segundos respecto a la publicación original.

El siguiente script Python consulta el feed cada 45 segundos y detecta nuevas entradas comparando los IDs con los ya procesados:

import feedparser, time, hashlib, json

RSS_URL = "https://truthsocial.com/@realDonaldTrump.rss"
seen_ids = set()

def fetch_latest():
    feed = feedparser.parse(RSS_URL)
    new_posts = []
    for entry in feed.entries:
        uid = entry.get("id", hashlib.md5(entry.title.encode()).hexdigest())
        if uid not in seen_ids:
            seen_ids.add(uid)
            new_posts.append({
                "id": uid,
                "published": entry.get("published", ""),
                "text": entry.get("summary", entry.title)
            })
    return new_posts

while True:
    posts = fetch_latest()
    for post in posts:
        print(json.dumps(post, ensure_ascii=False))
        # Aquí: enviar a Telegram, webhook del broker, etc.
    time.sleep(45)

Este script requiere únicamente la librería feedparser, instalable con pip install feedparser. No necesita autenticación ni gestión de sesiones. Para producción, añade manejo de excepciones, logging y un mecanismo de persistencia de seen_ids para sobrevivir reinicios del proceso.

Método 2: API compatible con Mastodon

Truth Social implementa la API de Mastodon v1, lo que permite acceder a los posts mediante solicitudes HTTP estándar con un token de autenticación. Este método ofrece mayor control y metadatos adicionales (reacciones, re-truths, etc.) que el RSS, pero requiere registrar una cuenta y obtener un access token.

Pasos para obtener el token: crea una cuenta en truthsocial.com, accede a Configuración → Desarrollo → Nueva aplicación, y copia el access token generado. Con ese token, la llamada a la API es directa:

import requests, os, time

BASE_URL = "https://truthsocial.com/api/v1"
TOKEN = os.environ["TRUTH_TOKEN"]  # Nunca hardcodear tokens
TRUMP_ACCOUNT_ID = "107780257626128497"  # ID de @realDonaldTrump

headers = {"Authorization": f"Bearer {TOKEN}"}
last_id = None

def get_new_posts():
    params = {"limit": 5}
    if last_id:
        params["since_id"] = last_id
    r = requests.get(f"{BASE_URL}/accounts/{TRUMP_ACCOUNT_ID}/statuses",
                     headers=headers, params=params, timeout=10)
    r.raise_for_status()
    return r.json()

while True:
    try:
        posts = get_new_posts()
        for post in reversed(posts):
            last_id = post["id"]
            print(post["content"][:200])
    except Exception as e:
        print(f"Error: {e}")
    time.sleep(30)

Almacena siempre el token en una variable de entorno y nunca lo incluyas en el código fuente. En un VPS de producción, usa un archivo .env cargado con python-dotenv.

Método 3: Playwright para scraping de navegador

Cuando los métodos anteriores no están disponibles (por cambios en la API o bloqueos), Playwright permite automatizar un navegador real y extraer el contenido directamente del HTML renderizado. Es el método más robusto ante cambios en la infraestructura, pero también el más pesado en recursos.

from playwright.sync_api import sync_playwright
import time, re

def scrape_truth_social():
    with sync_playwright() as p:
        browser = p.chromium.launch(headless=True)
        page = browser.new_page()
        page.goto("https://truthsocial.com/@realDonaldTrump", timeout=30000)
        page.wait_for_selector("article", timeout=15000)
        posts = page.query_selector_all("article")
        results = []
        for post in posts[:5]:
            text = post.inner_text()
            results.append(text[:300])
        browser.close()
        return results

while True:
    try:
        for post in scrape_truth_social():
            print(post)
    except Exception as e:
        print(f"Error Playwright: {e}")
    time.sleep(60)

Playwright requiere instalar los navegadores con playwright install chromium. En un VPS sin interfaz gráfica, el modo headless=True es obligatorio. Consume más CPU y memoria que los métodos anteriores, así que dimensiona el servidor adecuadamente (mínimo 1 GB RAM).

Análisis de sentimiento y envío de alertas

Detectar un nuevo post es solo el primer paso. El verdadero valor está en clasificar automáticamente si el contenido es alcista o bajista para determinados activos. Un enfoque simple pero efectivo es el análisis por palabras clave combinado con un modelo de lenguaje ligero.

Para el enfoque por palabras clave, define diccionarios con términos asociados a diferentes activos y direcciones:

KEYWORDS = {
    "tariff": ("tariff", "aranceles", "duties", "tax"),
    "china": ("china", "beijing", "chinese", "prc"),
    "gold": ("gold", "oro", "safe haven"),
    "oil": ("oil", "petroleum", "energy", "opec"),
    "mxn": ("mexico", "mexican", "border", "immigration")
}

def classify_post(text):
    text_lower = text.lower()
    matches = []
    for asset, terms in KEYWORDS.items():
        if any(t in text_lower for t in terms):
            matches.append(asset)
    return matches

Para alertas, integra la librería python-telegram-bot y envía el post con su clasificación a tu canal privado. Para la integración con brokers en Latinoamérica, los brokers más accesibles para traders individuales (GBM en México, Toro en Colombia, IOL en Argentina) no ofrecen APIs propias; en ese caso, usa Interactive Brokers o Alpaca, que sí tienen APIs REST completas.

Comparación de métodos para parsear Truth Social (2026)
Método Latencia típica Complejidad Autenticación Estabilidad
RSS30–90 segBajaNoAlta
API Mastodon15–45 segMediaToken OAuthMedia (sujeta a cambios)
Playwright45–120 segAltaOpcionalMedia (sujeta a cambios HTML)
TrumpBot Pro API15–60 segMuy bajaAPI keyMuy alta (gestionada)

Preguntas frecuentes

¿Es legal hacer scraping de Truth Social?

Las publicaciones de Trump en Truth Social son contenido público. Acceder a ellas de forma automatizada para monitoreo no comercial entra en una zona gris legal. En México, Colombia y Argentina no existe legislación específica que lo prohíba expresamente, pero conviene no sobrecargar los servidores y respetar el archivo robots.txt.

¿Cuál es el método más rápido para obtener nuevos posts?

El feed RSS de Truth Social es el método de menor latencia para la mayoría de usuarios. Permite detectar nuevas publicaciones en 30-90 segundos con una simple petición HTTP, sin necesidad de Playwright ni de gestionar sesiones.

¿Necesito una cuenta de Truth Social para parsear los posts?

Para acceder al feed RSS público de Trump no necesitas cuenta. Para la API Mastodon compatible sí se requiere autenticación con una cuenta activa. Playwright puede funcionar sin cuenta si el perfil es público.

¿Puedo ejecutar el scraper en un VPS de México o Colombia?

Sí. Un VPS de cualquier proveedor (DigitalOcean, Vultr, Hetzner) ubicado en EE.UU. o Europa es suficiente. La latencia entre el servidor y Truth Social será similar independientemente de tu ubicación geográfica.

¿Con qué frecuencia debería consultar el feed?

Para el feed RSS, una consulta cada 30-60 segundos es razonable y no sobrecarga los servidores. Para Playwright, no más de una consulta por minuto. Intervalos más cortos pueden resultar en bloqueos temporales de IP.

¿Qué hago si Truth Social bloquea mi IP?

Añade delays aleatorios entre peticiones, rota el User-Agent y, si el bloqueo persiste, usa un proxy residencial o cambia la IP del VPS. La alternativa más robusta es usar TrumpBot Pro, que gestiona la infraestructura de monitoreo por ti.

¿Cómo envío las alertas a mi broker desde Python?

Una vez que detectas un nuevo post, puedes llamar a la API REST de tu broker (Interactive Brokers, Alpaca, etc.) directamente desde el script Python. Define reglas de trading (qué activo comprar o vender según keywords del post) y ejecuta la orden con las librerías oficiales del broker.

¿TrumpBot ofrece una API lista para usar?

Sí. TrumpBot Pro incluye una API REST y webhooks que ya gestionan el scraping y el análisis de sentimiento. Es la alternativa más rápida si no quieres mantener tu propia infraestructura. Visita trumpbot.online para más detalles.