Herramienta CLI para gestionar la presencia en X y Reddit. Busca, puntúa y genera respuestas con IA usando el contenido del blog.
# Linux X11
sudo apt install xclip
# Linux Wayland
sudo apt install wl-clipboard
cd ze-promote
pip install -r requirements.txt
cp .env.example .env
# Edita .env con tus claves
| Variable | Necesaria | Para qué |
|---|---|---|
| ANTHROPIC_API_KEY | Sí | Generar respuestas con Claude |
| GETX_API_KEY | No | Búsquedas en X/Twitter. Sin ella solo funciona Reddit |
bash install.sh
source ~/.bashrc # o ~/.zshrc si usas zsh
Crea el alias ze en tu shell y el ejecutable /usr/local/bin/ze. Después puedes usar ze desde cualquier directorio.
Al arrancar sin flags, el programa hace tres cosas automáticamente:
Cada resultado muestra: score, recomendación automática, fuente, autor, preview del contenido, estadísticas y fecha.
| Indicador | Condición | Por qué |
|---|---|---|
| ✅ Responder | Score ≥ 40 y < 15 comentarios | Poca competencia, buena visibilidad garantizada |
| ⚠️ Opcional | Score ≥ 40 y 15-80 comentarios | Puede merecer la pena si el contenido encaja muy bien |
| ❌ Saltar | Score < 40, >80 comentarios o post de opinión | Demasiado ruido o sin contexto factual para responder |
Los posts de opinión ("what do you think", "¿qué pensáis?", "debate", "CMV"…) se descartan automáticamente.
Tras la tabla, el programa muestra cada post con su panel de detalle:
| Tecla | Acción |
|---|---|
| r | Generar respuesta con Claude |
| s | Saltar al siguiente resultado |
| q | Salir |
Al pulsar r, Claude genera una respuesta teniendo en cuenta:
| Tecla | Acción |
|---|---|
| c | Copiar al portapapeles |
| e | Editar inline antes de copiar |
| s | Descartar y pasar al siguiente |
Tras copiar, el programa muestra exactamente dónde pegar la respuesta:
Claude compara el tema concreto del post con los artículos publicados. Si hay solapamiento real, incluye la URL del artículo de forma natural. Si no hay coincidencia precisa, no incluye ningún link — una respuesta sin link es mejor que un link forzado.
Para cuando encuentras algo interesante navegando manualmente — como cuando alguien te manda una captura de pantalla.
ze --manual
# o
ze -m
| Flag | Descripción | Ejemplo |
|---|---|---|
| (sin flags) | Búsqueda completa en X y Reddit | ze |
--manual, -m | Pega texto directamente para generar respuesta | ze -m |
--no-twitter | Omitir búsquedas en X/Twitter | ze --no-twitter |
--no-reddit | Omitir búsquedas en Reddit | ze --no-reddit |
--limit N, -n N | Mostrar solo los N mejores resultados | ze -n 10 |
--help | Mostrar ayuda | ze --help |
ze --no-twitter # solo Reddit, útil sin GETX_API_KEY
ze --limit 15 # ver solo el top 15
ze -m # modo manual
ze --no-reddit --limit 5 # solo los 5 mejores tweets
Cada resultado recibe una puntuación de 0 a 100 basada en cuatro criterios:
| Criterio | Puntos | Detalle |
|---|---|---|
| Engagement | 0–40 | Likes + upvotes en escala logarítmica |
| Recencia | 0–30 | <6h → 30 · <24h → 22 · <48h → 12 · <72h → 5 |
| Idioma español | 0–20 | Detectado por palabras clave en el texto |
| Competencia baja | 0–10 | 0 replies → 10 · <5 → 7 · <15 → 4 · <40 → 1 |
Tweets con cero engagement en las tres métricas (likes, replies y retweets todos por debajo del umbral mínimo) se descartan antes de puntuar.
Edita ze_promote/sources.py para cambiar las queries y subreddits:
# Queries para X/Twitter (texto plano, sin operadores avanzados)
TWITTER_QUERIES = [
"UAP OVNI desclasificacion 2026",
"OVNI España avistamiento",
"UAP disclosure Pentagon",
]
# Subreddits y queries para Reddit
REDDIT_SEARCHES = [
("UFOs", "UAP"),
("HighStrangeness", "UAP"),
("conspiracyespanol", "OVNI"),
("es", "OVNI avistamiento"),
# añade más: ("subreddit", "query")
]
ze-promote/
├── install.sh # Instalador del comando ze
├── main.py # Punto de entrada CLI
├── ze_promote/
│ ├── scraper.py # Scraping de zonadeexclusion.com
│ ├── sources.py # Búsqueda en X y Reddit
│ ├── scorer.py # Algoritmo de scoring 0-100
│ ├── responder.py # Generación de respuestas con Claude
│ └── ui.py # Interfaz Rich (tabla, paneles, prompts)
├── requirements.txt
├── .env.example
└── README.md