1
Ciclo carta nueva
rafa edited this page 2026-06-17 21:05:06 -04:00
This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

Ciclo por cada carta semanal nueva

Flujo recurrente que se dispara cuando se publica una carta nueva en Joomla (feadulta.com, ew4r_content catid 27/40/41, state=1).

Repo: /home/rafa/joomla-migration/. WP local: contenedores Docker wordpress-web / wordpress-mysql.

Pasos

1. Migrar el delta a WP local (carta + sus artículos K2)

  • python3 scripts/import_new_k2_items.py — artículos (LAST_K2_ID y wp_id dinámicos, sin offset).
  • python3 scripts/import_new_cartas.py — carta + _carta_id por fecha, detección dinámica de wp_id.
  • Scripts corregidos 2026-06-17: eliminado el offset fijo +26040, LAST_* dinámicos, LAST_INSERT_ID()MAX(ID), pass SSH actualizada, mysql --skip-ssl. fix_imported_k2_metas.py es redundante (no usar).

2. Revisión en local

Revisar antes de tocar producción.

3. Desplegar el delta ES a prod

Con el OK de la revisión.

4. Traducción (EN/FR/IT/PT) del contenido nuevo

Para carta nueva: usar Haiku directo (rápido + calidad), NO Gemma.

FEA_ENGINE=haiku python3 scripts/translate_post.py --carta <ID> --langs en,fr,it,pt --status draft
  • El flag FEA_ENGINE=haiku (añadido a translate_post.py el 2026-06-17) enruta a translate_haiku.translate(), envía el artículo entero sin trocear (contexto 200k) y registra el modelo claude-haiku-4-5.
  • API key en /home/rafa/portfolio-tracker/.env.
  • Idempotente (state en /tmp/feadulta-translate-state.json), salta posts no-ES y traducciones ya existentes.
  • Coste ~0.60.8 € por carta (~60 traducciones).
  • Artículos que ya vienen en varios idiomas desde Joomla se importan como posts sueltos sin enlace Polylang → hay que enlazarlos como grupo de traducción (pll_save_post_translations).

4b. OBLIGATORIO tras traducir: arreglar enlaces internos de la carta

El cuerpo de la carta trae enlaces Joomla legacy relativos es/buscadoravanzado/item/<k2_id>-<slug>.html que no funcionan (al verlos en /fea/en/... el navegador los resuelve como relativos y redirige a /fea/en). Están rotos también en la ES.

fix_carta_links.php NO sirve para esto (ignora .html y solo toca posts con localhost:8081). Usar:

# dry-run
docker exec -e CARTA=<id> wordpress-web php /tmp/fix_carta_joomla_links.php
# aplicar (backup en /tmp/fix_carta_links_bak/)
docker exec -e APPLY=1 -e CARTA=<id> wordpress-web php /tmp/fix_carta_joomla_links.php

scripts/fix_carta_joomla_links.php (creado 2026-06-17) mapea cada item/<id> por la meta _fgj2wp_old_k2_id → permalink WP del artículo en el idioma de cada carta (la ES + sus 4 traducciones, vía pll_get_post_translations). Quedan sin mapear los enlaces a contenido no migrado (secciones tablon-de-anuncios/noticias-de-alcance, ítems fuera del delta, multimedia) — se dejan intactos.

5. TTS (audio voz Nico, MiniMax HD)

Con prioridad sobre el contenido antiguo del gap: locutar primero la carta nueva y sus artículos antes de seguir vaciando la cola histórica. Requiere ajustar el orden de cola en scripts/tts_produce.py (hoy tiene el gap hardcodeado). Enlazar fea_audio_url / fea_audio_done y subir el mp3 a prod.

Notas operativas

  • TTS: el plan MiniMax rinde ~6 audios por ventana de cuota (rc=2056 al agotarse, se resetea en horas); rc=1039 = rate TPM por minuto (mitigado con pausa de 35s entre trozos de cartas largas, FEA_CHUNK_PAUSE). Para acelerar de verdad: comprar créditos MiniMax.
  • Artículos de evangelio nuevos: les falta _cita_evangelio (shortcodes de evangelio) — asignar si procede.
  • Los IDs ES coinciden local↔prod (clave para el sync de traducciones).

Historial

  • 2026-06-17 — Carta 46956 «Entre todos»: delta migrado, carta publicada (issue #87, era timezone future), cluster multiidioma 4695146955 enlazado, 60 traducciones Haiku en draft (0 errores), 100 enlaces internos arreglados en las 5 cartas.