ChemaVXandClaude Opus 5 d1d8549089 remate: modo corto para el post que solo ha perdido el alt
Sustituir la imagen destacada en Ghost BORRA feature_image_alt: el campo va
atado a la imagen, no al post. El vigilante volvía a considerar candidato al
post y, como no distinguía casos, iba a relanzar el remate COMPLETO para
rellenar 191 caracteres: revisión editorial otra vez, el enlazador sobre un
artículo que ya tenía sus cuatro enlaces, posible cambio de slug —que rompe
la pareja de hreflang recién declarada— y otra sesión entera del plan, el
mismo día en que la cuota ya se había agotado una vez.

solo_falta_alt() distingue el caso y build_prompt() sirve un encargo de 2.248
caracteres en vez de 7.237, que además PROHÍBE tocar texto, slug, metas,
excerpt, tags y enlaces: ahí cualquier cambio es una regresión, no una
mejora. El modo va en el nombre del log y en la cabecera de Telegram, porque
al revisar por qué cambió un post lo primero que quieres saber es cuál corrió.

Escribe el alt por el MISMO camino que el modo largo (seo_finish prep → Read
de la imagen → seo_finish apply), así que no hay una segunda forma de
escribirlo que pueda derivar de la primera.

Once tests, y los que importan son los del falso positivo: un post recién
creado NO debe entrar por el corto (se quedaría sin remate y parecería
hecho), ni uno con el remate interrumpido a medias (meta_title sin
meta_description).

Verificado por el camino real sobre un borrador canario en el estado exacto
—imagen y metas puestas, sin alt—: eligió el modo alt, escribió 189/191
caracteres describiendo la imagen, y de doce campos comparados NO tocó
ninguno; el cuerpo quedó literalmente idéntico. Canario borrado después.

Y hub-en/hub-es con los dos artículos publicados hoy (Socorro 1964 y
Cash-Landrum ES), que seo_estado cazó fuera del índice a los minutos de
publicarse.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-30 13:58:55 +00:00

seo-tools

SEO rule engine + tooling for the Ghost blogs (EN: theexclusionzone.com).

  • seo_rules.py — shared rule engine (pure functions, no I/O). Single source of truth for thresholds + checks. Consumed by the auditor, the validator, and (vendored) by ResearchOwl's blog pipeline.
  • seo_audit.py — Tool A: site-wide auditor (reads all published posts via ghst-en).
  • seo_validate.py — Tool C: single-post pre-publish validator (seo-check wraps this).
  • seo_exceptions.py — documented, consciously-accepted waivers (auditor reporting filter).
  • seo_mirror.py — OG/Twitter mirroring helper.
  • phase2_*.py/json — one-off batch helpers (kept for provenance).

No secrets live here. Ghost access is via the ghst-en wrapper (~/.local/bin), which fetches a staff token on demand from the pod and never writes it to disk.

S
Description
No description provided
Readme
683 KiB
Languages
Python 100%