🧰 Merchant Center Auto-Fix v3
Archivo: agentes/marketing/merchant-autofix-v3.ts · Plist: _(ninguno)_ · Horario: Manual / one-shot
Qué hace
Evolución de v2: aplica los fixes de Merchant a TODOS los productos activos de Shopify sin depender del match contra Google (la lógica es que un issue tipo title_all_caps afecta al producto en todos los idiomas). No usa Content API. Pasa títulos a Title Case con un diccionario amplio de acrónimos y marcas (BMW, VW, KuKirin, Xiaomi…), borra GTINs ambiguos, y añade metafields Google age_group=adult, gender=unisex y condition=new a los productos que no los tengan.
Cómo funciona
1. Pagina productos activos de Shopify.
2. Pre-carga qué productos ya tienen google.age_group para no duplicar.
3. FIX A: Title Case (umbral 55% mayúsculas, ≥10 letras; toTitleCase preserva acrónimos del set ACRONYMS, normaliza marcas con BRANDS_UPPER, pone conectores en minúscula).
4. FIX B: borra barcodes ambiguos (<8 dígitos, ceros, repetidos o no numéricos).
5. FIX C: crea metafield google.age_group=adult donde falta.
6. FIX D: crea google.gender=unisex y google.condition=new donde falten (consulta antes para no duplicar).
7. Imprime resumen + expectativas de re-crawl + pendientes manuales.
Datos/APIs
- Shopify Admin API (
2024-10): products (read), products PUT, variants PUT, metafields GET/POST. No usa Google API. - Vars .env:
SHOPIFY_STORE,SHOPIFY_ACCESS_TOKEN.
Cómo probarlo
cd /Users/user/rifai-agents && npx tsx agentes/marketing/merchant-autofix-v3.ts
Espera: carga de productos, verificación de metafields existentes (barra de progreso), FIX A–D con conteos, y resumen final. Escribe en Shopify (no tiene DRY_RUN). Es lento: hace varias llamadas por producto con throttles.
Si se rompe / recuperar
- Sin plist. Por su volumen de escrituras, no programar a ciegas; ejecutar puntualmente y vigilar.
- Idempotente: re-ejecutar no duplica metafields (chequea antes) y no re-Title-Casea lo ya correcto.
- Logs: stdout (redirigir a
/Users/user/rifai-agents/logs/merchant-autofix-v3.log).
Cómo replicarlo
- Paginación de productos + set de productos con age_group ya puesto.
toTitleCaseconACRONYMS+BRANDS_UPPER+ conectores.- Limpieza de barcodes + creación condicional de metafields Google (age_group/gender/condition).
- Es el "barrido completo"; v2 es el "dirigido por Merchant".