| monitor_freelance_projects |
pipeline |
py |
pipelines |
1.0.0 |
impure |
def monitor_freelance_projects(category: str = 'it-programming', language: str = 'es', query: str = '', pages: int = 1, include_upwork: bool = False, upwork_query: str = 'custom software', duckdb_path: str = '', xlsx_path: str = '', port: int = 9222, timeout_s: float = 25.0) -> dict |
Monitor de captacion de clientes freelance: scrapea proyectos nuevos de Workana (+ Upwork opcional) via CDP, los persiste en DuckDB con dedup por url, marca los de software a medida y exporta a Excel (hojas Nuevos y Todos). |
| market-intel |
| recon |
| launcher |
| pipelines |
| freelance |
| workana |
| upwork |
| duckdb |
| excel |
|
| scrape_workana_projects_py_browser |
| scrape_upwork_projects_py_browser |
| duckdb_execute_py_infra |
| duckdb_upsert_py_infra |
| duckdb_query_readonly_py_infra |
| write_xlsx_sheets_py_infra |
|
|
|
false |
error_go_core |
|
false |
|
|
python/functions/pipelines/monitor_freelance_projects.py |
| name |
desc |
| category |
Categoria de Workana (segmento ?category= de la URL de listado). Default 'it-programming'. |
|
| name |
desc |
| language |
Idioma de los proyectos de Workana (?language=). Default 'es'. |
|
| name |
desc |
| query |
Query libre aplicada a ambas fuentes. En Workana va como extra_query; en Upwork sobrescribe upwork_query si no esta vacia. |
|
| name |
desc |
| pages |
Numero de paginas de listado a recorrer por fuente. Default 1. |
|
| name |
desc |
| include_upwork |
Si True, scrapea Upwork ademas de Workana. Default False (selectores Upwork sin validar en vivo + requiere login); si Upwork falla, el pipeline sigue solo con Workana. |
|
| name |
desc |
| upwork_query |
Query para Upwork cuando include_upwork. Default 'custom software'. El param 'query' lo sobrescribe si se pasa. |
|
| name |
desc |
| duckdb_path |
Ruta del archivo DuckDB de persistencia. Si vacia, usa ~/.fn_freelance/freelance.duckdb (crea el directorio). |
|
| name |
desc |
| xlsx_path |
Ruta del .xlsx de salida. Si vacia, usa ~/.fn_freelance/freelance_projects.xlsx (crea el directorio). Se sobrescribe en cada corrida. |
|
| name |
desc |
| port |
Puerto de remote debugging del Chrome que usan los scrapers (CDP). Default 9222 (chromium-personal logueado). Usa 9333 para el Chrome aislado del browser_mcp. |
|
| name |
desc |
| timeout_s |
Timeout en segundos por pagina para los scrapers (navegacion + espera de cards). Default 25.0. |
|
|
dict. En exito: {status:'ok', new_count:int (proyectos nuevos de esta corrida), total_in_db:int, new_projects:[...], xlsx_path:'<abs>', duckdb_path:'<abs>', sources:{workana:{count,status}, upwork:{count,status}|'skipped'}}. En error (sin lanzar): {status:'error', error:str, sources:{...}}. |