一、项目概述
随着 DeepSeek 等 AI 大模型的普及,我们有了更多有趣的玩法。本文将介绍如何利用 Python 脚本,结合 AI 大模型(以 DeepSeek 为例)和微信公众号 API,实现从文章创作到发布的全自动化流程。
核心流程:
- AI 创作:调用 DeepSeek API,根据热点或指定主题生成文章。
- 公众号对接:通过微信公众号 API,获取凭证、上传素材并发布文章。
- 自动化整合:将以上步骤串联,实现一键生成并发布。
二、第一步:接入 AI 创作引擎(DeepSeek)
2.1 获取 DeepSeek API Key
- 访问 DeepSeek 官方平台。
- 登录后,进入 API 管理页面,创建一个新的 API Key 并妥善保存。

2.2 创建调用 DeepSeek API 的函数
以下 Python 函数 get_article_from_deepseek 用于向 DeepSeek 发送请求并获取生成的文本。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
| import requests
DEEPSEEK_API_URL = "https://api.deepseek.com/v1/chat/completions" DEEPSEEK_API_KEY = "sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
def get_article_from_deepseek(my_describe): """ 调用 DeepSeek API 生成文章。 :param my_describe: 给 AI 的提示词,描述文章要求。 :return: 生成的文本内容,失败则返回 None。 """ headers = { "Content-Type": "application/json", "Authorization": f"Bearer {DEEPSEEK_API_KEY}" } data = { "model": "deepseek-chat", "messages": [ { "role": "user", "content": my_describe } ] } try: response = requests.post(DEEPSEEK_API_URL, headers=headers, json=data) if response.status_code == 200: result = response.json() article = result["choices"][0]["message"]["content"] return article else: print(f"DeepSeek 请求失败,状态码:{response.status_code},错误信息:{response.text}") except requests.RequestException as e: print(f"DeepSeek 请求发生错误:{e}") return None
|
2.3 测试 AI 创作
调用函数,让 AI 根据热点生成一篇公众号风格的文章。
1 2 3 4 5 6 7 8 9 10 11 12 13
| prompt = """ 请查询最近三天内的热搜榜,取其中的一个热点,生成一篇公众号文章。 要求: 1. 标题要吸引人,有争议性。 2. 内容完整,结构清晰(有引言、主体、结论)。 3. 不能涉及侵权行为。 4. 输出纯文本,无需 Markdown 格式。 """ article_content = get_article_from_deepseek(prompt) if article_content: print("文章生成成功!") print(article_content[:500])
|
效果与成本:
- AI 能快速生成一篇结构完整、风格贴近公众号的文章。
- 一篇短文的生成成本(输入+输出 tokens)通常不足 1000 tokens,花费极低。

三、第二步:接入微信公众号 API
3.1 获取公众号凭证
- 登录 微信公众平台。
- 进入 开发 -> 基本配置,获取
AppID 和 AppSecret。
新手建议:首次测试可使用 “开发者工具” 中的 “公众平台测试账号”,功能齐全且无风险。

3.2 创建公众号 API 操作函数
我们需要四个核心函数来处理公众号的访问令牌、素材上传和文章发布。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88
| WECHAT_APPID = "你的AppID" WECHAT_APPSECRET = "你的AppSecret" WECHAT_API_URL = "https://api.weixin.qq.com"
def get_wechat_access_token(): """获取微信公众号的 access_token。""" url = f"{WECHAT_API_URL}/cgi-bin/token?grant_type=client_credential&appid={WECHAT_APPID}&secret={WECHAT_APPSECRET}" try: response = requests.get(url) if response.status_code == 200: result = response.json() if 'access_token' in result: return result['access_token'] else: print(f"获取 access_token 失败,错误信息:{result}") except requests.RequestException as e: print(f"获取 access_token 发生错误:{e}") return None
def upload_cover_image(access_token, image_path): """上传封面图片并获取 media_id。""" url = f"{WECHAT_API_URL}/cgi-bin/media/upload?access_token={access_token}&type=image" with open(image_path, 'rb') as file: files = {'media': file} try: response = requests.post(url, files=files) if response.status_code == 200: result = response.json() if 'media_id' in result: return result['media_id'] else: print(f"上传封面图片失败,错误信息:{result}") except requests.RequestException as e: print(f"上传封面图片发生错误:{e}") return None
def create_article_material(access_token, article, thumb_media_id): """将文章内容创建为公众号素材,并返回素材 media_id。""" url = f"{WECHAT_API_URL}/cgi-bin/media/uploadnews?access_token={access_token}" data = { "articles": [ { "title": "AI生成的热点文章", "thumb_media_id": thumb_media_id, "author": "AI Writer", "digest": article[:100] + "...", "show_cover_pic": 0, "content": article, "content_source_url": "" } ] } try: response = requests.post(url, json=data) if response.status_code == 200: result = response.json() if 'media_id' in result: return result['media_id'] else: print(f"创建文章素材失败,错误信息:{result}") except requests.RequestException as e: print(f"创建文章素材发生错误:{e}") return None
def publish_article(access_token, media_id): """将已创建的素材发布给所有粉丝。""" url = f"{WECHAT_API_URL}/cgi-bin/message/mass/sendall?access_token={access_token}" data = { "filter": { "is_to_all": True }, "mpnews": { "media_id": media_id }, "msgtype": "mpnews" } try: response = requests.post(url, json=data) if response.status_code == 200: result = response.json() if result.get('errcode') == 0: print("文章发布成功!") else: print(f"文章发布失败,错误信息:{result}") except requests.RequestException as e: print(f"文章发布发生错误:{e}")
|
四、第三步:组装自动化“工厂”
4.1 创建主函数串联流程
将 AI 创作和公众号发布流程整合到一个主函数中。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
| import os
def main(): """主函数:一键生成并发布文章。""" print("开始自动创作与发布流程...") prompt = "请以‘职场人的下班自由’为主题,写一篇800字左右的公众号文章,要求观点鲜明,引发共鸣。" print("正在调用 AI 生成文章...") article_content = get_article_from_deepseek(prompt) if not article_content: print("文章生成失败,流程终止。") return article_content = article_content.encode('utf-8').decode('utf-8') html_content = "<p>" + article_content.replace("\n", "</p><p>") + "</p>" print("正在获取微信公众号访问令牌...") access_token = get_wechat_access_token() if not access_token: print("获取访问令牌失败,流程终止。") return cover_image_path = "./cover.jpg" if not os.path.exists(cover_image_path): print(f"封面图片不存在:{cover_image_path},请准备一张封面图。") return print("正在上传封面图片...") thumb_media_id = upload_cover_image(access_token, cover_image_path) if not thumb_media_id: print("上传封面图片失败,流程终止。") return print("正在创建公众号文章素材...") media_id = create_article_material(access_token, html_content, thumb_media_id) if not media_id: print("创建文章素材失败,流程终止。") return print("正在发布文章...") publish_article(access_token, media_id) print("自动化流程执行完毕!")
if __name__ == "__main__": main()
|
4.2 运行与测试
- 确保已安装
requests 库:pip install requests。
- 将代码中的
DEEPSEEK_API_KEY、WECHAT_APPID、WECHAT_APPSECRET 替换为你自己的凭证。
- 准备一张名为
cover.jpg 的封面图片,放在脚本同目录下。
- 运行脚本
python auto_publish.py。
成功提示:如果一切顺利,你将在公众号后台的“素材管理”中看到新创建的文章,并且所有粉丝都会收到推送。
五、进阶优化与展望
5.1 当前流程优化
- 内容格式化:在提示词中要求 AI 直接输出带 HTML 标签的格式,减少后期处理。
- 错误重试:为网络请求添加重试机制,提高稳定性。
- 日志记录:将运行状态、生成的文章内容、API 响应等记录到文件,便于排查。
- 多热点源:结合其他 API(如微博、百度热搜)获取实时热点,作为 AI 的创作素材。
5.2 扩展为“AI 运营管家”
设想一个更强大的自动化系统:
- GUI 管理界面:使用
PyQt 或 Tkinter 制作可视化控制面板。
- 任务调度:使用
APScheduler 库,实现定时任务(如每小时抓取热点,生成文章存入素材池)。
- 账号矩阵管理:管理多个公众号,根据账号定位(美食、情感、科技)自动匹配不同风格的文章并发布。
- 数据分析与反馈:调用公众号数据接口,分析文章阅读量、点赞数,用 AI 总结规律,并自动调整后续的创作策略(如标题风格、发文时间)。
- 全自动化部署:将整套脚本部署到云服务器(如腾讯云、阿里云),实现 7x24 小时无人值守运营。
最终愿景:实现“一人运营百号”,运营者只需定期查看数据报告,与 AI 讨论策略,将重复性工作完全自动化。
六、注意事项
- 内容审核:AI 生成的内容需符合平台规范,发布前建议人工审核,避免违规风险。
- API 限制:关注 DeepSeek 和微信公众号的 API 调用频率、配额限制。
- 版权与伦理:确保生成的内容不侵犯他人版权,注明 AI 辅助创作。
- 凭证安全:切勿将
API Key、AppSecret 等敏感信息提交到公开的代码仓库。
通过本文的指南,你可以快速搭建一个属于自己的“AI 小编”系统,探索内容创作自动化的无限可能。