← Volver al catálogo

🧰 Merchant Center Auto-Fix v2

Archivo: agentes/marketing/merchant-autofix-v2.ts · Plist: _(ninguno)_ · Horario: Manual / one-shot

Qué hace

Arregla los issues más comunes que bloquean la aprobación en Google Merchant Center, partiendo de los datos REALES de Merchant (consulta la Content API para saber qué producto tiene qué issue) y aplicando el fix en Shopify. Cubre title_all_caps (pasa a Title Case), ambiguous_gtin (borra barcodes inválidos), missing age_group (metafield google.age_group=adult) y reporta los landing_page_error que requieren atención manual. Las imágenes pequeñas se delegan a merchant-upscale-images.ts.

Cómo funciona

1. Refresca un access token de Google con el refresh token OAuth.

2. Pagina TODOS los productstatuses de la Content API (merchant id 523471467) recogiendo itemLevelIssues.

3. Indexa los productos activos de Shopify y los matchea con Merchant por título (el offerId no contiene el shopify_id).

4. Agrupa shopify_ids por tipo de issue.

5. FIX A: Title Case (solo si el título es ≥60% mayúsculas; preserva acrónimos). FIX B: borra barcodes ambiguos (<8 dígitos, todo ceros, repetidos). FIX C: crea metafield google.age_group=adult. FIX D: detecta landing errors por stock 0 (solo log, no restock).

6. Imprime resumen + pendientes manuales conocidos (language_mismatch, imágenes <500px, vehicles_policy).

Datos/APIs

  • Google Content API v2.1 (productstatuses) + OAuth token refresh.
  • Shopify Admin API (2024-10): products (read), products PUT, variants PUT, metafields POST.
  • Vars .env: SHOPIFY_STORE, SHOPIFY_ACCESS_TOKEN, GOOGLE_CLIENT_ID, GOOGLE_CLIENT_SECRET, GOOGLE_REFRESH_TOKEN.
  • Constante en código: MID = 523471467 (merchant id).

Cómo probarlo

cd /Users/user/rifai-agents && npx tsx agentes/marketing/merchant-autofix-v2.ts

Espera: "Google token refreshed", nº de productstatuses auditados, conteo por issue, y los FIX A–D con cuántos aplicó. Escribe en Shopify (títulos/barcodes/metafields). No tiene DRY_RUN.

Si se rompe / recuperar

  • Sin plist. Si el token Google falla, revisar GOOGLE_REFRESH_TOKEN (puede haber caducado/revocado).
  • El match por título es frágil: si Merchant y Shopify difieren en título, ese producto se omite (es esperado).
  • Logs: stdout (redirigir a /Users/user/rifai-agents/logs/merchant-autofix-v2.log).

Cómo replicarlo

  • OAuth refresh contra oauth2.googleapis.com/token.
  • Recolección de productstatuses paginada (pageToken) + índice Shopify por título.
  • 4 fixes idempotentes con throttle.
  • Nota: v3 evolucionó esto para aplicar a TODOS los productos sin depender del match Merchant.