WeChatMPCopilot
是一个自动化工具,旨在帮助用户通过微信公众平台 API 自动发布文章。该工具支持从关键词或标题生成文章内容,并通过 AI 模型(如 GPT)生成高质量的文章。此外,它还集成了图片上传、草稿保存和文章发布的完整流程。
主要功能包括:
-
关键词提取:基于 KeyBERT 和 TextRank 算法提取文章关键词。
-
AI 内容生成:通过 OpenAI 或其他大模型生成文章标题和内容。
-
微信公众号集成:自动上传图片、保存草稿并发布文章。
-
多语言支持:支持中文和英文内容生成。
-
SEO 优化:生成的内容符合 SEO 最佳实践,提升文章曝光率。
-
安装
uv
工具(如果尚未安装):pip install uv
-
使用
uv
添加依赖包:uv add httpx[http2,http3] keybert scikit-learn jieba nltk fuzzywuzzy python-Levenshtein markdown pygments pymdown-extensions markdownify openai pandas
-
或者使用
requirements.txt
安装依赖:uv pip install -r requirements.txt
-
导出依赖包:
uv pip freeze | uv pip compile - -o requirements.txt
你也可以手动安装所有依赖包:
pip install httpx[http2,http3] keybert scikit-learn jieba nltk fuzzywuzzy python-Levenshtein markdown pygments pymdown-extensions markdownify openai pandas
config.json
文件包含项目的全局配置信息,包括微信公众号 API 的凭据、GPT 模型的配置以及文章生成的相关参数。以下是一个示例配置:
{
"gpts": [
{
"baseurl": "http://127.0.0.1:11434/v1", //API接口地址,/chat/completions 前部分
"apikey": [
"EMPTY"
],
"models": [
"deepseek-r1:latest" // GPT模型,列表引入,可以多个
]
}
],
"stopk": {
"cn": "ChineseStopWords.txt", // 停用词文件路径
"en": "EnglishStopWords.txt" // 停用词文件路径
},
"mps": [
{
"name": "吴罗平", // 公众号名称
"appid": "", // 公众号 AppID
"secret": "", // 公众号 AppSecret
"baseurl": "https://api.weixin.qq.com", // 微信公众号 API 接口地址
"lang": "中文", // 文章语言类型
"aitags": true, // 是否使用GPT生成标签
"aiexcerpt": true, // 是否使用GPT生成摘要
"draft": false, // 是否上传草稿
"publish": false, // 是否发布文章
"keys": "keywords.txt", // 关键词文件路径
// reqkeys: 核心关键词列表(影响分词结果,不是必须)
"reqkeys": [
"SEO",
"网站建设",
"网络营销",
"网站优化",
"网站推广",
"网站流量",
"网站运营",
"微信公众号"
],
"number": 3, // 每次最多生成文章数量
"source_url": "", // 阅读原文 链接
"author": "lopins", // 文章作者
// 图片素材,从微信公众号素材库上传的图片素材ID(需要自己获取,本项目不提供:因为不是所有人都需要,关键词:素材ID)
"media_ids": {
"睡眠障碍(失眠)": "noV6uipu7YVLwbb16HbFYSJcwovsmrtAZjWhdKD_C1iCmv93lLTq6R7SdX3nOGN4",
"尿毒症": "noV6uipu7YVLwbb16HbFYYhQUy0at2Acn1ht3318BxHkwLmRrbuQuDu8Lzr59ERI",
"夫妻生活(两性)": "noV6uipu7YVLwbb16HbFYQVpJtBLVwJKybqkKFpo96Os5RohFpI5rCPeKELn_o1S",
"糖尿病(胰岛素)": "noV6uipu7YVLwbb16HbFYe9djnLaHk18OCw4cknHNsJ0VbRar092a4bIPwUc0f7w",
"美容抗衰 (国内)": "noV6uipu7YVLwbb16HbFYQzLytsMtfsdzQyCjZpNcVEs0WiB7Lo1v32QdzgbMnKc",
"关节炎(膝关节)": "noV6uipu7YVLwbb16HbFYey40BtXdboB-AMCY676hm03DHYL75xQZRgkoyUG05sZ",
"肝硬化": "noV6uipu7YVLwbb16HbFYT7zdck2-QW976rR7GOf8SrdtKgrmYYA9sQXoxoAdSvJ",
"肺(慢阻肺)": "noV6uipu7YVLwbb16HbFYWCcrIMhAqoJy5rI8E1cPfNLKxkipA_UKuJXuDcG00AF",
"干细胞VS免疫细胞": "noV6uipu7YVLwbb16HbFYWG-pc3sXRiIfHbob7hOL_AKHzEy5KTRYWxz1rXK9mT7",
"糖尿病": "noV6uipu7YVLwbb16HbFYaPeSVbgF2YVuNkmlANgjfNuEtg6kAk-O1Y4Si1UEAMx",
"癌症": "noV6uipu7YVLwbb16HbFYXKd9m8rHIRJDmZypQ7vtLIAz_hBgVKY8QRLRwHax9Wv",
"肺病": "noV6uipu7YVLwbb16HbFYcgFYLcRdkb3qhzX3QLVCrYdFNfvXDGFSiFLIbLRWNhH",
"干细胞": "noV6uipu7YVLwbb16HbFYXtLjpxmeESofvTgSA9NuT223w2qciBmsIV0rnue5XsF",
"好孕、怀孕、备孕": "noV6uipu7YVLwbb16HbFYelF4g4clOcXSvhh0_DD1Mku_-aDB7g0Ry7zGJtrisa3",
"医院": "noV6uipu7YVLwbb16HbFYSUwXbLJ_IaR3SMK1SrOEdD4LF5O9TEKV6SyE2U4EKcN"
},
"service_ad": "", // 服务广告(HTML源码:注意转义防止json识别报错)
"contact_us": "", // 联系我们(HTML源码:注意转义防止json识别报错)
"bottom_ad_top": "", // 底部广告(HTML源码:注意转义防止json识别报错)
"bottom_ad_bottom": "", // 底部广告(HTML源码:注意转义防止json识别报错)
"followme": "" // 公众号关注Banner(HTML源码:从公众号编辑器F12方式获取,注意转义防止json识别报错)
}
]
}
gpts
: 包含 GPT 模型的配置,如 API 地址、密钥、模型列表等。mps
: 包含微信公众平台的配置,如 AppID、AppSecret、媒体 ID 映射等。stopk
: 停用词文件路径,用于分词和关键词提取。
-
确保已安装所有依赖。
-
配置
config.json
文件,填写正确的微信公众平台凭据和 GPT 模型信息。 -
运行脚本:
python main.py
日志信息将输出到控制台,方便调试和监控程序运行状态。
通过微信公众平台 API 获取 Access Token,用于后续的草稿上传和文章发布操作。
token_status, token = wechat.get_wechatmp_token()
if not token_status:
logging.error("获取 Access Token 失败")
将本地图片上传至微信公众平台,并返回媒体 ID。
image_status, media_id = upload_wechatmp_image(token, "path/to/image.jpg")
if not image_status:
logging.error("图片上传失败")
通过 AI 模型生成文章标题和内容,并提取 SEO 关键词。
title = Extensions.get_gpt_generation(keyword="人工智能", lang="zh", mode="title")
content = Extensions.get_gpt_generation(keyword=title, lang="zh", mode="body")
tags = Extensions.extract_keywords(content, require_words=["人工智能", "机器学习"])
将生成的文章保存为微信公众平台的草稿。
draft_status, draft_id = wechat.get_wechatmp_draft(articles)
if not draft_status:
logging.error("保存草稿失败")
将草稿发布为正式文章。
publish_status, publish_id = wechat.get_wechatmp_publish(draft_id)
if not publish_status:
logging.error("文章发布失败")
WeChatMP-AutoPost/
├── main.py # 主程序入口
├── config.json # 配置文件
├── ChineseStopWords.txt # 中文停用词文件
├── EnglishStopWords.txt # 英文停用词文件
├── keywords.txt # 关键词列表
├── required_keywords.txt # 必要关键词列表
└── article/ # 生成的文章备份目录
A: 编辑 config.json
文件,在 gpts
字段中添加新的模型配置。例如:
{
"baseurl": "https://new-model-provider.com/api",
"apikey": ["new-api-key"],
"models": [],
"fee_type": "free",
"from_type": "text",
"to_type": "text",
"min_tokens": 4096
}
后四个参数为非必填项,可自行添加。
A: 脚本会自动上传图片并返回媒体 ID。确保图片路径正确,或者在 config.json
中配置媒体 ID 映射(从微信公众平台通过API获取)。
A: 修改 Extensions.get_gpt_generation
方法中的提示模板(prompts
),以适应不同的写作风格和需求。
-
Fork 项目到你的 GitHub 账户。
-
Clone 你的 Fork 到本地:
git clone https://github.com/yourusername/WeChatMP-AutoPost.git cd WeChatMP-AutoPost
-
创建 一个新的分支:
git checkout -b feature/your-feature
-
提交 你的更改:
git add . git commit -m "Add your feature"
-
Push 到你的分支:
git push origin feature/your-feature
-
打开一个 Pull Request 到
main
分支。
本项目采用 MIT 许可证。
希望这个 README.md
文档能够帮助用户更好地理解和使用你的项目!如果有任何补充或修改需求,请随时告知。