3 Commits
Author SHA1 Message Date
ChemaVXandClaude Opus 5 1f07e88c12 infografía: el verificador no veía un cargo falso, y por ahí salió a la imagen
La infografía de Socorro salió con «Lt. Colonel Hector Quintanilla» cuando
el artículo dice «Major» las cinco veces que lo nombra. El rango NO lo
inventó el modelo que maqueta: venía en el guion, y el verificador lo dejó
pasar por dos motivos independientes.

1. RE_ARRANQUE veía el punto de «Lt.» y daba por hecho que «Colonel» iba en
   mayúscula por empezar frase, así que la eximía de comprobar. La única
   palabra capaz de cazar el error era justo la que se saltaba. Ahora una
   lista de abreviaturas conocidas anula esa exención.

2. _en_articulo comparaba por SUBCADENA: «Lt» daba positivo por estar dentro
   de built, adults y consultant. Pasa a exigir frontera de palabra por la
   izquierda — se conserva la laxitud por la derecha para que «Zamora's» del
   artículo siga casando con «Zamora» del guion.

Y se añade la comprobación que faltaba, cargos_fuera(): los cargos y rangos
se verifican en FRASE ENTERA. El fallo real no fue una palabra inventada
sino una COMBINACIÓN falsa de dos palabras que sí estaban por separado, y
eso un verificador token a token no puede verlo nunca.

Medido antes de dejarlo puesto, sobre los DOS guiones reales de hoy (156
líneas): caza la avería, deja pasar la versión corregida, y cero falsos
positivos de cargo. Por el camino de producción, filtra() tira solo las dos
frases que llevan el rango malo y no toca el resto.

Once tests. Incluye los dos lados: que pode lo que debe y que NO pode lo
que no debe, porque un verificador que se pasa deja el guion cojo y obliga a
rehacerlo a mano.

También: hreflang-parejas.md con los slugs nuevos de los dos remates de hoy
(socorro-1964-zamora-ufo-landing y cash-landrum-1980-demanda-ovni-tribunal-federal),
corregidos por el propio agente del remate al leer la nota que lo pedía.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-30 13:36:34 +00:00
ChemaVXandClaude Opus 5 0580357333 infografia_brief: slug y sitio opcionales
Escribir un slug de 40 caracteres y acordarse del --site era casi toda la
fricción de la herramienta, y el caso normal es siempre el mismo: quiero la
infografía del borrador que acabo de terminar.

    infografia            → el borrador más recién tocado de los dos sitios
    infografia --lista    → los enumera, con si tienen imagen ya o no
    infografia <slug>     → busca en los dos sitios; los slugs no se repiten
                            entre blogs, así que no hay ambigüedad posible
    infografia <URL>      → el sitio sale del dominio (pegada del navegador)

--site sigue existiendo, ahora solo para desambiguar o para acotar la búsqueda
de borradores a un blog.

Solo se ofrecen borradores al elegir automáticamente: un post publicado ya
tiene su imagen, y pedir el guion de uno publicado es la excepción, para la que
está pasar el slug o la URL a mano.

_post_list vuelca a fichero y no a PIPE, copiando el patrón de seo_watch y
remate_watch: un PIPE se trunca a 64 KB en silencio y con --formats html los
cuerpos son largos.

Verificado: las dos formas de URL (EN en www, ES en apex) resuelven su sitio,
el slug suelto encuentra el blog correcto, el slug inexistente sale con un
error claro, y la selección automática coge el más reciente y avisa de cuántos
más hay. El caso "no hay borradores" sale limpio en vez de reventar.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-27 14:28:32 +00:00
ChemaVXandClaude Opus 5 8d1ffa4f6d infografia_brief: guion verificado para la infografía de un post
Las tres infografías falladas del 27-jul no fallaron al dibujar, fallaron al
decidir qué era cierto. ChatGPT tenía el artículo anterior en el contexto de la
conversación y coló la ficha de Vilas-Boas dentro de la infografía de Talavera,
y los 84 expedientes del Ejército del Aire español dentro de la de Vilas-Boas.
En una llegó a inventarse un dominio, bibliotecavirtual.defesa.gov.br, que no
existe: una brasileñización del español, a un clic de publicarse.

La respuesta no es pedirle al modelo que se porte bien, es no dejarle decidir.
El guion se extrae del artículo (claude -p, coste cero) y se VERIFICA contra el
propio artículo antes de que ChatGPT vea nada. A ChatGPT le llega "maqueta este
texto", no "lee esto y decide qué es cierto".

Decisiones que no son de adorno:

- La verificación es regex sobre el artículo, sin modelo de por medio. Un
  modelo autoevaluándose es exactamente lo que ya falló tres veces.
- Tres severidades, sacadas de cómo falló esto en la vida real: nombre propio
  fuera del artículo se cae, URL fuera del artículo se cae sin excepciones, y
  cifra que no aparece literal solo avisa. Lo tercero porque el artículo dice
  "mil novecientas páginas" donde el guion escribe "1.900", y tumbar eso
  automáticamente daría más falsos positivos que aciertos. Los nombres propios
  fueron el 100% de la contaminación observada.
- Los títulos de panel NO se verifican: "DATOS DEL CASO" es una etiqueta
  editorial, no una afirmación sobre el caso, y no tiene por qué aparecer en el
  artículo. Verificarlos hacía caer todos los paneles y el informe se volvía
  inservible.
- Una mayúscula en inicio de frase no cuenta como nombre propio, o cualquier
  viñeta que empiece por verbo ("Llegan…", "Comienza…") sale marcada como
  forastera. Las siglas (SBEDV, APRO, OVNI) sí se persiguen en cualquier
  posición: son marcador de contaminación.
- Se compara plegando minúsculas y tildes. El modelo escribe "Neron" donde el
  artículo dice "Nerón" y eso no es contaminación; la de verdad son palabras
  que no están en el artículo de ninguna forma.
- El idioma lo fija --site, no se adivina del texto: es un dato duro que no se
  equivoca, y el idioma del guion arrastra el de la imagen.

Verificado con la avería real, no con un caso de laboratorio: al guion
contaminado de Talavera se le caen Vilas-Boas, Martins, Fontes, Bühler, SBEDV,
Creighton, São Francisco de Sales y el dominio inventado, y se eliminan enteros
los dos paneles que se quedan sin viñetas, mientras los legítimos sobreviven
sin un solo falso positivo. Sobre los dos artículos publicados hoy, extrayendo
de cero: 0 descartes y 0 avisos en ambos, guion inglés íntegro en inglés y
español íntegro en español.

Solo lectura sobre Ghost: no toca el post, no publica, no genera imágenes.
El wrapper ~/.local/bin/infografia queda fuera del repo, como seo-check.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-27 14:20:15 +00:00