ChemaVXandClaude Opus 5 f4121d11bb hreflang: curadas las 5 parejas de agosto, y el aviso que no se podía atender
El NIVEL C decía «nada convincente» en belgium, jal-1628 y libro azul, pero eso
era del escáner de vectores: el espejo ES existe y está en la cola de agosto,
no publicado cuando se escaneó. Abiertos los dos lados de cada uno:

  SÍ  Bélgica 89-90    mismas noches (Eupen, 30/31-mar), Petit-Rechain, SOBEPS
  SÍ  JAL 1628         mismo vuelo del 17-nov-86, Terauchi, Callahan y la FAA
  SÍ  Libro Azul       mismo programa y mismas cifras (12.618 / 701)
  SÍ  Colares 1977     misma isla, Operação Prato, testimonio de Hollanda
  SÍ  Teherán 1976     misma madrugada, los dos F-4, el documento de la DIA
  NO  bases nucleares  el EN son DOS casos (Malmstrom y Rendlesham); el ES es la
                       apertura de PURSUE y CINCO bases. Solo comparten Malmstrom

Libro Azul es el que enseña dónde está la línea: los apartados NO coinciden y
aun así es SÍ, porque el SUJETO de los dos es el mismo programa histórico. En
AARO el sujeto del ES era la confrontación con Grusch, y por eso es NO. Y las
bases nucleares traen la lección de AARO repetida: coincidían hasta en el
recuento —1.264 palabras exactas los dos— y no son el mismo artículo. Un número
que cuadra no es prueba de equivalencia.

Declararlas destapó un falso positivo: `violaciones()` solo miraba que ESTE
lado estuviera publicado, así que los tres EN ya publicados con el ES aún
programado salieron como hreflang.missing, recetando un `aplicar` que se niega
—y con razón— porque apuntaría a una URL que no existe. Ahora exige los dos
lados publicados. Un aviso que no se puede atender es ruido, y el ruido acaba
con que nadie mire el informe.

Auditores 42 y 40 limpios, seo-watch sin hallazgos.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-29 09:04:32 +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%