El pase automático de títulos y metas no toca el cuerpo de los artículos, así
que el último Title Case del ES —«La conclusión oficial: Clasificación Tipo
D»— se corrigió a mano editando el lexical. No deja rastro en el repo: el
cambio vive en la BD de Ghost y el pristine solo guarda lo que había antes,
igual que en el registro de enlaces del 28 de julio (9823255).
Queda anotado qué se cambió, por qué «Tipo D» se conserva (es la etiqueta de
la Nota Técnica 16 del GEPAN, no estilo inglés) y la comprobación que hace
seguro un reemplazo global sobre 17.544 bytes: el texto aparecía una sola vez
antes de escribir, y la longitud no cambió después.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Los encabezados llevaban limpios desde el 21 de julio, pero la regla solo
miraba <h2>/<h3>/<h4>: 28 de los 31 títulos publicados del ES seguían en
Title Case inglés, con sus meta_title, og_title y twitter_title detrás. Es
justo lo que el lector español lee en Google.
seo_case.py reescribe, y no reutiliza el detector tal cual porque no vale
para esto: `_title_case_words` decide con una sola prueba —«¿la he visto en
minúscula alguna vez?»— y eso deja fuera los verbos que solo viven en
titulares («Ocultan», «Conmocionó», «Penetró») y las palabras de dos letras,
que ni entran en el vocabulario. La primera versión devolvía títulos a medio
arreglar y rompía «Talavera la Real» y «vuelo Iberia». Ahora se decide con
dos pruebas —nunca en minúscula Y en mayúscula a media frase— más una lista
de palabras gramaticales, y las frases propias se enmascaran conservando las
posiciones para reescribir por desplazamiento sobre el original.
Decisión de Jose: «Ejército», «Gobierno» y demás instituciones conservan la
mayúscula; «Archivos» baja salvo en «Los Archivos PURSUE», que se protege
por frase porque ahí se distingue por contexto, no por palabra suelta.
check_title_case cierra el agujero en seo_watch. Simulado el ciclo entero
antes de tocar nada: 78 hallazgos → 16 tras el pase automático → 0 con la
decisión aplicada. Aplicado y verificado releyendo Ghost campo a campo (91
de 91), con backup pristine por post en ~/link-batch-backup.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>