Una herramienta interactiva para explorar y consultar datos de cuentas de Facebook que participan en programas de monetización en Centroamérica.
https://monetization-tool-production.up.railway.app
- Dashboard completo con visualizaciones de datos
- Consultas en lenguaje natural usando IA
- Tabla interactiva con filtros y ordenamiento
- Páginas individuales para cada cuenta
- Widget embebible para Ghost y otros blogs
- API REST para integraciones
- Cuentas por ubicación (gráfico circular)
- Programas de monetización (barras)
- Timeline de creación de cuentas (línea)
- Top 10 cuentas por suscriptores
- Crea una cuenta en render.com
- Conecta tu repositorio de GitHub
- Haz clic en "New" → "Blueprint"
- Selecciona tu repositorio
- Render detectará automáticamente el
render.yamly desplegará
O manualmente:
- New → Web Service
- Conecta tu repo
- Build Command:
pip install -r requirements.txt - Start Command:
gunicorn app:app --bind 0.0.0.0:$PORT
- Ve a railway.app
- New Project → Deploy from GitHub
- Selecciona tu repositorio
- Railway detectará automáticamente Flask
heroku create tu-app-name
git push heroku mainPara una versión estática con datos embebidos, usa el archivo standalone.html (ver más abajo).
monetization-tool/
├── app.py # Backend Flask
├── requirements.txt # Dependencias Python
├── render.yaml # Config para Render
├── Procfile # Config para Heroku
├── data/
│ └── accounts.csv # Datos de cuentas
└── templates/
├── index.html # Dashboard principal
├── account.html # Detalle de cuenta
└── widget.html # Widget embebible
| Endpoint | Método | Descripción |
|---|---|---|
/ |
GET | Dashboard principal |
/cuenta/<id> |
GET | Detalle de cuenta |
/widget |
GET | Widget embebible |
/api/stats |
GET | Estadísticas generales |
/api/accounts |
GET | Lista de cuentas (paginada) |
/api/account/<id> |
GET | Datos de una cuenta |
/api/chart/locations |
GET | Datos para gráfico de ubicaciones |
/api/chart/timeline |
GET | Datos para gráfico temporal |
/api/chart/monetization |
GET | Datos de programas |
/api/query |
POST | Consulta en lenguaje natural |
/api/filters |
GET | Opciones de filtros |
page: Número de página (default: 1)per_page: Resultados por página (default: 25, max: 100)search: Búsqueda por nombre/handlelocation: Filtrar por ubicaciónverified:trueofalselanguage: Filtrar por idiomamin_subs: Mínimo de suscriptoressort: Campo para ordenarorder:ascodesc
Después de desplegar, usa este código en un bloque HTML de Ghost:
<iframe
src="https://TU-APP.onrender.com/widget"
width="100%"
height="800px"
frameborder="0"
style="border-radius: 12px; overflow: hidden;">
</iframe><div style="text-align: center; padding: 2rem;">
<a href="https://TU-APP.onrender.com"
target="_blank"
style="display: inline-block; padding: 1rem 2rem; background: #e94560; color: white; text-decoration: none; border-radius: 8px; font-weight: bold;">
Ver herramienta de datos →
</a>
</div>Para actualizar los datos, simplemente reemplaza el archivo data/accounts.csv con el nuevo CSV y haz redeploy.
El CSV debe tener estas columnas:
account_idaccount_nameaccount_handleaccount_verifiedpage_created_dateaccount_subscriber_countaccount_language_codeaccount_languageadmin_location_codeadmin_locationlast_onboardingfirst_recorded_monetizationlast_recorded_monetizationfacebook_instant_articles_session_countfacebook_in_stream_ads_session_countfacebook_ads_on_reels_session_countfacebook_content_monetization_session_count
Datos: Monetization.wtf - WHAT TO FIX con apoyo de Luminate
©️ CC BY-ND 4.0
# Clonar repositorio
git clone tu-repo
cd monetization-tool
# Instalar dependencias
pip install -r requirements.txt
# Ejecutar
python app.py
# Abrir http://localhost:5000