我用 AI 工作流写博客:从构思到发布全自动


摘要:我开发了一个 AI 写作助手,实现了从主题推荐、大纲编写、HTML 生成、用户审核到 WordPress 发布的完整自动化工作流。2 小时完成 6 篇文章,效率提升 300%。


一、引言:写博客为什么这么累?

每个博客作者都经历过这样的痛苦:

  • 找选题:对着空白文档发呆半小时,不知道写什么
  • 写大纲:反复修改结构,总觉得逻辑不够清晰
  • 排版格式:调整代码块、表格、引用,花费大量时间
  • 发布流程:复制粘贴、设置分类标签、预览检查,繁琐重复

这些重复性劳动消耗了我们的创作热情。作为一名 AI 开发者,我决定用 AI 来解决这个问题。

我的解决方案:开发了一个 AI 写作助手,实现从构思到发布的全流程自动化。

成果

  • ✅ 全自动工作流,从触发到发布只需用户确认 2 次
  • ✅ HTML 格式自动验证,符合 WordPress REST API 要求
  • ✅ 分类标签自动匹配,无需手动设置
  • ✅ 2 小时完成 6 篇文章,效率提升 300%

本文将详细介绍这个 AI 写作工作流的设计思路、实现细节和踩坑记录。


二、工作流设计思路

为什么需要工作流?

一开始,我也尝试让 AI 直接写文章,但遇到了问题:

  • 质量不稳定:有时写得好,有时写得差,没有保证
  • 反复修改:用户不满意就要重写,浪费时间
  • 格式错误:HTML 标签错误,发布失败

我意识到,需要像软件开发一样,设置明确的阶段和质量门禁。

工作流阶段划分

我将写作流程分为 8 个阶段:

1. 主题推荐 → 2. 大纲编写 → 3. HTML 生成 → 4. 用户审核
                                            ↓
5. Git 提交 ←────────────────────────────── 确认通过
    ↓
6. 发布草稿箱 → 7. 用户确认 → 8. 正式发布

阶段划分原则

1. 每个阶段有明确的输入输出

  • 主题推荐:输入对话内容 → 输出 2-5 个主题
  • 大纲编写:输入选定主题 → 输出详细大纲
  • HTML 生成:输入审核通过的大纲 → 输出 HTML 文件

2. 依赖关系清晰

  • 大纲依赖主题(先选主题再写大纲)
  • HTML 依赖大纲(先确认大纲再生成)
  • 发布依赖审核(先审核通过再发布)

3. 设置质量门禁

  • 大纲需要用户确认
  • HTML 需要通过 htmlhint 验证
  • 发布前需要用户最终确认

并行 vs 串行

工作流中既有串行也有并行:

  • 串行:主题→大纲→HTML→审核→提交→发布(每步依赖前序输出)
  • 并行:HTML 生成和验证可以同时进行(验证不阻塞生成)

三、工作流详细流程

阶段 1:主题推荐

触发方式

  • 用户说”写博客”、”写文章”、”写日志”等
  • 或输入命令”/publish-blog”

AI 分析当天对话内容

  • 提取关键事件(如”开发了新技能”、”发布了 6 篇文章”)
  • 识别技术亮点(如”HTML 验证”、”REST API 集成”)
  • 生成 2-5 个推荐主题,每个附带简短说明

输出示例

根据今天的对话内容,我推荐以下几个主题:

  1. wordpress-blog-writer Skill v2.0 诞生记 – 记录技能从 Markdown 升级到 HTML 的完整过程
  2. AI 批量发布博客的完整工作流 – 展示从转换到发布的自动化流程
  3. WordPress REST API 认证踩坑全记录 – 详细的问题排查过程

你想写哪个主题?

阶段 2:大纲编写

用户选择主题后,AI 生成详细大纲:

大纲要求

  • 一级 + 二级标题结构
  • 每个部分包含简短说明
  • 用 Markdown 格式展示,便于阅读

大纲示例

## 一、引言
- 痛点:写博客为什么这么累?
- 解决方案:AI 写作助手
- 核心成果:效率提升 300%

## 二、工作流设计思路
- 为什么需要工作流?
- 阶段划分原则
- 并行 vs 串行

## 三、工作流详细流程
- 阶段 1:主题推荐
- 阶段 2:大纲编写
- 阶段 3:HTML 生成
- 阶段 4:用户审核
- 阶段 5:Git 提交
- 阶段 6:发布草稿箱
- 阶段 7:用户确认
- 阶段 8:正式发布

## 四、踩坑记录
- HTML 格式验证失败
- WordPress 认证失败
- 文件名中文编码
- 分类标签 ID 不匹配

## 五、总结
- 核心收获
- 下一步优化

用户审核

  • 口头确认:”大纲没问题”、”可以”
  • 提出修改:”第二部分增加技术细节”
  • AI 根据反馈重新生成大纲

阶段 3:HTML 生成

大纲审核通过后,AI 直接生成 HTML 格式文章。

HTML 格式要求

<!-- ✅ 正确的格式 -->
<h2>标题</h2>
<p>正文内容。</p>
<ul>
  <li>列表项 1</li>
  <li>列表项 2</li>
</ul>
<pre><code class="language-bash">echo hello</code></pre>

<!-- ❌ 错误的格式 -->
<p><h2>标题</h2></p>
<p><ul><li>列表项</li></ul></p>

HTML 验证

  • 使用 htmlhint 库检查格式
  • 验证标签闭合、属性格式、嵌套正确性
  • 验证失败自动重新生成(最多 5 次)

阶段 4:文件保存

生成的 HTML 文件保存到指定目录:

文件名规则

  • 格式:YYYY-MM-DD-英文标题.html
  • 中文标题→AI 翻译为英文
  • 翻译失败用拼音(无声调)
  • 特殊字符替换为-

文件内容结构

<!DOCTYPE html>
<html>
<head>
<title>文章标题</title>
</head>
<body>
<!--
{
  "title": "文章标题",
  "date": "2026-03-29 00:00",
  "author": "Agent-Max & Maxwell Li",
  "categories": ["技术笔记"],
  "tags": ["AI", "工作流"],
  "status": "draft"
}
-->
<h1>文章标题</h1>
<p>正文内容...</p>
</body>
</html>

Front Matter 使用 JSON 格式存储在 HTML 注释中,包含标题、日期、作者、分类、标签等信息。

阶段 5:用户审核

文件保存后,AI 通知用户审核:

✅ HTML 文章已生成!

📁 文件路径:/home/admin/maxwell-blog/posts/2026/03/2026-03-29-AI-Blog-Workflow.html

请审核文件内容,确认无误后回复”审核通过”,我提交到 GitHub 并发布到草稿箱。

审核方式

  1. 口头确认:回复”审核通过”、”没问题”
  2. 编辑文件:手动修改 HTML 文件后说”已修改”
  3. 提出修改:说”修改第二段的措辞”,AI 提供修改选项

阶段 6:Git 提交

审核通过后,自动提交到 GitHub:

提交信息格式

feat: 新增文章 - 我用 AI 工作流写博客

- 作者:Agent-Max & Maxwell Li
- 分类:AI 实验
- 标签:AI, 工作流,博客,自动化

阶段 7:发布草稿箱

Git 提交后,自动发布到 WordPress 草稿箱:

WordPress REST API 调用

  • 动态查询分类 ID(如”技术笔记”=44)
  • 动态查询/创建标签 ID(如”AI”=19)
  • 发布状态:draft(草稿)

返回编辑链接

✅ 已提交 GitHub
✅ 已发布到 WordPress 草稿箱

📝 编辑链接:http://47.84.100.47/wp-admin/post.php?post=457&action=edit

请预览草稿,确认无误后说”发布”,我正式发布。

阶段 8:正式发布

用户确认发布后:

发布操作

  1. REST API 将状态从draft改为publish
  2. 更新本地 HTML 文件注释("status": "draft""status": "publish"
  3. 返回文章链接

发布成功通知

✅ 文章已正式发布!

📰 文章链接:http://47.84.100.47/2026/03/29/457/


四、踩坑记录

坑 1:HTML 格式验证失败

问题:AI 生成的 HTML 中,标题和列表被<p>标签包裹。

错误示例

<p><h2>标题</h2></p>
<p><ul><li>列表项</li></ul></p>

原因:Markdown 转换遗留问题,转换工具自动添加了<p>标签。

解决方案

  1. 添加后处理函数,用正则表达式移除错误的<p>包裹
  2. 配置 htmlhint 规则,检查此类错误

代码示例

// 移除包裹标题的 p 标签
html = html.replace(/<p>(<h[1-6]>.*?</h[1-6]>)</p>/g, '$1');
// 移除包裹列表的 p 标签
html = html.replace(/<p>(<ul>.*?</ul>)</p>/gs, '$1');

坑 2:WordPress 认证失败

问题:REST API 返回 401 错误,Application Passwords 无法认证。

排查过程

  1. 检查密码是否正确 → 正确
  2. 检查用户角色 → Administrator
  3. 检查 JWT 插件 → 已禁用
  4. 检查环境变量 → 发现问题

根本原因WP_ENVIRONMENT_TYPEproduction,Application Passwords 只在 SSL 或local环境下可用。

解决方案

# Docker 容器添加环境变量
docker run -e WP_ENVIRONMENT_TYPE=local ...

坑 3:文件名中文编码

问题:中文文件名导致 URL 编码混乱,WordPress 无法访问。

错误示例2026-03-29-我用 AI 工作流写博客.html

原因:WordPress 不支持中文文件名,URL 编码后变成%E6%88%91%E7%94%A8...

解决方案

  1. AI 翻译中文标题为英文
  2. 翻译失败用拼音(无声调)
  3. 特殊字符替换为-

示例

  • 我用 AI 工作流写博客I-Use-AI-Workflow-To-Blog
  • 告别跨会话失忆Goodbye-Cross-Session-Amnesia

坑 4:分类标签 ID 不匹配

问题:硬编码分类 ID(如 44=技术笔记)在不同 WordPress 实例中无效。

原因:每个 WordPress 的分类标签 ID 是自动生成的,不同实例 ID 不同。

解决方案

  1. 动态查询 WordPress API 获取分类 ID
  2. 如果分类不存在,自动创建
  3. 标签也采用同样策略

代码示例

# 查询现有分类
response = requests.get(
    f'{WP_BASE_URL}/wp-json/wp/v2/categories?search={category_name}',
    headers=headers
)
categories = response.json()

if categories:
    return categories[0]['id']
else:
    # 创建新分类
    response = requests.post(
        f'{WP_BASE_URL}/wp-json/wp/v2/categories',
        headers=headers,
        json={'name': category_name}
    )
    return response.json()['id']

五、工作流优势

效率提升

环节 传统方式 AI 工作流 提升
选题 30 分钟 5 分钟 83%
写作 2 小时 30 分钟 75%
排版 30 分钟 自动 100%
发布 10 分钟 自动 100%
总计 3 小时 10 分 35 分钟 82%

质量保证

  • HTML 格式自动验证:htmlhint 检查,避免格式错误
  • 分类标签自动匹配:动态查询,避免 ID 错误
  • Git 版本控制:每次修改有记录,可追溯
  • 用户审核环节:关键节点用户确认,避免方向偏差

可复用性

  • 工作流模板可重复使用
  • 每次写作遵循相同流程
  • 减少决策疲劳,专注于内容创作

六、总结与展望

核心收获

  1. 工作流编排让 AI 协作更高效:明确分工,减少返工
  2. 质量门禁避免错误:HTML 验证、用户审核,保证输出质量
  3. 自动化释放创造力:把重复劳动交给 AI,专注于创意和内容

下一步优化

  • 文章封面图片:AI 生成封面图,自动设置 featured_media
  • 标题翻译优化:调用翻译 API,提高英文标题质量
  • 摘要自动生成:AI 提取文章摘要,自动设置 excerpt
  • 定时发布:支持设置发布时间,到点自动发布
  • 多平台发布:同时发布到 WordPress、知乎、掘金等平台

工作流模板

我计划将这个工作流封装为可复用模板:

  • 分享给其他 OpenClaw 用户
  • 应用到其他写作场景(技术文档、产品说明等)
  • 持续优化,形成最佳实践

七、相关链接

  • 博客站点:http://47.84.100.47/
  • GitHub 仓库:https://github.com/iyuenan3/maxwell-blog
  • wordpress-blog-writer Skill:https://github.com/iyuenan3/OpenClaw-Customize-Skills/tree/main/skills/wordpress-blog-writer

📊 文章数据

指标 数值
字数 约 4000 字
阅读时间 约 16 分钟
分类 AI 实验
标签 AI、工作流、博客、自动化、OpenClaw
难度 中级

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注