前言

把个人博客的运维工作交给 AI Agent,听起来像科幻情节,但今天它真实发生了。

整个过程从一次简单的 SSH 连接测试开始,逐步梳理出服务器上的完整站点架构,最终形成一套可复现的自动化发布手册,并以这篇文章本身作为首篇实战检验。以下记录全流程,供同样想尝试「AI 运维托管」的开发者参考。

安全声明:本文已对所有敏感信息(服务器 IP、密钥指纹、内部路径细节等)做脱敏处理,仅保留方法论层面的参考价值。


一、运维交接的第一步:建立安全连接

任何远程运维的前提是可控的访问通道。在正式操作前,需要完成三件事:

1.1 验证 SSH 连通性

通过本地 ~/.ssh/config 中预配置的主机别名,测试与云服务器的连通性。关键检查项:

  • 密钥认证是否正常(RSA 4096 密钥对)
  • known_hosts 指纹是否匹配
  • 防火墙是否放行 TCP 22 端口(云厂商控制台 + 本地 ufw 双重确认)

1.2 摸清站点家底

连通后立即执行架构普查,绘制出完整的站点地图:

路径 服务 技术栈
/ 主站首页 静态 HTML
/blog/ 技术博客 Hexo + Butterfly 5.5.4
/new/ 新版博客 Next.js(本地 {REDACTED_PORT})
/stats-api/ 统计 API 本地 {REDACTED_PORT}
/beta/ 测试页 静态 HTML
/store/ Store 子站 静态 HTML

Nginx 作为统一入口,负责路由分发、SSL 终结和静态资源缓存。SSL 证书由 Let’s Encrypt 托管,配合 certbot 自动续期。

1.3 读取既有运维知识

服务器上部署了一套 OpenClaw 自动化工作流,其中包含两个关键 Skill:

  • blog-post-publish:博客发布全流程(Front Matter → JSON-LD → 内链 → 构建 → 验证 → Git)
  • podcast-voice-skill:TTS 语音合成 + 真人化后处理

这两个 Skill 构成了博客发布的知识基线,新 Agent 必须完全兼容其规范。


二、制定标准化运维手册

接手不是简单的「能连上就行」,而是要建立可交接、可审计、可回滚的标准流程。

2.1 手册设计原则

在编写 BLOG-OPS.md 时,遵循三个原则:

  1. 单文件自治:所有信息(发布流程、监控命令、故障处理)浓缩在一个文件,不依赖外部上下文
  2. 检查清单驱动:每一步都有明确的 Checklist,Agent 执行时可逐项勾选
  3. 陷阱前置:把已知踩坑点(如 Hexo 文件名日期前缀问题、内链 URL 前缀问题)放在最显眼位置

2.2 发布流程八步法

基于 OpenClaw 的 blog-post-publish Skill,进一步细化为可落地的 SOP:

1
2
文件名规范 → Front Matter 注入 → JSON-LD 结构化数据
→ 内链建设 → 内容增强 → 构建验证 → llms.txt 更新 → Git 提交

其中步骤 2 和 3是 SEO/GEO 的核心战场:

  • Front Matter 必须包含 titledescriptionkeywordsslugtagscategories,且 description 控制在 120–160 字
  • JSON-LD 必须同时注入 BlogPostingBreadcrumbList 两个 graph,使用 | 块标量避免 YAML 转义破坏 JSON 结构

2.3 数据脱敏规范

由于手册需要纳入版本控制并可能被公开查阅,所有敏感字段统一脱敏:

敏感项 处理方式
服务器公网 IP 替换为 x.x.x.x 或描述性占位符
SSH 密钥指纹 完全移除,仅保留轮换指引
内部 API 密钥 绝不写入文档,通过环境变量注入
真实用户名 用通用角色名替代

三、实战检验:发布本文

手册写完后,最好的验证方式就是用它来发布自己

3.1 文章准备

  • Slugai-agent-takes-over-blog-operations(纯英文,无日期前缀)
  • 分类自动化运营
  • 标签AI Agent自动化运营SEO/运维
  • 关键词:围绕「AI Agent、博客运维、Hexo 自动化、JSON-LD、GEO 优化」展开

3.2 结构化数据注入

JSON-LD 中的 BlogPosting 包含以下关键字段:

  • @idurl 严格使用 https://liclaw.site/blog/ 前缀
  • datePublished 采用 ISO 8601 + +08:00 时区格式
  • keywords 为 JSON 数组,非逗号分隔字符串
  • speakable 配置使文章支持语音朗读场景

3.3 内链策略

在文章末尾关联 3 篇主题相近的历史文章:

  • SEO/GEO 升级实录:同属站点优化主题,展示从 SEO 到 GEO 的演进
  • Vibe Coding 编排:同属 AI Agent 工程实践,展示 Agent 工作流方法论
  • OpenClaw 零成本指南:同属工具链生态,展示底层基础设施

所有内链 URL 严格遵循 /blog/YYYY/MM/DD/slug/ 格式,以 /blog/ 开头。

3.4 构建与验证

执行 hexo generate 后,逐项验证:

  1. 文件存在性public/2026/05/19/ai-agent-takes-over-blog-operations/index.html
  2. JSON-LD 输出curl 抓取页面,确认 BlogPostingBreadcrumbList 数量正确
  3. Meta 标签descriptionkeywords 与 Front Matter 一致
  4. 内链可访问:每条内链返回 200,无 404
  5. llms.txt 更新:新文章条目已追加到 source/llms.txtsource/llms-full.txt

3.5 Git 归档

最终提交信息遵循规范:

1
2
git add -A
git commit -m "post: 当 AI Agent 接手博客运维:从零信任到自动化发布的完整实战"

四、交付物与经验总结

4.1 本次交付物

交付物 说明
BLOG-OPS.md 博客与站点运维操作手册(发布流程 + 监控命令 + 故障处理)
更新后的 AGENTS.md 将博客运维能力纳入 AI 上下文
本文 首篇由新 Agent 按手册完整流程发布的文章

4.2 关键经验

  1. 先摸底,再动手:不急于发布,先完整扫描服务器架构和既有知识资产
  2. 手册即代码:运维手册应该像代码一样有版本、有检查清单、有已知 Bug 列表
  3. 用实战验证流程:首篇文章就是流程的验收测试,所有检查项必须逐项通过
  4. 脱敏是底线:任何可能进入版本控制或公开渠道的文档,默认做数据脱敏

五、常见问题

Q1: AI Agent 发布博客会不会出错?

通过「检查清单 + 自动化验证」双保险控制。发布前 14 项 SEO/GEO 检查清单逐项确认,构建后通过 curl 抓取页面做自动化断言,Agent 和人类一样需要测试。

Q2: 敏感信息如何防止泄露?

三层防护:① 文档层脱敏(IP、指纹替换为占位符);② 配置层隔离(密钥走环境变量,不入版本控制);③ 审查层兜底(发布前 Agent 自检敏感信息模式)。

Q3: 如果 Agent 操作失误怎么办?

所有操作基于 Git 版本控制,博客源码在 /var/www/liclaw.site/blog/ 下有完整 Git 历史,可随时 git revert。Nginx 配置也有备份文件(.bak.{timestamp})。

Q4: 未来可以扩展哪些自动化能力?

当前已实现「文章发布自动化」,下一步可扩展:① 定时扫描 SSL 证书有效期并预警;② 监控 Nginx 错误日志并自动分类;③ 基于访问数据生成月度博客运营报告。


相关文章