← Volver al catálogo

🌍 Pre-generate Translations (traducciones DE/FR/EN)

Archivo: agentes/marketing/pregenerate-translations.ts · Plist: _(ninguno)_ · Horario: Manual / one-shot (proceso largo)

Qué hace

Pre-genera con IA las traducciones a alemán, francés e inglés (título + descripción HTML) de TODOS los productos activos y las guarda en JSON local, sin subirlas a Shopify. Es la fase de preparación para resolver el issue language_mismatch de Merchant: cuando el usuario añada el scope write_translations a la app, push-translations.ts sube todo en ~1 minuto. Es idempotente: salta productos que ya tienen las 3 traducciones completas.

Cómo funciona

1. Carga .env y pagina productos activos.

2. Por producto comprueba si ya existe data/translations/{id}.json con title+body en de/fr/en; si está completo, lo salta.

3. claudeTranslate() invoca el binario claude (/Users/user/.local/bin/claude) con un system prompt de traductor e-commerce/SEO que conserva marcas, códigos de modelo y specs; traduce título y body por idioma.

4. Escribe/actualiza el JSON por producto. Pausa cada 10 productos para no saturar la API.

Datos/APIs

  • Shopify Admin API (2024-10): products read.
  • claude CLI local (/Users/user/.local/bin/claude) para traducir.
  • Vars .env: SHOPIFY_STORE, SHOPIFY_ACCESS_TOKEN.

Cómo probarlo

cd /Users/user/rifai-agents && npx tsx agentes/marketing/pregenerate-translations.ts

Espera: por cada producto [i/N] <título> con ✓de ✓fr ✓en (o ✗ si falla) y al final el total pre-traducido + ruta data/translations/. No escribe en Shopify, solo genera JSON. Tarda mucho (3 llamadas LLM por producto); se puede cortar y reanudar (idempotente).

Si se rompe / recuperar

  • Sin plist. Al ser reanudable, basta con re-ejecutar: continúa donde lo dejó.
  • Si claude CLI no está en /Users/user/.local/bin/claude, las traducciones salen vacías.
  • Logs: stdout (redirigir a /Users/user/rifai-agents/logs/pregenerate-translations.log).
  • Salida: data/translations/{productId}.json.

Cómo replicarlo

  • Paginación de productos + un JSON por producto como caché reanudable.
  • system prompt de traducción que preserva marcas/modelos/specs.
  • Separación generar (este) / subir (push-translations.ts) para no depender del scope write_translations.