ChemaVXandClaude Opus 5 896d723f15 seo_gsc: el marcador — datos reales de Search Console
Toda la caja de herramientas miraba hacia dentro (enlaces, sitemap, reglas de
metas): decía si el sitio está bien construido, no si alguien lo encuentra. Los
únicos datos de resultado en la máquina eran una exportación manual del
2026-06-17, anterior al remate de metas del 23 de junio — o sea, cuarenta días
optimizando sin saber el resultado.

Cuenta de servicio en vez de OAuth, porque aquí no hay navegador (misma piedra
que con Gemini). Sin librerías de Google: el JWT se firma con PyJWT y se canjea
a mano, treinta líneas en lugar de media docena de dependencias.

Lo que de verdad aporta es `informe`: la lista de páginas que POSICIONAN Y NO
SE PINCHAN, con los clics que faltan si el CTR fuese el normal de su posición.
Y `antes-despues`, escrito para responder de una vez si el remate del 23-jun
sirvió: la API guarda 16 meses, así que el histórico está disponible desde el
primer minuto y no hay que esperar semanas para comparar.

Probado lo que se puede probar sin credencial: firma RS256 emitida y verificada
con su pública, los dos caminos de fallo de la credencial (ausente y con
permisos flojos), y la lógica de análisis contra datos sintéticos calcados del
caso Nimitz real (pos 6,44 / 2.452 impresiones / 0,16% CTR), que sale marcada
con +111 clics de hueco mientras la página sana no se marca.

El timer queda instalado y PARADO: sin credencial fallaría cada lunes, y un
timer que falla siempre enseña a ignorar los avisos.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-27 20:36:45 +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%