fix: Ghost 5.x — usar mobiledoc+HTML card en lugar del campo html
Build & Deploy ResearchOwl / build-and-push (push) Successful in 6s
Build & Deploy ResearchOwl / build-and-push (push) Successful in 6s
El campo "html" en Ghost Admin API v5 (Lexical editor) es de solo lectura. El contenido se debe enviar via mobiledoc con HTML card, que Ghost acepta en todas las versiones de v5 y renderiza sin conversión. Añadidos logs de diagnóstico y validación de HTML vacío. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -260,13 +260,32 @@ class GhostPublisher:
|
||||
tags: list[str] | None = None) -> dict:
|
||||
import aiohttp as _aio
|
||||
import markdown as _md
|
||||
|
||||
clean = _strip_researchowl_header(markdown_content)
|
||||
html = _md.markdown(clean, extensions=["extra"])
|
||||
|
||||
logger.info("Ghost publish_draft", html_length=len(html),
|
||||
html_preview=html[:200])
|
||||
|
||||
if not html.strip():
|
||||
raise ValueError("Ghost: HTML vacío tras conversión markdown — contenido no enviado")
|
||||
|
||||
# Ghost 5.x (Lexical editor): el campo "html" es solo de lectura en la API.
|
||||
# La forma fiable de enviar HTML arbitrario es via mobiledoc con HTML card,
|
||||
# que Ghost acepta en todas las versiones de v5 y renderiza sin conversión.
|
||||
mobiledoc = json.dumps({
|
||||
"version": "0.3.1",
|
||||
"atoms": [],
|
||||
"cards": [["html", {"html": html}]],
|
||||
"markups": [],
|
||||
"sections": [[10, 0]],
|
||||
})
|
||||
|
||||
token = self._make_token()
|
||||
body = {
|
||||
"posts": [{
|
||||
"title": title,
|
||||
"html": html,
|
||||
"mobiledoc": mobiledoc,
|
||||
"status": "draft",
|
||||
"tags": [{"name": t} for t in (tags or ["investigacion"])],
|
||||
}]
|
||||
|
||||
Reference in New Issue
Block a user