Ghost ⋅ WeChat ⋅ Lexical

文章发布到微信公众号的最后一步

将 Markdown 发布为 Ghost 博客,再一键同步到微信公众号草稿箱。 图片上传、代码块保护、样式白名单过滤 — 全自动完成。

Markdown
Ghost
WeChat
01

核心能力

Markdown → Lexical

将 Markdown 文件转换为 Ghost 原生 Lexical 格式,发布后在编辑器中可二次编辑,支持标题、代码块、表格、列表等丰富内容。

图片自动上传

文章中的图片自动上传至微信永久素材库,替换为 CDN 地址,无需手动处理。

三层白名单过滤

标签、属性、样式三层白名单机制,确保生成的 HTML 安全合规,通过微信公众号的内容审核。

代码块保护

代码块使用占位符机制保护,避免被 HTML 清理器破坏,保留语言标记和原始格式。

样式兼容转换

智能处理微信不支持的 HTML:表格转 div 布局,列表转前缀段落,链接转 text[url] 格式。

一键全流程

publish --wechat 一条命令完成 Markdown → Ghost → 微信的完整发布,无需任何手动步骤。

02

快速开始

安装

terminal
# 从 PyPI 安装(推荐)
pip install ghostwriter-cli

# 或从源码安装
git clone https://github.com/yinguobing/ghostwriter.git
cd ghostwriter
pip install -e ".[dev]"

配置

支持环境变量(CI/Docker 首选)或配置文件两种方式:

terminal
# 方式 1:环境变量(CI/Docker 首选)
export GHOSTWRITER_GHOST_API_URL="https://your-ghost-blog.com"
export GHOSTWRITER_GHOST_ADMIN_KEY_ID="your_key_id"
export GHOSTWRITER_GHOST_ADMIN_KEY="your_hex_secret"
export GHOSTWRITER_WECHAT_APPID="your_wechat_appid"
export GHOSTWRITER_WECHAT_SECRET="your_wechat_secret"

# 方式 2:CLI 交互式配置
ghostwriter config set ghost.api_url https://your-ghost-blog.com
ghostwriter config set ghost.admin_key_id your_key_id
ghostwriter config set ghost.admin_key your_hex_secret
ghostwriter config set wechat.appid your_wechat_appid
ghostwriter config set wechat.secret your_wechat_secret

# 查看当前配置(密钥已脱敏)
ghostwriter config

使用

terminal
# 列出 Ghost 文章
ghostwriter list

# 发布 Markdown 到 Ghost
ghostwriter publish article.md

# 同步到微信草稿
ghostwriter sync <article-id>

# 预览 HTML(不创建草稿)
ghostwriter sync --preview <article-id>

# 一键发布 + 同步
ghostwriter publish article.md --wechat
03

处理管道

从 Ghost API 获取 HTML 后,文章经过多层处理再推送到微信草稿箱:

  1. 1
    图片上传到微信永久素材
    遍历文中所有图片,逐一上传到微信服务器,获取永久素材 URL(media_id),替换为微信 CDN 地址。
  2. 2
    三层白名单过滤
    标签白名单(p, div, pre, code, img 等)、属性白名单(href, src, alt)、样式白名单(color, font-size, margin 等),逐层清理不安全内容。
  3. 3
    代码块保护与恢复
    清洗前用占位符保护代码块,清洗后恢复,确保代码格式完整保留。
  4. 4
    不兼容标签转换
    table → div 布局、ol/ul → 带前缀的 p 段落、hr → 分隔线 div、链接 → text [url] 格式,确保微信正确渲染。
  5. 5
    默认样式补全
    段落间距、图片间距、代码块样式等默认值补全,让文章在微信中有良好的阅读体验。
开源

开始使用 ghostwriter

让 Ghost 博客和微信公众号之间的内容同步变得简单优雅

GitHub → 查看文档