diff --git a/indexacion-parte.service b/indexacion-parte.service deleted file mode 100644 index ea32812..0000000 --- a/indexacion-parte.service +++ /dev/null @@ -1,18 +0,0 @@ -[Unit] -Description=Parte de indexación por Telegram — seguimiento del arreglo del 2026-08-17 -Documentation=file:///home/chemavx/seo-tools/indexacion_parte.py -After=network-online.target -Wants=network-online.target - -[Service] -Type=oneshot -User=chemavx -WorkingDirectory=/home/chemavx/seo-tools -Environment=HOME=/home/chemavx -Environment=KUBECONFIG=/home/chemavx/.kube/config -Environment=PATH=/home/chemavx/.local/bin:/home/chemavx/.nvm/versions/node/v24.14.1/bin:/usr/local/bin:/usr/bin:/bin -ExecStart=/usr/bin/python3 /home/chemavx/seo-tools/indexacion_parte.py -TimeoutStartSec=600 - -[Install] -WantedBy=multi-user.target diff --git a/indexacion-parte.timer b/indexacion-parte.timer deleted file mode 100644 index 39abd78..0000000 --- a/indexacion-parte.timer +++ /dev/null @@ -1,14 +0,0 @@ -[Unit] -Description=Parte de indexación, 07:00 UTC (09:00 en España) - -[Timer] -# Temporal y con caducidad puesta: el script deja de avisar solo pasado el -# 2026-08-24. Sigue informando cada mañana mientras quede algún artículo sin -# indexar, porque Google sirve las solicitudes por tandas y un solo disparo -# habría cazado una foto a medias. -OnCalendar=*-*-* 07:00:00 UTC -Persistent=true -RandomizedDelaySec=120 - -[Install] -WantedBy=timers.target diff --git a/indexacion_parte.py b/indexacion_parte.py deleted file mode 100644 index a9a568f..0000000 --- a/indexacion_parte.py +++ /dev/null @@ -1,121 +0,0 @@ -#!/usr/bin/env python3 -"""Parte de indexación por Telegram — seguimiento del arreglo del 2026-08-17. - -De un solo uso, con fecha de caducidad puesta. El 2026-08-17 se descubrió que -seis artículos del blog EN llevaban hasta dos semanas publicados sin que Google -los hubiera rastreado siquiera («URL is unknown to Google»); ver -~/.claude/…/memory/feedback_indexacion_se_comprueba_no_se_deduce.md. - -Esa noche se pidió indexación a mano de los seis y se reenviaron los sitemaps. -Este script comprueba a la mañana siguiente si han entrado y lo cuenta por -Telegram, porque el marcador semanal NO mide esto: mide impresiones, y un post -que Google no conoce no tiene impresiones que medir. - -Se apaga solo: pasada FIN deja de avisar (ver `caducado`). Para quitarlo del -todo: systemctl disable --now indexacion-parte.timer -""" -import datetime as dt -import sys - -sys.path.insert(0, "/home/chemavx/seo-tools") -import seo_gsc as G # noqa: E402 (telegram/token/credencial ya resueltos ahí) - -import requests # noqa: E402 - -# Los seis del arreglo, en el orden en que se publicaron. -EN = [ - ("the-wilson-davis-memo-inside-a-pentagon-officials-blocked-access-to-" - "americas-ufo-reverse-engineering-program", "wilson-davis"), - ("hundreds-watched-in-broad-daylight-the-westall-ufo-mystery-that-" - "australia-still-cant-explain", "westall"), - ("pursue-release-5-2026-1948-memo-redacted-uap-videos", "release-5"), - ("uap-nuclear-bases-six-decades-incursions", "uap-nuclear-bases"), - ("project-blue-book-declassified-ufo-files", "blue-book"), - ("the-mj-12-documents-a-forty-year-forgery-mystery", "mj-12"), - ("shag-harbour-1967-canada-government-documented-ufo-crash", "shag-harbour"), -] -ES = [("teheran-1976-cazas-f-4-ovni", "teheran")] - -# A partir de aquí el seguimiento deja de tener sentido: o entraron, o el -# problema es otro y toca mirarlo a mano, no seguir mandando partes. -FIN = dt.date(2026, 8, 24) - - -def estado(tok, site, slug): - """Veredicto de Google, no deducción nuestra. Devuelve (icono, texto).""" - base = ("https://www.theexclusionzone.com/" if site == "en" - else "https://zonadeexclusion.com/") - r = requests.post( - "https://searchconsole.googleapis.com/v1/urlInspection/index:inspect", - headers={"Authorization": f"Bearer {tok}"}, timeout=60, - json={"inspectionUrl": f"{base}{slug}/", - "siteUrl": G.SITIOS[site]["propiedad"]}) - if r.status_code != 200: - return "❓", f"error {r.status_code}" - i = r.json()["inspectionResult"]["indexStatusResult"] - cob = i.get("coverageState", "?") - if i.get("verdict") == "PASS": - return "✅", "indexado" - if cob.startswith("Crawled"): - return "🟡", "rastreado, sin indexar" - if cob.startswith("Discovered"): - return "🔵", "descubierto, sin rastrear" - return "⏳", "Google no lo conoce" - - -def sitemaps(tok, site): - import urllib.parse as up - prop = G.SITIOS[site]["propiedad"] - r = requests.get( - "https://searchconsole.googleapis.com/webmasters/v3/sites/" - f"{up.quote(prop, safe='')}/sitemaps", - headers={"Authorization": f"Bearer {tok}"}, timeout=30) - if r.status_code != 200: - return [] - return [(s["path"].rsplit("/", 1)[-1], (s.get("lastDownloaded") or "—")[:10]) - for s in r.json().get("sitemap", [])] - - -def main(): - hoy = dt.date.today() - if hoy > FIN: - print(f"caducado ({FIN}); no se manda parte") - return 0 - - tok = G.token(G.carga_credencial()) - L = [f"🔎 Indexación — parte del {hoy:%d/%m}", ""] - - pendientes = [] - for site, lista, cab in (("en", EN, "INGLÉS"), ("es", ES, "ESPAÑOL")): - L.append(f"── {cab}") - ok = 0 - for slug, corto in lista: - ic, txt = estado(tok, site, slug) - if ic == "✅": - ok += 1 - else: - pendientes.append(corto) - L.append(f" {ic} {corto} — {txt}") - L.append(f" {ok} de {len(lista)} indexados") - L.append("") - - L.append("── SITEMAPS (última lectura de Google)") - for site, cab in (("en", "EN"), ("es", "ES")): - for nombre, fecha in sitemaps(tok, site): - L.append(f" {cab} {nombre}: {fecha}") - L.append("") - - if pendientes: - L.append("Si alguno lleva más de 48 h sin moverse, vuelve a pedirle " - "indexación en Search Console — el límite diario da de sobra.") - else: - L.append("Todo dentro. Nada que hacer, y este parte ya no hace falta:") - L.append("systemctl disable --now indexacion-parte.timer") - - texto = "\n".join(L) - print(texto) - return 0 if G.telegram(texto) else 1 - - -if __name__ == "__main__": - sys.exit(main())