Files
fn_registry/docs/capabilities/market-intel.md
T
egutierrez e1e9bb7499 feat(shell): auto-commit con 31 cambios
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-06-14 23:55:16 +02:00

3.4 KiB

market-intel

Inteligencia de mercado para captación de clientes: scrapers de señales de demanda y tendencias de productos/nichos desde varias fuentes públicas, más vigilancia de precios de la competencia, aterrizados en Postgres y analizados con Metabase. Scheduling con dag_engine. Origen: proyecto captacion_clientes.

Funciones

ID Firma corta Qué hace
scrape_amazon_bestsellers_py_datascience (marketplace, categories, list_type, max_items) Amazon Best Sellers + Movers & Shakers (ranking real de demanda). HTTP, funciona.
scrape_google_trends_py_datascience (keywords, geo, timeframe, include_related) Interés de búsqueda (0-100) + rising/top via pytrends. Backoff ante 429.
scrape_tiktok_creative_py_datascience (country, kind, limit, period) TikTok Creative Center (hashtags/songs/creators). Bloqueado por anti-bot vía HTTP; pendiente browser CDP.
scrape_aliexpress_trending_py_datascience (query, category, limit, ship_to) Productos populares AliExpress (orders/rating). Bloqueado por captcha vía HTTP; pendiente browser CDP.
scrape_competitor_prices_py_datascience (targets) -> list[dict] Precio actual de una lista de URLs de competidores (cascada: selector → JSON-LD → meta → heurística).
pg_insert_rows_py_infra (dsn, table, rows, add_snapshot_date=True) Insert append-only por lote en Postgres (execute_values parametrizado, añade snapshot_date).
pg_apply_sql_py_infra (dsn, sql_path) -> int Aplica un .sql de migración a Postgres (idempotente con IF NOT EXISTS).
ingest_market_trends_py_pipelines (source) Dispatcher: scrapea una fuente y la aterriza en su tabla. Lo invoca dag_engine.

Ejemplo canónico (end-to-end)

# 1. (una vez) Stack Metabase + Postgres en Docker
fn run init_metabase_go_infra --project captacion --metabase-port 3030 --pg-port 5433 \
  --pg-user captacion --pg-password "$(pass show captacion/postgres | head -1)"
docker exec captacion-postgres psql -U captacion -d metabase -c "CREATE DATABASE trends OWNER captacion"

# 2. (una vez) Aplicar el schema
python3 -c "import sys; sys.path.insert(0,'python/functions'); from infra import pg_apply_sql; \
  pg_apply_sql('postgresql://captacion:PW@localhost:5433/trends', 'projects/captacion_clientes/db/migrations/001_schema.sql')"

# 3. Ingesta una fuente (manual o vía dag_engine)
fn run ingest_market_trends_py_pipelines amazon
fn run ingest_market_trends_py_pipelines google_trends

# 4. dag_engine lo hace solo: dags market-intel-daily (06:30) y competitor-prices-hourly

Fronteras

  • NO hace explotación ni bypass agresivo de anti-bot: TikTok/AliExpress por HTTP-directo caen desde datacenter; la vía robusta es el browser MCP/CDP (grupo navegator/web-proxy, doctrina flow_replay.md), aún no implementada para estas dos fuentes.
  • NO es un grupo de visualización: el análisis vive en Metabase (grupo metabase).
  • NO gestiona el scheduling: eso es dag_engine (grupo scheduler).
  • El DSN de Postgres y credenciales NO se hardcodean: van en pass/.env del proyecto.

Notas

  • Las tablas de trends son append-only particionadas por snapshot_date — pensadas para series temporales en Metabase (qué tendencia sube/baja). No correr en bucle apretado.
  • competitor_prices se nutre de la tabla competitor_targets (el usuario inserta los objetivos a vigilar: competidor + product_key + URL).