一个基于 LangChain 和 LangGraph 的微信公众号内容创作智能体,能够根据指定主题自动搜集资料、生成专业文章、创建配图、审核内容并发布到微信公众号草稿箱。
本版本完全去除扣子(Coze)依赖,支持用户配置自己的API Key运行。
- 🚀 高效创作:全自动文章生成,从选题到发布一站式完成
- 🎨 智能配图:AI 生成高质量封面图,提升文章视觉效果
- ✅ 合规审核:内置内容审核机制,确保符合微信平台规范
- 🌐 实时搜索:基于最新网络信息,保证文章时效性
- 📱 专业排版:自动生成适合移动端阅读的 HTML 排版
- 🔧 通用LLM:支持 OpenAI/Claude/DeepSeek 等任意 OpenAI 兼容 API
- 🔍 实时信息搜集:基于 Tavily/Serper 搜索获取最新、最权威的资料
- ✍️ 智能文章创作:自动生成结构清晰、内容丰富的专业文章
- 🖼️ 智能配图生成:支持 DALL-E 3 / Stable Diffusion 等
- ✅ 智能内容审核:根据微信公众号规范自动审核内容合规性
- 📤 自动发布草稿:一键发布到微信公众号草稿箱
| 提供商 | 模型 | 状态 |
|---|---|---|
| OpenAI | GPT-4o, GPT-4, GPT-3.5 | ✅ 支持 |
| Anthropic | Claude 3.5, Claude 3 | ✅ 支持 |
| DeepSeek | DeepSeek V3, DeepSeek Coder | ✅ 支持 |
| 火山引擎 | Doubao, Seed 系列 | ✅ 支持 |
| 其他 | 任意 OpenAI 兼容 API | ✅ 支持 |
| 提供商 | 免费额度 | 状态 |
|---|---|---|
| Tavily | 1000次/月 | ✅ 推荐 |
| Serper | 2500次/月 | ✅ 支持 |
| SerpAPI | 100次/月 | ✅ 支持 |
| 提供商 | 模型 | 状态 |
|---|---|---|
| OpenAI DALL-E | DALL-E 3, DALL-E 2 | ✅ 支持 |
| Stability AI | Stable Diffusion XL | ⚙️ 可选 |
- Python 3.8 或更高版本
- Linux/macOS/Windows 操作系统
pip install -r requirements.txt# 1. 克隆项目
git clone https://github.com/ymstar/wechat-article-agent.git
cd wechat-article-agent
# 2. 安装依赖
pip install -r requirements.txt
# 3. 复制配置文件
cp config/agent_config.json.example config/agent_config.json
# 4. 只需要填 `llm.api_key` 这一项!其他都可以留空
vim config/agent_config.json
# 5. 运行
python src/main.py| 功能 | 配置项 | 说明 |
|---|---|---|
| 🌐 联网搜索 | search.api_key |
支持 Tavily/Serper/SerpAPI,获取最新信息 |
| 🎨 AI配图 | image.api_key |
支持 DALL-E/Stability AI,自动生成封面图 |
| 📤 一键发布 | wechat.app_id/app_secret |
直接发布到公众号草稿箱 |
| ✅ 内容审核 | - | 始终启用(用同一个LLM) |
# HTTP服务模式 (默认端口5000)
python src/main.py
# 或指定端口
python src/main.py -p 8080
# CLI模式(单次执行)
python src/main.py -m cli -i "请创作一篇关于AI发展趋势的文章"API文档: http://localhost:5000/docs
只需要填写 llm 部分,其他都可以留空:
{
"llm": {
"provider": "openai",
"api_key": "sk-your-api-key", // ⬅️ 只需要填这个!
"base_url": "https://api.openai.com/v1",
"model": "gpt-4o"
}
// 其他配置项都可以留空或删除
}{
"llm": {
"provider": "openai",
"api_key": "sk-your-api-key",
"base_url": "https://api.openai.com/v1",
"model": "gpt-4o",
"temperature": 0.7,
"max_tokens": 4000,
"timeout": 120
},
"search": {
"provider": "tavily",
"api_key": "",
"search_depth": "advanced"
},
"image": {
"provider": "openai",
"api_key": "",
"model": "dall-e-3",
"size": "1024x1024",
"quality": "standard"
},
"wechat": {
"app_id": "",
"app_secret": ""
},
"audit": {
"enable_llm_audit": true,
"sensitive_words_path": "config/sensitive_words.txt"
}
}📝 配置说明:
llm.api_key: 必须配置,否则无法运行search.api_key: 可选,不配置则跳过搜索image.api_key: 可选,不配置则跳过配图wechat.app_id/app_secret: 可选,不配置则需手动复制文章
| 参数 | 说明 | 示例 |
|---|---|---|
provider |
LLM 提供商 | openai, anthropic, deepseek |
api_key |
API Key | sk-xxx |
base_url |
API 地址 | https://api.openai.com/v1 |
model |
模型名称 | gpt-4o, claude-3-5-sonnet |
temperature |
温度参数 | 0.7 |
max_tokens |
最大 token 数 | 4000 |
| 参数 | 说明 | 示例 |
|---|---|---|
provider |
搜索提供商 | tavily, serper, serpapi |
api_key |
API Key | tvly-xxx |
| 参数 | 说明 | 示例 |
|---|---|---|
provider |
图片提供商 | openai, stabilityai |
api_key |
API Key | sk-xxx |
model |
模型 | dall-e-3 |
size |
图片尺寸 | 1024x1024 |
| 参数 | 说明 | 获取方式 |
|---|---|---|
app_id |
应用ID | 公众平台 -> 设置 -> 基本配置 |
app_secret |
应用密钥 | 公众平台 -> 设置 -> 基本配置 |
- 访问 https://platform.openai.com/api-keys
- 创建新的 API Key
- 充值或选择付费套餐
- 访问 https://tavily.com
- 注册并获取免费 API Key
- 免费额度:1000次/月
- 登录 https://mp.weixin.qq.com
- 进入「设置与开发」→「基本配置」
- 记录 AppID 和 AppSecret
配置优先级:环境变量 > config/agent_config.json > 默认值
支持的的环境变量:
export LLM_API_KEY="sk-xxx"
export LLM_BASE_URL="https://api.openai.com/v1"
export LLM_MODEL="gpt-4o"
export SEARCH_API_KEY="tvly-xxx"
export IMAGE_API_KEY="sk-xxx"
export WECHAT_APP_ID="wx-xxx"
export WECHAT_APP_SECRET="xxx"| 技术 | 说明 |
|---|---|
| LangChain | LLM 应用开发框架 |
| LangGraph | Agent 编排框架 |
| FastAPI | HTTP API 框架 |
| Tavily | 实时搜索服务 |
wechat-article-agent/
├── src/
│ ├── main.py # 主入口
│ ├── config/ # 配置管理
│ │ └── __init__.py # 配置加载器
│ ├── agents/
│ │ └── agent.py # Agent 核心逻辑
│ └── tools/
│ ├── web_search_tool.py # 联网搜索工具
│ ├── image_generation_tool.py # 配图生成工具
│ ├── content_audit_tool.py # 内容审核工具
│ └── wechat_publish_tool.py # 微信发布工具
├── config/
│ ├── agent_config.json.example # 配置模板
│ └── sensitive_words.txt # 敏感词库
├── scripts/
│ └── load_env.sh # 环境变量加载脚本
├── requirements.txt # Python 依赖
├── mcp_server.py # MCP Server
└── README.md # 项目文档
用户输入主题
↓
1. 搜索网络信息 (Tavily/Serper)
↓
2. 生成专业文章 (LLM)
↓
3. 生成封面配图 (DALL-E/Stability)
↓
4. 审核文章内容 (LLM + 敏感词)
↓
5. 发布到草稿箱 (微信API)
curl -X POST http://localhost:5000/run \
-H "Content-Type: application/json" \
-d '{"text": "请创作一篇关于AI发展趋势的文章"}'响应:
{
"status": "success",
"result": {...},
"thread_id": "xxx"
}curl -X POST http://localhost:5000/stream_run \
-H "Content-Type: application/json" \
-d '{"text": "请创作一篇关于AI的文章"}'curl http://localhost:5000/healthfrom src.agents.agent import build_agent
from langchain_core.messages import HumanMessage
# 构建 Agent
agent = build_agent()
# 运行
result = await agent.ainvoke({
"messages": [HumanMessage(content="请创作一篇关于AI的文章")]
})
print(result)docker build -t wechat-article-agent .docker run -d \
--name wechat-agent \
-p 5000:5000 \
-v $(pwd)/config:/app/config \
-e LLM_API_KEY=sk-xxx \
-e SEARCH_API_KEY=tvly-xxx \
-e IMAGE_API_KEY=sk-xxx \
-e WECHAT_APP_ID=wx-xxx \
-e WECHAT_APP_SECRET=xxx \
wechat-article-agentversion: '3.8'
services:
wechat-agent:
image: wechat-article-agent
ports:
- "5000:5000"
volumes:
- ./config:/app/config
environment:
- LLM_API_KEY=sk-xxx
- SEARCH_API_KEY=tvly-xxx
- IMAGE_API_KEY=sk-xxx
- WECHAT_APP_ID=wx-xxx
- WECHAT_APP_SECRET=xxx支持通过 MCP 协议为 Claude 等 AI 助手提供服务。
pip install -r requirements-mcp.txtpython mcp_server.py{
"mcpServers": {
"wechat-article": {
"command": "python3",
"args": ["/path/to/mcp_server.py"]
}
}
}默认路径:config/agent_config.json
可通过环境变量指定:
export CONFIG_PATH=/path/to/config.json{
"llm": {
"provider": "anthropic",
"api_key": "sk-ant-xxx",
"base_url": "https://api.anthropic.com/v1",
"model": "claude-3-5-sonnet-20241022"
}
}{
"llm": {
"provider": "deepseek",
"api_key": "sk-xxx",
"base_url": "https://api.deepseek.com/v1",
"model": "deepseek-chat"
}
}- 检查
search.api_key是否配置 - 确认 API Key 是否有效
- 查看日志获取详细错误信息
本项目采用 Apache License 2.0 开源协议。
Made with ❤️