hreflang: convertirlo en regla del auditor y en paso del remate
Hasta ahora el hreflang era un estado —puesto una vez a mano— y no una regla. Un slug que cambiara habría dejado el enlace apuntando al artículo viejo sin que nada avisara. El auditor gana dos reglas: hreflang.missing (pareja declarada sin bloque) y hreflang.stale (bloque que ya no coincide con la pareja). Viven en seo_hreflang y no en seo_rules porque necesitan hreflang-parejas.md, que es una decisión editorial curada; el motor sigue sin saber que hay parejas. Probadas en los cinco estados, no solo en el feliz: dispara sin bloque, dispara con el bloque apuntando a un slug viejo, y se calla cuando está correcto, cuando el post no es de ninguna pareja y cuando aún es borrador. Y el remate gana el paso 3c: buscar el espejo en el otro idioma y dejarlo en el informe. Con la advertencia explícita de decidir por TÍTULO y no por vector, y las dos reglas duras — solo espejos publicados, y uno a uno.
This commit is contained in:
+9
-1
@@ -27,6 +27,7 @@ from collections import Counter
|
||||
|
||||
import seo_rules as R
|
||||
import seo_exceptions as X
|
||||
import seo_hreflang as HL
|
||||
|
||||
|
||||
def partition(post, violations, site="en"):
|
||||
@@ -102,9 +103,16 @@ def main():
|
||||
# el ES contaría cero enlaces internos en los 31 posts.
|
||||
R.usar_sitio(args.site)
|
||||
|
||||
# Las parejas espejo son una decisión editorial curada, no una regla del
|
||||
# motor: el auditor las inyecta y seo_rules sigue sin saber que existen.
|
||||
try:
|
||||
parejas = HL.lee_parejas()
|
||||
except OSError:
|
||||
parejas = []
|
||||
|
||||
results = [] # (post, actionable, accepted, info, score)
|
||||
for p in posts:
|
||||
v = R.check_post(p)
|
||||
v = R.check_post(p) + HL.violaciones(p, args.site, parejas)
|
||||
actionable, accepted, info = partition(p, v, args.site)
|
||||
# score ranks worst-first on ACTIONABLE severity only — accepted waivers
|
||||
# and INFO don't push a post up the list.
|
||||
|
||||
Reference in New Issue
Block a user