AI Agent 自动化实战:从远程浏览器操控到 WordPress 全流程自动发文

当你拥有一个每天都要更新内容的技术博客,手动打开后台、写标题、传封面、填 SEO 字段、点发布,日复一日会消耗大量精力。这篇文章记录我把整个流程交给 AI Agent 自动化运行的完整实践:Agent 通过 WebRTC 远程桌面操控真实浏览器完成签到、浏览等日常任务,再通过 WordPress REST API 完成文章发布,全链路无需人工干预。

一、整体架构:两条自动化链路

整套系统由两条互补的链路组成,各司其职:

  • 远程浏览器链路(GUI 层):基于 Selkies-Gaming 的 WebRTC 远程桌面,Agent 以鼠标坐标点击 + 键盘注入的方式操控云端 Edge 浏览器,负责处理必须”真人环境”的任务——每日签到、积分任务、社区浏览等。
  • REST API 链路(数据层):直接调用 WordPress REST API,负责结构化数据的读写——文章正文、分类标签、特色图片、SEO 字段、发布状态。可靠、快速、可幂等重试。

两条链路的分界线非常清晰:凡是需要绕过人机验证或依赖登录态 Cookie 的走 GUI,凡是纯数据操作的全部走 API。

二、远程浏览器操控的关键细节

远程桌面自动化最大的坑在键盘注入。Selkies 的画面渲染在 canvas 上,本地合成 KeyboardEvent 不会转发到远端,唯一可靠的方式是调用其内部 API:

// 按下并释放一个键(keysym 十进制字符串)
window.webrtcInput._sendKeyEvent('116', 'id1', true);   // t down
window.webrtcInput._sendKeyEvent('116', 'id1', false);  // t up

// 组合键必须严格按时序:down → down → up → up
_sendKeyEvent('65507', 'm1', true);  // Control down
_sendKeyEvent('97',  'm2', true);    // a down
_sendKeyEvent('97',  'm2', false);   // a up
_sendKeyEvent('65507', 'm1', false); // Control up

实践中沉淀出几条铁律:

  • 修饰键释放必须冗余:组合键后额外补发一次 Ctrl/Shift 释放事件,否则远端 X 服务器会保持修饰键锁存,后续普通按键全部变成快捷键(Ctrl+N 开新窗口、Ctrl+Shift+N 开无痕窗口……)。
  • 警惕按键自动重复:down 与 up 之间如果远端卡顿超过 500ms,X 会以约 30Hz 的频率自动重复,一行循环输入瞬间膨胀成上千字符。长文本输入务必走剪贴板。
  • 导航优先用剪贴板:把 URL 写入 Selkies 侧边栏的 Server Clipboard,再右键地址栏”粘贴并转到”,比逐字符注入 URL 快十倍且不会出错。

三、REST API:发布环节的正解

WordPress 的 REST API 配合应用密码(Application Password)后,发文变成了一个 curl 的事。应用密码在 后台 → 用户 → 个人资料 底部生成,以 Basic Auth 方式携带:

# 创建文章
curl -u "user:xxxx xxxx xxxx xxxx xxxx xxxx" \
  -X POST https://example.com/wp-json/wp/v2/posts \
  -H "Content-Type: application/json" \
  -d '{"title":"文章标题","content":"HTML 正文","status":"draft",
       "categories":[56,36],"tags":[228,229]}'

# 上传特色图片(二进制直传)
curl -u "user:xxxx xxxx xxxx xxxx xxxx xxxx" \
  -X POST https://example.com/wp-json/wp/v2/media \
  -H "Content-Disposition: attachment; filename=cover.png" \
  -H "Content-Type: image/png" \
  --data-binary @cover.png

# 绑定封面并发布
curl -u "user:xxxx xxxx xxxx xxxx xxxx xxxx" \
  -X POST https://example.com/wp-json/wp/v2/posts/960 \
  -H "Content-Type: application/json" \
  -d '{"featured_media":964,"status":"publish"}'

相比前端表单 + 滑块验证码的提交方式,API 路径没有验证码、没有会话超时、没有编辑器加载等待,稳定性高出一个量级。子比(Zibll)主题的前端发文表单虽好,但腾讯拼图验证对自动化极不友好,把发布环节整体迁到 REST API 是本次实践收益最大的决策。

四、主题私有字段的兜底方案

REST API 并非万能:主题注册的自定义分类法(如子比的专题 zib_topic)和未注册到 REST 的 postmeta(如独立 SEO 三字段)无法直接通过标准接口写入。此时有两类兜底方案:

  • GUI 编辑器兜底:Agent 在 wp-admin 打开文章编辑页,定位到主题设置 metabox,通过剪贴板粘贴填入中文 SEO 标题、描述与关键词,最后点击”更新”。wp-admin 内部保存不触发验证码。
  • XML-RPC 通道:若主题未完全禁用,wp.editPost 支持自定义字段写入,可作为 REST 的补充。

五、AI 封面与内容质量

封面图由文生图模型按文章主题生成(1344×768 横幅比例),本地生成后经 REST 媒体接口直传,从生成到绑定特色图片不超过一分钟。文章正文则由 LLM 按站点既有风格撰写——本站前几篇 Docker 网络排障、OpenWebUI 部署的文章结构(问题引入 → 原理拆解 → 操作步骤 → 踩坑总结)就是很好的 few-shot 模板。

六、踩坑清单

  • keysym 必须用十进制字符串传给 _sendKeyEvent,传键名会静默失败;
  • Edge 地址栏可接受注入的 keysym,但焦点必须在点击后立即使用,Escape 会让焦点回落到页面;
  • 远程机器重启后 Edge 首启向导需要先处理,否则后续点击全部落空;
  • 会话抢占:Selkies 同一时刻只允许一个主客户端,第二个客户端接入会直接杀死前一个连接;
  • 分类、标签、专题、封面、SEO 五要素在发布前逐项校验,缺一项就宁可先存草稿。

结语

自动化不是把人从流程里赶走,而是把流程里”机械重复”的部分交给 Agent,把”判断与品味”留给自己。这套 双链路(GUI + API)架构 已经在真实站点上稳定运行,从签到、浏览到发文,每天早晨自动完成。下一阶段计划把失败重试、验证码人工兜底的通知也接入 IM,实现完全无人值守。

© 版权声明
THE END
喜欢就支持一下吧
点赞13 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容