最近给自己的博客折腾了一个 WordPress AI 机器人插件,能自动写文章、回复评论,还能定时发布。前后调试了将近一周,总算稳定运行了。记录一下开发过程和最终的功能。

开发进度表
v0.1 —— 基础框架(7月13日)
- 完成插件基本架构,接入 DeepSeek API
- 实现手动发文功能,支持人物角色设定
- 文章可设置特色图片、分类和标签
v0.2 —— 定时任务(7月15日)
- 加入每日定时发文,支持设置篇数和间隔
- 支持自动评论回复
- 后台设置面板完成
v0.3 —— Bug 大修复(7月17日 - 7月23日)
这个阶段踩了不少坑,逐一记录:
7月17日:时区问题
- 发现服务器 UTC 时区导致排班晚 8 小时
- ✅ 修复:改用
gmt_offset计算北京时间
7月18日:内容同质化
- AI 生成的文章千篇一律,都写早餐、骑电动车、修电脑
- ✅ 修复:加入6种写作角度随机轮换、禁止写重复话题
7月19日:标题失控
- 标题太长老跑到内容里,或者整个故事都在标题行
- ✅ 修复:用
---分隔符分离标题和正文,超过15字自动截断
7月20日:并发多发
- 一次性发布大量重复文章(近百篇)
- ✅ 修复:加入
is_admin()检查和并发锁
7月21日:自动排班失效
- 8:00 首篇文章总是发不出来
- ✅ 修复:改用时间戳队列存储排班,每次请求自动检查
7月22日:Cron 触发问题
- 宝塔 wp-cron.php 总是触发失败
- ✅ 修复:改用
wp_loaded+DOING_CRON检测,最终切换到?ai_bot_check=1专属触发地址
7月23日:功能稳定
- 全天 4 篇文章自动定时发布成功
- 排班、发文、队列管理全部正常
- 后台仪表盘实时显示发布状态
v0.4 —— 完善体验(7月24日)
- 后台仪表盘添加发布状态卡片
- 设置页实时显示队列信息
- 文章底部添加居中排版的 AI 声明区(可自定义文字)
- 修复
display: flex被 WordPress 安全过滤的问题
- 专属触发地址
?ai_bot_check=1整合到主插件文件
最终稳定版技术方案
经过多轮调试,最终稳定运行的架构如下:
- 触发方式:宝塔每10分钟执行
curl -s -u"账号:密码" "https://域名/wp-cron.php?t=$(date +%s)"
- 检测机制:
wp_loadedhook +DOING_CRON常量判断,只有 wp-cron.php 请求才触发
- 队列存储:WordPress Options API,时间戳数组
- 并发控制:Transient 锁(120秒超时)
- 自动排班:每日首次检测到队列为空时自动按设置排班
- 标题控制:
---分隔符解析 + 超长自动截断(限12字)
- 内容多样性:6种写作角度随机轮换 + 话题黑名单
最新功能介绍
核心能力
🤖 AI 自动写作

- 接入 DeepSeek API,支持两种模式:
- 日常碎片模式:设定人物角色,AI 以第一人称写生活日记
- 正式文章模式:专业博客风格,适合技术、教程类内容
📅 智能定时发布
- 每日自动排班,支持设置篇数(1-10篇)
- 自定义首篇发布时间(默认 8:00)
- 自定义发布间隔(默认 3 小时)
- 到点自动发布,无需人工干预
💬 自动评论回复

- 自动回复用户评论
- 支持角色口吻回复(与文章风格一致)
- 可设置回复窗口天数和次数
特色功能
🎯 写作角度轮换 每次生成文章时,从 6 种写作角度中随机选取:
- 叙事型、吐槽型、感悟型、观察型、分享型、回忆型
- 避免内容千篇一律
🛡️ 防重复机制
- 自动跳过已写过的话题(早餐、通勤、修电脑等)
- 每次只写一件事,不堆砌多个话题
- 每篇文章和上一篇不一样
📊 实时状态监控

- 后台首页仪表盘卡片:显示待发布篇数、下次发布时间
- 设置页队列显示:完整排班列表
- 日志系统:记录每次发文和排班详情
🔧 多触发方式
- 宝塔定时任务(推荐):每10分钟访问 wp-cron.php 自动检查队列
- 手动立即发文:随时生成并发布一篇文章
- 手动执行每日任务:按设定排班规则批量安排
技术亮点
| 模块 | 方案 |
| 触发方式 | wp-cron.php + DOING_CRON 常量判断,仅 wp-cron.php 请求触发 |
| 队列存储 | WordPress Options API(wp_ai_bot_publish_queue 时间戳数组) |
| 并发控制 | Transient 锁(120秒超时,防止同时多发) |
| 自动排班 | 每日首次检测到队列为空时自动按设置排班 |
| 标题控制 | --- 分隔符解析 + 超长自动截断(限12字) |
| 内容多样性 | 6种写作角度随机轮换 + 话题黑名单 + 单话题模式 |
| CSS 安全过滤 | safe_style_css 白名单添加 display,保留 flex 布局 |
后记
折腾了一周,从最初的简单 API 调用,到最后做成一个稳定的自动写作系统,学到了不少 WordPress 插件开发的知识。
最深的体会:定时任务看似简单,实际坑最多。 时区转换、并发冲突、Cron 触发失败、内容同质化……每个问题都花了不少时间排查。
好在最终跑起来了,现在每天早上 8 点自动发第一篇,11点、14点、17点各一篇,完全不用管。



