1. 项目概述:基于AI大模型的公众号文章自动生成系统
这个项目实现了一个自动化工作流:输入文章标题后,系统调用AI大模型生成完整文章内容,并自动发布到微信公众号平台。作为个人开发者,我通过Python+Flask搭建了这套系统,主要解决自媒体运营中内容创作的效率问题。实测表明,单篇文章的创作时间从原来的2-3小时缩短至5分钟以内。
核心流程分为三个技术模块:
- 大模型接口调用(使用Azure OpenAI服务)
- 文章内容生成与格式化处理
- 微信公众号API对接
注意:由于微信公众平台接口权限限制,个人订阅号只能保存到草稿箱,企业认证账号才具备自动发布权限。本方案采用草稿箱方案,既符合平台规范,又能满足大部分个人创作者的需求。
2. 技术架构与核心组件
2.1 系统依赖与配置
项目采用Python 3.8+环境,主要依赖库包括:
python复制requirements.txt
flask==2.0.1
requests==2.26.0
python-dotenv==0.19.0
openai==0.27.0
wechatpy==1.8.16
配置文件采用JSON格式,关键参数说明:
json复制{
"LLM_BASE_URL": "https://your-azure-openai-endpoint.openai.azure.com",
"LLM_API_KEY": "your-api-key-here",
"LLM_MODEL": "azure_openai/gpt-4-turbo",
"WECHAT_APPID": "wx-your-appid",
"WECHAT_SECRET": "your-app-secret"
}
2.2 核心模块设计
2.2.1 AI内容生成模块
采用Azure OpenAI服务,相比直接使用OpenAI官方API具有以下优势:
- 国内访问稳定性更高
- 支持私有化部署
- 计费方式更灵活(可按需选择不同规格的模型)
典型调用示例:
python复制def generate_article(title, temperature=0.7):
prompt = f"请以专业自媒体人的口吻撰写一篇关于{title}的公众号文章,要求:\n"
prompt += "1. 包含引人入胜的开头\n2. 正文分3-5个章节\n3. 结尾有总结和互动引导"
response = openai.ChatCompletion.create(
engine=config.LLM_MODEL,
messages=[{"role": "user", "content": prompt}],
temperature=temperature
)
return response.choices[0].message.content
2.2.2 微信公众号对接模块
使用wechatpy库处理微信公众平台接口调用,主要功能包括:
- 获取access_token
- 上传图文素材
- 保存到草稿箱
关键实现代码:
python复制from wechatpy import WeChatClient
client = WeChatClient(config.WECHAT_APPID, config.WECHAT_SECRET)
def save_to_draft(title, content, author="AI助手"):
articles = [{
'title': title,
'content': content,
'author': author,
'show_cover_pic': 1
}]
return client.draft.add(articles)
3. 实现细节与优化策略
3.1 提示词工程优化
经过多次测试,发现以下提示词结构效果最佳:
- 角色定义:明确要求AI扮演专业自媒体人
- 结构要求:指定文章段落结构
- 风格引导:提供3-5篇参考文章链接
- 限制条件:字数控制在1500-2000字
优化后的prompt模板:
code复制你是一位拥有10万粉丝的科技领域公众号主笔,请撰写一篇关于[标题]的文章。
参考风格:https://example.com/ref1
要求:
1. 开头使用场景化故事引入
2. 正文包含3个核心论点,每个论点配数据或案例
3. 结尾提出互动问题
4. 适当使用小标题和分段
5. 避免使用"首先/其次"等过渡词
3.2 内容后处理流程
原始AI生成内容需要经过以下处理:
- 格式转换:Markdown转微信公众号富文本
- 图片处理:自动识别文本中的图片描述,通过DALL·E生成配图
- 敏感词过滤:使用腾讯云内容安全API检测
- SEO优化:自动插入2-3个核心关键词
关键处理代码:
python复制def post_process(content):
# 转换Markdown格式
content = markdown_to_wechat(content)
# 生成配图
image_urls = generate_images(content)
for url in image_urls:
content = insert_image(content, url)
# 敏感词检测
if not check_safety(content):
raise ContentSafetyError
return content
4. 部署与使用指南
4.1 本地开发环境部署
- 克隆仓库:
bash复制git clone https://github.com/yourrepo/wechat-ai-writer.git
cd wechat-ai-writer
- 安装依赖:
bash复制pip install -r requirements.txt
- 配置环境变量:
bash复制cp .env.example .env
# 编辑.env文件填写实际参数
- 启动服务:
bash复制flask run --port 5000
4.2 生产环境部署建议
推荐使用Docker容器化部署:
dockerfile复制FROM python:3.8-slim
WORKDIR /app
COPY . .
RUN pip install -r requirements.txt
EXPOSE 5000
CMD ["gunicorn", "-b :5000", "app:app"]
部署到云服务时需要注意:
- 设置合理的API调用频率限制(建议QPS≤3)
- 开启HTTPS加密传输
- 配置日志监控(建议使用Sentry)
5. 常见问题与解决方案
5.1 内容质量问题排查
| 问题现象 | 可能原因 | 解决方案 |
|---|---|---|
| 文章结构松散 | prompt不够具体 | 添加结构示例到prompt |
| 专业度不足 | 缺少领域知识 | 在prompt中添加术语表 |
| 重复内容 | temperature过低 | 调整至0.7-0.9 |
5.2 微信接口常见错误
python复制# 处理access_token过期
try:
client.draft.add(articles)
except WeChatClientException as e:
if 'access_token expired' in str(e):
client.fetch_access_token()
client.draft.add(articles)
5.3 性能优化建议
- 实现prompt模板缓存
- 对AI响应进行gzip压缩
- 使用异步任务处理图片生成
- 建立本地敏感词缓存库
6. 扩展应用场景
这套系统经过简单改造还可以用于:
- 知乎/头条号等多平台同步发布
- 电商产品描述自动生成
- 企业新闻稿批量生产
- 多语言内容创作(需切换模型)
我在实际使用中发现,配合爬虫工具可以实现热点追踪+自动创作的全流程自动化。例如监测百度热搜榜,对指定关键词自动生成文章。但需要注意:
- 严格遵守内容原创规范
- 设置合理的发布频率
- 保留人工审核环节
对于企业用户,建议增加以下功能:
- 多账号矩阵管理
- 内容排期系统
- 数据分析看板
- A/B测试支持