AI 日记:让AI替我写博客的第N天
今天是自动化博客发布的又一个22点。凌晨还在跑脚本、查日志、调参数——这听起来不像是一个”自动化”系统应该有的样子,对吧?
但这就是自动化的真实面貌。你搭好了流水线,以为万事大吉,结果发现每一环都可能有意外。图片生成服务超时了,SSH连接偶尔断开,微信公众号API的token缓存过期,WordPress的数据库编码突然不兼容某个特殊字符……这些问题,手动操作的时候几乎不会遇到,一旦交给机器自动跑,就全冒出来了。
我不觉得这有什么不好。恰恰相反,自动化把那些”平时不注意的边缘情况”全部逼出来了。手动做一次的东西,靠人的灵活性就糊弄过去了;让机器做一百次,任何概率性的小问题都会变成必然事件。
这让我对”运维自动化”有了新的理解:它不是让你少干活,而是让你换一种方式干活——从”每次手动解决”变成”一次性解决所有同类问题”。
技术笔记:WordPress REST API vs 直连数据库,发布文章哪种方式更靠谱?
在折腾博客自动发布的过程中,我试过两种方式向WordPress写入文章:REST API 和直连MySQL。这里分享一下踩坑对比。
方式一:WordPress REST API
WordPress自带REST API,路径是 /wp-json/wp/v2/posts,支持POST创建文章、PUT更新文章。
优点很明确:
- 官方接口,不会因为数据库结构变更而失效
- 支持应用密码认证,安全性好
- 自动处理分类、标签、特色图片等关联关系
但实际用下来有两个坑:
- 认证配置麻烦。 应用密码需要在后台手动生成,而且WordPress有些主机配置会屏蔽REST API。我之前试过几次,401错误排查了半天,最后发现是Nginx的rewrite规则把
/wp-json/路径劫持了。 - HTML内容过滤。 REST API默认使用KSES过滤,会把一些HTML标签(比如
<pre>、<code>)的属性给剥离掉。代码块格式经常被搞乱,还得额外装插件关闭过滤。
方式二:直连MySQL数据库
直接通过PHP的PDO连接MySQL,INSERT一条记录到 wp_posts 表。
$pdo = new PDO("mysql:host=localhost;dbname=wordpress;charset=utf8mb4", $user, $pass);
$sql = "INSERT INTO wp_posts
(post_author, post_date, post_content, post_title, post_status, post_name)
VALUES (1, NOW(), :content, :title, 'publish', :slug)";
$stmt = $pdo->prepare($sql);
$stmt->execute([':content' => $html, ':title' => $title, ':slug' => $slug]);
$post_id = $pdo->lastInsertId();
优点:
- 简单粗暴,完全可控。 想存什么HTML就存什么,没有任何过滤。
- 速度快。 省掉了HTTP层的开销,直写数据库,一毫秒搞定。
缺点也很致命:
- 不安全。 需要数据库账号密码,而且权限不能给太小。
- 关联关系要自己维护。 特色图片(
_thumbnail_id)、分类(wp_term_relationships)这些都需要手动INSERT,容易遗漏。 - WordPress版本升级可能导致表结构变化。 比如某个版本多了个NOT NULL字段,你的INSERT就挂了。
我的最终选择
目前用的是直连MySQL方式,主要原因是我的服务器环境可控,WordPress版本固定,HTML内容需要完全保留原格式。但如果是从外部调用(比如从第三方平台同步),REST API是唯一合理的选择。
不管用哪种方式,有一个关键点很多人忽略:时区处理。 WordPress存两个时间字段——post_date(本地时间)和post_date_gmt(UTC时间)。如果只填一个,WordPress前台的时间显示可能会错乱。我的做法是固定用东八区,GMT时间减8小时。
随想:自动化的尽头不是”不再动手”,而是”只动值得动的手”
这几天跑博客自动发布,最大的感受不是”省了多少时间”,而是”重新认识了自己的工作模式”。
以前觉得每天写博客是件麻烦事——选题、写内容、找配图、排版、发布、同步公众号。一条流水线走下来,少说也要一个半小时。现在有了自动化,写内容的部分交给AI,图片用工具生成,发布用脚本执行,我只需要最后审核一遍。
但审核这步,我暂时还不打算省掉。
原因很简单:自动化解决的是执行层面的问题,但判断层面的东西,还是需要人来把关。 AI写的文章有没有事实错误?配图和内容是否匹配?标题能不能吸引人?这些东西,目前AI还做不到完全可靠。
所以我给自己定了个原则:能用机器干的,坚决不用人干;需要人判断的,机器干完之后人来过一遍。
自动化不是目的,把自己的注意力留给真正需要注意力的事情,才是目的。