将 Markdown 文章发布到微信公众号,支持 AI 生成封面图片。
在 微信公众平台 → 开发 → 基本配置 中获取。
在基本配置页面,将你的出口 IP 加入白名单。查看出口 IP:
bash
curl -s https://ipinfo.io/ip
bash
mkdir -p ~/.wechat_publish
cat > ~/.wechat_publish/config.json << 'EOF'
{
"app_id": "你的AppID",
"app_secret": "你的AppSecret"
}
EOF
bash
pip install requests markdown
如需使用 HTML 卡片渲染功能,额外安装:
bash
pip install playwright
playwright install chromium
当用户要求发布文章时,按以下步骤执行:
阅读文章内容,用 AI 总结一段摘要,不超过 120 字节(中文约 40 字)。
如果用户已提供封面图片 → 直接使用,跳到步骤 4。
如果用户未提供封面图片 → 进入步骤 3 用 AI 生成。
根据文章标题和内容,调用 ImageGen 工具生成封面。提示词参考:
text
微信公众号封面图,风格简约专业,比例 16:9,主题:{文章标题关键词},不要出现文字
更多提示词模板见下方"AI 封面生成提示词建议"。
如果文章需要插入排版精美的信息卡片(对比图、步骤说明、工具栈展示等),由 AI 生成 HTML 模板,脚本自动渲染为图片插入文章。
微信公众号对 HTML/CSS 支持有限,有些排版效果无法用内联样式实现。HTML 卡片通过 Playwright 将 HTML 渲染为图片,绕过这个限制。
常见卡片类型和 HTML 模板:
对比卡片:
html
<!DOCTYPE html>
<html><head><meta charset="UTF-8">
<style>
*{margin:0;padding:0;box-sizing:border-box}
body{font-family:system-ui,-apple-system,sans-serif;background:#f5f5f7;padding:30px 20px}
.title{font-size:22px;font-weight:bold;color:#1a1a1a;margin-bottom:20px;text-align:center}
.section{margin-bottom:16px;padding:12px 16px;border-radius:8px}
.green{background:#e8f5e9;border-left:4px solid #4CAF50}
.red{background:#fce4ec;border-left:4px solid #f44336}
.section-title{font-size:15px;font-weight:bold;margin-bottom:8px}
.item{font-size:14px;color:#333;margin-bottom:4px;line-height:1.6}
</style></head><body>
<div class="title">标题</div>
<div class="section green"><div class="section-title">✅ 能做的</div><div class="item">• 内容1</div></div>
<div class="section red"><div class="section-title">❌ 不能做的</div><div class="item">• 内容1</div></div>
</body></html>
保存为 .html 文件后通过 --html-card 参数传入。可同时传入多个卡片文件。
bash
# 仅创建草稿
python scripts/wx_publish.py --title "文章标题" --content article.md --digest "AI总结的摘要" --thumb-image <封面图片路径>
# 带 HTML 卡片
python scripts/wx_publish.py --title "文章标题" --content article.md --digest "AI总结的摘要" --thumb-image <封面图片路径> --html-card card.html
# 多个 HTML 卡片
python scripts/wx_publish.py --title "文章标题" --content article.md --digest "AI总结的摘要" --thumb-image <封面图片路径> --html-card card1.html card2.html
# 创建草稿并自动发布
python scripts/wx_publish.py --title "文章标题" --content article.md --digest "AI总结的摘要" --thumb-image <封面图片路径> --publish
如果用户提供了封面素材 ID 而非图片文件:
bash
python scripts/wx_publish.py --title "文章标题" --content article.md --thumb-media-id <素材ID>
参数必填说明--title是文章标题--content是Markdown 文件路径--thumb-image否封面图片本地路径(AI 生成或用户提供的封面都用此参数)--thumb-media-id否已上传的封面素材 ID--html-card否HTML 卡片文件路径(可多个),渲染为图片插入文章--card-width否HTML 卡片渲染宽度(默认 750px)--author否作者名--digest是文章摘要(由 AI 总结,不超过 120 字节/约 40 字)--upload-thumb否仅上传封面图片,输出 thumb_media_id--publish否创建草稿后自动发布
封面优先级: --thumb-media-id > --thumb-image。均未指定时会提示提供。
根据文章类型选择合适的提示词:
文章类型提示词模板技术教程微信公众号封面,科技感,深蓝配色,简洁图标,无文字财经分析微信公众号封面,金融主题,数据图表元素,蓝金配色,无文字生活分享微信公众号封面,清新风格,柔和配色,简约图形,无文字量化交易微信公众号封面,K线图表元素,深色背景,科技金融感,无文字
问题解决方案获取 access_token 失败检查 AppID/AppSecret 是否正确,IP 白名单是否已设置上传封面失败封面图片需小于 10MB,支持 bmp/png/jpeg/jpg/gif 格式草稿创建失败确认公众号已认证,具有草稿接口权限markdown 模块未找到运行 pip install markdown
--publish 自动发布