微信公众号文章自动创作与发布工具。从选题搜索、文章撰写、AI配图生成、排版美化到发布草稿箱,一条命令搞定全流程。
可作为 Claude Code、Codex、OpenClaw 的 Skill 使用,也可以独立命令行调用。
- 全网素材搜索:围绕话题自动多轮搜索,交叉验证数据,筛选最新案例和权威观点
- AI智能写作:按照头部博主风格生成3000-5000字深度文章,反AI味写作规则,段落短小有呼吸感
- AI配图生成:集成图片生成能力,为每个章节生成风格统一的手绘信息图(6-10张/篇)
- 微信排版转换:Markdown → 微信兼容HTML,所有样式自动内联,蓝色主题精美排版
- 图片CDN上传:自动上传图片到微信服务器,获取
mmbiz.qpic.cn链接并替换占位符 - 一键发布草稿:封面图、标题、摘要、作者全部自动填好,直达草稿箱
- 爆款标题公式:内置5种10w+标题写法(痛点+方案+数字、身份代入+结果、反常识/悬念等)
- GitHub AI 增长榜:支持抓取 GitHub AI 项目、保存每日快照、计算 Star 增长并生成榜单文章
wechat-publisher/
├── SKILL.md # 通用 Skill 定义文件(6阶段工作流)
├── README.md # 项目说明
├── .env.example # 环境变量模板
├── .gitignore
├── 一键发布.sh # Shell快捷脚本
├── scripts/
│ ├── publish.py # 一键发布主流程(串联所有模块)
│ ├── wechat_api.py # 微信API封装(token、上传、草稿)
│ ├── html_converter.py # Markdown → 微信HTML转换器
│ └── image_handler.py # 图片下载/上传/替换
├── assets/
│ └── style_config.json # 排版样式配置(可自定义配色)
└── references/
└── api_reference.md # 微信API接口文档
git clone https://github.com/jiji262/wechat-publisher.git
cd wechat-publisherpip install requests登录 微信公众平台 → 设置与开发 → 基本配置:
- 获取 AppID 和 AppSecret(首次使用需启用开发者密码)
- 在「IP白名单」中添加当前机器的公网IP(
curl ifconfig.me查询) - 创建
.env文件:
WECHAT_APP_ID=你的AppID
WECHAT_APP_SECRET=你的AppSecretcd scripts
python -c "from wechat_api import get_access_token; print('连接成功:', get_access_token()[:10]+'...')"本项目的核心入口是根目录下的 SKILL.md,推荐用软链接安装。这样后续只要更新当前仓库,Claude、Codex、OpenClaw 都会自动读到最新版本,不需要重复复制。
推荐安装:
mkdir -p ~/.claude/skills
ln -s "$(pwd)" ~/.claude/skills/wechat-publisher如果目标目录已存在,可先删除旧目录,或改用复制安装:
cp -R "$(pwd)" ~/.claude/skills/wechat-publisher安装后重启 Claude Code,或开启一个新会话让 skill 被重新发现。
推荐安装:
mkdir -p ~/.codex/skills
ln -s "$(pwd)" ~/.codex/skills/wechat-publisher如果你不想使用软链接,也可以复制:
cp -R "$(pwd)" ~/.codex/skills/wechat-publisher安装后重启 Codex,让新的 skill discovery 生效。
OpenClaw 支持两种放置方式:
- 共享安装:放到
~/.openclaw/skills/,所有 agent 共用 - 工作区安装:放到
<workspace>/skills/,只在该工作区内生效,且优先级更高
共享安装示例:
mkdir -p ~/.openclaw/skills
ln -s "$(pwd)" ~/.openclaw/skills/wechat-publisher工作区安装示例:
mkdir -p /path/to/openclaw-workspace/skills
ln -s "$(pwd)" /path/to/openclaw-workspace/skills/wechat-publisher安装后执行以下命令验证并刷新:
openclaw skills list
openclaw gateway restart如果你正在聊天会话中,也可以直接新开一个会话来重新加载 skill。
安装完成后,在支持 slash skill 或自然语言触发的客户端里都可以这样使用:
使用 /wechat-publisher 写一篇关于"大模型Agent最新进展"的公众号文章
也支持更具体的指令:
使用 /wechat-publisher 根据这篇论文写一篇公众号文章,
目标读者是AI开发者,风格偏技术科普,重点解读实验结果
或者提供参考资料:
使用 /wechat-publisher 基于以下3篇文章综合写一篇分析,
文章1: [URL]
文章2: [URL]
Skill 会自动执行 6 阶段工作流:搜索素材 → 撰写文章 → 生成配图 → 转换排版 → 上传图片 → 发布草稿。
仓库内置了一个适合日更的榜单脚本,会抓取 GitHub AI 相关热门仓库、保存历史快照,并输出可直接用于公众号的 Markdown 初稿:
python scripts/github_ai_rankings.py --top 10执行后会生成:
generated/日期-github-ai-fastest-growing/article.mdgenerated/日期-github-ai-fastest-growing/ranking.jsongenerated/github-ai-rankings/snapshots/日期.json
如果你要继续做成公众号文章,建议使用专用科技感样式:
python scripts/html_converter.py generated/日期-github-ai-fastest-growing/article_processed.md -o generated/日期-github-ai-fastest-growing/article.html --style assets/style_github_ai_ranking.json一键发布(Markdown → 草稿箱):
python3 scripts/publish.py \
--input article.md \
--cover cover.jpg \
--title "文章标题" \
--digest "文章摘要" \
--author "作者名"从已有HTML发布:
python3 scripts/publish.py \
--html article.html \
--cover cover.jpg \
--title "文章标题"只做格式转换(Markdown → 微信HTML):
python3 scripts/html_converter.py article.md -o article.html只处理图片:
# 上传单张图片到微信CDN
python3 scripts/image_handler.py upload photo.jpg
# 批量处理文章中的所有图片链接
python3 scripts/image_handler.py process article.md -o article_processed.md每个脚本都支持 --help 查看完整参数。
内置清新蓝色主题,专为微信阅读体验优化:
| 元素 | 样式 |
|---|---|
| 主色调 | #4a6cf7(优雅蓝) |
| 正文 | 15px / 2倍行高 / 0.8px字间距 |
| 二级标题 | 蓝色左边框 + 淡蓝渐变背景 |
| 引用块 | 浅灰蓝底 + 蓝色左边框 |
| 代码块 | 深色Catppuccin主题 / 10px圆角 |
| 图片 | 6px圆角 + 柔和阴影 |
| 列表 | 蓝色实心圆点 |
编辑 assets/style_config.json,修改颜色值即可:
{
"styles": {
"h2": "font-size: 18px; color: #1a1a2e; border-left: 4px solid #你的颜色;",
"strong": "color: #你的颜色; font-weight: 600;"
}
}串联所有模块,实现完整发布流程:读取Markdown → 处理图片 → 转换HTML → 上传封面 → 创建草稿。
默认作者为"会飞的猪猪侠",可通过 --author 自定义。
封装了三个核心接口:
- access_token 管理:本地文件缓存,过期前5分钟自动刷新
- 图片上传:正文图片用
uploadimg(返回CDN链接),封面图用add_material(返回media_id) - 草稿创建:调用
draft/add接口,支持标题、摘要、作者等字段
处理微信编辑器的特殊限制:
- 所有CSS样式内联到每个标签的
style属性 - HTML实体转义(代码块中的
<style>等标签不会被误解析) - 支持标题、段落、列表、引用块、代码块、表格、图片、链接等Markdown语法
支持三种操作模式:
upload:上传本地图片到微信CDNdownload:从URL下载图片到本地process:批量替换文章中的外部图片链接为微信CDN链接
| 错误 | 原因 | 解决方法 |
|---|---|---|
40164 IP不在白名单 |
机器IP未添加白名单 | curl ifconfig.me 获取IP,添加到公众平台 |
40001 access_token无效 |
凭证错误或token过期 | 检查 .env 中的 AppID/AppSecret |
40009 图片大小超限 |
图片超过10MB | 压缩图片后重试 |
45166 内容不合规 |
文章内容触发平台过滤 | 检查是否包含敏感词或特殊HTML标签 |
48001 接口未授权 |
公众号类型不支持 | 需要已认证的服务号或订阅号 |
| 图片不显示 | 未使用微信CDN链接 | 确保所有图片通过 uploadimg 接口上传 |
- 文章发布到草稿箱,不会自动群发,可放心使用
- access_token 有效期2小时,脚本自动管理缓存和刷新
- 微信API有频率限制(每日素材上传上限),避免短时间大量操作
- 正文图片通过
uploadimg接口上传,不占用永久素材名额(上限5000个) - 封面图通过
add_material上传,会占用永久素材名额 - 微信编辑器不支持外部CSS、class属性、
<style>标签,所有样式必须内联
MIT