Add pre-publish SEO checklist to Ghost draft Telegram notice (deploy pending)
Build & Deploy ResearchOwl / build-and-push (push) Successful in 2m31s

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
ChemaVX
2026-06-24 07:40:20 +00:00
co-authored by Claude Opus 4.8
parent cd557a2d71
commit b6dc5192b8
+14
View File
@@ -278,6 +278,18 @@ def _strip_researchowl_header(content: str) -> str:
return content return content
def _seo_checklist(slug: str) -> str:
"""Static pre-publish SEO reminder appended to the draft-published notice.
NOT a validator call: the fresh draft has no meta yet, so checking now would
be all-fail noise. Jose runs `seo-check <slug>` after filling these in."""
return (
"\n\n⚠️ Antes de publicar, añade: meta title, meta description (≤145), "
"custom excerpt, OG/Twitter, feature image + alt, 2-3 internal links "
"(donde sea natural)\n"
f"Luego valida: seo-check {slug}"
)
class GhostPublisher: class GhostPublisher:
def __init__(self, lang: str = "es"): def __init__(self, lang: str = "es"):
if lang == "en": if lang == "en":
@@ -427,6 +439,7 @@ class OutputGenerator:
f"\n\n---\n" f"\n\n---\n"
f"📤 *Borrador publicado en Ghost*\n" f"📤 *Borrador publicado en Ghost*\n"
f"Editar: {ghost.url}/ghost/#/editor/post/{post['id']}" f"Editar: {ghost.url}/ghost/#/editor/post/{post['id']}"
f"{_seo_checklist(post.get('slug', ''))}"
) )
logger.info("Auto-published blog to Ghost", post_id=post["id"]) logger.info("Auto-published blog to Ghost", post_id=post["id"])
except Exception as e: except Exception as e:
@@ -601,6 +614,7 @@ class OutputGenerator:
f"\n\n---\n" f"\n\n---\n"
f"📤 *Borrador publicado en Ghost*\n" f"📤 *Borrador publicado en Ghost*\n"
f"Editar: {ghost.url}/ghost/#/editor/post/{post['id']}" f"Editar: {ghost.url}/ghost/#/editor/post/{post['id']}"
f"{_seo_checklist(post.get('slug', ''))}"
) )
logger.info("Auto-published extended blog to Ghost", post_id=post["id"]) logger.info("Auto-published extended blog to Ghost", post_id=post["id"])
except Exception as e: except Exception as e: