Carta 741 (dom 30-ago): 14 posts publicados — traducciones + audios (Hermes) #216
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Carta 741 (domingo 30-ago): FASE 1 publicada — material para Hermes
Evangelio de la semana: Mt 16, 21-27 («el que quiera venir en pos de mí, que cargue con su cruz»).
Mixbot
--parte1ejecutado el 25-ago: 14 posts publicados en producción (español), verificados en vivo.Textos — traducir EN/FR/IT/PT + audio (TTS)
IDs de texto (para TTS):
56198,56199,56201,56200,56202,56203,56204,56191,56192,56193,56194,56195,56196,56197Pagola (#56203): traducciones humanas adjuntas
Como cada semana, Pagola no se traduce a máquina: están los cuatro ficheros editoriales de Inma (
9r_2_eng,9r_3_fr,9r_4_it,9r_5_pt). De él solo hace falta el audio.⚠️ Aviso sobre el nº16 (post 56197), por si ya lo habíais leído
Mismo patrón que el nº10 de la 740, y esta vez el blindaje que pusimos entonces hizo su trabajo. El
.docxtraía el orden título / autor / entradilla, y el pipeline etiqueta por posición, así que se publicó con título «GERARDO VILLAR» y firma de Fe Adulta.publicabot.crear_autor()se negó a dar de alta la ficha porque el supuesto nombre medía 168 caracteres (era la entradilla), y avisó por consola. O sea que no se fabricó ninguna ficha basura: el post cayó al autor por defecto, que es un fallo visible y reparable en un minuto.Ya está corregido en origen (el
.docx) y en WordPress: título «SIN FUNERALES», firma Gerardo Villar (ficha 466, la suya de siempre) y slugsin-funeralesen vez degerardo-villar-2. Si algún proceso se llevó el título o el slug anteriores, conviene refrescarlo.Pendiente para la FASE 2
La multimedia de Carmenchu, las Noticias y la intro. Se comentará aquí, y el comentario de cierre llevará la lista definitiva generada por Mixbot a partir de lo que la carta enlaza de verdad (
00mix_carta_final.txt).Recordatorio de la 740, que ya va incorporado a Mixbot: las cartas de lectores (nº 27) se publican solo en español, sin traducción ni audio, y salen en su propio bloque de esa lista.
FASE 2 lista: carta compuesta y publicada (id 56290)
mixbot --vivoejecutado el 26-ago. Carta: https://www.feadulta.com/de-que-lado-estamos/ — «¿De qué lado estamos?», id 56290.Auditoría final limpia: 20 artículos en la carpeta, 20 compuestos, 0 caídos, 0 pendientes, 37 enlaces vivos, ninguno viejo ni en borrador. Categorías rotadas (56003 a «La semana pasada», 55694 al archivo).
Textos — traducir EN/FR/IT/PT + audio (15)
Son los 14 del lote de fase 1 más las Noticias de alcance, publicadas al componer:
Multimedia — traducir sí, audio NO (4)
Reutilizado — ya publicado y traducido, no necesita nada (7)
Mateo 16, 21-27 · Jeremías 20, 7-9 · Romanos 12, 1-2 · Ulibarri «Reconfigurar la vida» · Anáfora «Austeridad» · Salomé Arricibita «Ley sagrada» · Monjas Benedictinas de Montserrat.
⚠️ Aviso sobre las Noticias (post 56289), por si ya lo habíais leído
Otra vez la cabecera posicional, y otra vez el blindaje hizo su trabajo. El
.docxtraía título / subtítulo / cuerpo, sin línea de firma, así que el subtítulo cayó en el hueco del autor.crear_autor()se negó a dar de alta una ficha de 160 caracteres y el post quedó firmado por Fe Adulta (890) en vez de fabricar basura en el roster.Corregido en origen y en producción: firma Inma Calvo (1048, que es lo correcto para las Noticias de alcance) y el subtítulo restituido como primer párrafo del cuerpo, que es donde estaba en la 740. El título y el slug no cambian. Si algún proceso se llevó el autor anterior, conviene refrescarlo.
Van ya tres semanas seguidas con el mismo patrón —nº10 en la 740, nº16 y nº25 en la 741—, siempre por el orden de las líneas en el
.docx. La red de seguridad funciona, pero quizá merezca la pena que el pipeline avise en el momento de publicar cuando el campo «autor» no parece un nombre, en vez de dejarlo caer al autor por defecto en silencio. Lo comentamos si os parece.Estado
La carta está publicada y en portada. El máster del newsletter sale hoy por BREVO.
Hecho por nuestro lado: la cabecera ya no se etiqueta a ciegas por posición
Sobre lo que comentaba en el mensaje anterior —tres semanas con el mismo patrón (nº10 de la 740; nº16 y nº25 de la 741)—, queda resuelto en origen. Cambiado hoy
articulo_edits.py, que es la fase previa que convierte el.docxposicional al formato EML antes de publicar.Qué hace ahora
1. Identifica la firma contra el roster. Antes de etiquetar nada, compara las primeras líneas de la cabecera con los 1.227 autores dados de alta en WP (normalizando tildes y puntuación). Si una casa, esa es la firma y el resto se recoloca alrededor, venga en el orden que venga el documento. Los genéricos de la casa —«Fe Adulta», «Ediciones Feadulta», «Elaboración propia»— quedan excluidos a propósito: no identifican a una persona y casarían con cualquier línea.
Con el
.docxdel nº16 acierta solo: reconoce «Gerardo Villar» en la segunda línea, deduce que el título es la primera y la entradilla la tercera, y lo anota.2. Si no reconoce a nadie, desconfía. Sigue por posición, pero valida que lo que cae en el sitio del autor parezca una firma (mismo criterio que
publicabot.nombre_de_autor_plausible). Si no lo parece, esa línea vuelve al cuerpo —de donde salió, que suele ser un subtítulo— y el autor queda como[Autor — completar].Esto último arregla el daño colateral del nº25: al tragarse el subtítulo como si fuera la firma, el post se publicó sin esa frase de entrada. Ahora se queda donde estaba.
3. Y se ve. El marcador aparece en el
.docx, en00mix_parte1_ids.txt, en00mix_carta_final.txty en consola con un[ALTO]. Se acabó el caer al autor por defecto en silencio.Probado
Cuatro
.docxfabricados con los patrones reales:Lo que sigue sin cubrir
Un autor nuevo, que no esté aún en el roster, y que además mande el documento sin línea de firma. Ahí no hay heurística que valga: seguirá necesitando una mano. La diferencia es que ahora se ve en el momento en vez de descubrirse tres días después leyendo la lista definitiva.
Con esto, la mejora que sugería para vuestro lado pierde urgencia. Si aun así os parece útil que el pipeline lo cante también al publicar —o que deje el post en borrador cuando el autor sale como
[Autor — completar]—, decidnos y lo vemos; pero el fallo ya no debería llegar hasta ahí.Handoff técnico — matriz real Carta 741 / #216 (solo lectura, 2026-08-26)
He auditado la carta final #56290 «¿De qué lado estamos?» contra el WordPress de producción y el espejo local. No se ha modificado producción ni el entorno local.
1) La carta ya está compuesta, pero los derivados no están publicados
En producción, la carta #56290 está
publishy su parser real devuelve el cluster esperado. Sin embargo, los 15 textos nuevos siguen solo en ES, sin grupo Polylang EN/FR/IT/PT y sin TTS/metas de audio:Para los 15:
0/15con EN/FR/IT/PT publicados;0/15confea_audio_done=1;0/15confea_audio_sha256.2) Multimedia y reutilizados: hallazgo del “último multimedia”
El parser de la carta no tiene cuatro sino cinco entradas multimedia:
56285–56288) están solo en ES; son traducción sí / TTS no, como especifica #216.19121también está solo en ES, sin grupo Polylang. Es el candidato que encaja con el “último multimedia” pendiente. No tiene TTS y no debe generársele.Además, dos reutilizados de Eucaristía que el comentario declaraba ya traducidos no tienen grupo Polylang actualmente:
5311(«Reconfigurar la vida») y2020(«Austeridad»). No los incluyo automáticamente en un release: antes hay que decidir si deben recibir traducción o si el fallback ES es intencional.3) Carta madre
La carta #56290 existe solo en ES y no tiene audio. Falta preparar sus cuatro traducciones; este handoff deja anotado que Rafa pide también TTS para la carta, pero se debe confirmar el alcance final antes de sintetizar (las cartas anteriores no siempre llevaron audio).
4) Estado del espejo local
El entorno local no contiene material listo para que otro operador lo suba:
56289,56285–56288ni la carta56290;5) Próximo trabajo, en orden y sin tocar prod
19121,5311y2020.draft; Pagola #56203 requiere comparación A/B de sus cuatro DOCX humanos contra candidato Haiku (especialmente IT), no importación ciega.ffprobe+ transcripción post-síntesis + SHA-256.fea_audio_sha256al publicar.No ejecutar un release desde el estado actual: faltan las fuentes locales y los derivados locales que constituirían ese release.
Fuentes: comentario Fase 2 de #216 + auditoría server-side Polylang/meta/TTS + parser
fea_parse_carta_sections(56290)+ espejo Docker local.Carta 741 — cerrada y publicada en producción (2026-08-26)
Resumen para Inma / referencia futura:
Qué pasó: Hermes había empezado a traducir la carta 741 con un esquema de IDs propio (no coincidía con prod) y perdió el hilo del estado real (su handoff decía "0/15 con traducciones" cuando en realidad 2 de 14 sí tenían traducción). Se limpió ese trabajo parcial en local (con inventario/backup previo, nada perdido) y se rehizo desde cero con el método de siempre (
sync_carta_from_prod.py, IDs preservados) + traducción con Claude Haiku (no Gemma, por velocidad, autorizado puntualmente por Rafa).Estado final en producción:
¿De qué lado estamos?(#56290) y sus 6 artículos de la semana, publicados en ES/EN/FR/IT/PT._carta_id, así que el script de publicación automática no las veía — se publicaron a mano por ID, verificado 0 errores).Regla de alcance del TTS, aclarada y documentada (confusión real durante este trabajo — para que no se repita):
tts_produce.py); nunca un audio combinado de toda la carta.multimedia.docs/guia-tts-traduccion-inma.md§4 y enprocedures.md§1 paso 8 (la guía que consulta Hermes).Cierro este issue como resuelto salvo que Rafa/Inma detecten algo pendiente.