1. 项目概述:自动化内容创作的“中枢神经”

每天更新一篇高质量的博客,对任何内容创作者来说都是一项极具挑战性的任务。灵感枯竭、时间碎片化、发布流程繁琐,这些痛点常常让日更计划半途而废。今天分享的这套自动化工作流,就是我为了解决这个问题,经过多次迭代和优化后搭建的“内容中枢”。它就像一个不知疲倦的虚拟助手,每天自动完成从选题、撰写、格式化到发布的完整链条。

这个工作流的核心,是利用 n8n 这个强大的开源自动化工具作为“大脑”,串联起 OpenAI 的文本生成能力和 WordPress 的内容管理能力。简单来说,就是让 AI 根据预设的主题或关键词,自动生成一篇结构完整、内容可读的草稿,然后自动发布到你的 WordPress 网站上。整个过程无需人工干预,真正实现“设置一次,每日自动更新”。

它特别适合个人博主、小型内容团队,或者任何希望保持网站内容持续、规律更新的运营者。即使你对编程只有初步了解,也能通过 n8n 的图形化界面轻松搭建。接下来,我将从设计思路到每一个实操细节,完整拆解这个工作流,并分享我在搭建过程中踩过的坑和总结的经验。

2. 工作流整体设计与核心思路拆解

2.1 为什么选择 n8n + OpenAI + WordPress 这个组合?

在搭建自动化系统时,工具选型决定了系统的稳定性、可维护性和扩展性。我选择这个组合,是基于以下几个核心考量:

首先, n8n 作为流程引擎 。与 IFTTT、Zapier 等云端自动化工具相比,n8n 是开源且可以自托管的。这意味着你对数据和流程拥有完全的控制权,不用担心服务商变更规则或关闭服务。它的节点(Nodes)库极其丰富,几乎可以连接任何你能想到的 API 或服务,并且通过自定义代码节点,可以实现无限的可能性。图形化的工作流设计界面,让逻辑编排变得直观,调试也非常方便。

其次, OpenAI API 作为内容生成核心 。市面上有很多文本生成模型,但 OpenAI 的 GPT 系列(特别是 GPT-3.5-turbo 和 GPT-4)在生成内容的连贯性、创造性和指令遵循能力上,目前依然处于领先地位。通过 API 调用,我们可以精确控制生成内容的主题、风格、长度和格式,使其更贴合博客文章的需求,而不是泛泛而谈。

最后, WordPress 作为内容终点 。WordPress 占据了全球超过40%的网站市场份额,其 REST API 非常成熟和稳定。通过 API 发布文章,可以绕过后台界面,实现程序化操作,不仅速度快,还能与任何外部系统集成。无论你的网站是用于个人记录还是商业展示,WordPress 都是一个可靠且功能强大的发布平台。

这个组合的优势在于: 可控、强大、通用 。n8n 负责调度和逻辑,OpenAI 负责生产内容,WordPress 负责呈现内容,三者各司其职,形成了一个高效的闭环。

2.2 自动化工作流的四大核心阶段

整个工作流可以清晰地划分为四个阶段,每个阶段解决一个关键问题:

  1. 触发与调度阶段 :解决“何时开始”的问题。我们需要一个可靠的触发器来启动每天的工作流。n8n 提供了“Schedule Trigger”节点,可以像 Cron 任务一样,精确设定在每天某个特定时间(例如,凌晨2点)自动运行工作流。这个时间通常选择在网站访问低峰期,避免发布过程对服务器性能产生影响。

  2. 内容生成与润色阶段 :解决“写什么”和“怎么写”的问题。这是工作流最核心的部分。触发器启动后,工作流会调用 OpenAI API。这里的关键在于设计一个有效的“提示词”(Prompt)。一个好的 Prompt 需要包含:明确的文章主题或关键词(可以从预设列表中随机选取,或基于热点生成)、期望的文章风格(如专业严谨、轻松活泼)、目标字数、文章结构要求(如必须包含引言、主体、结论)等。生成初稿后,通常还需要增加一个“润色”环节,例如检查语法、优化段落过渡,甚至生成一个吸引人的标题和摘要。

  3. 内容格式化与本地备份阶段 :解决“如何适配发布平台”的问题。从 OpenAI 获取的通常是纯文本或 Markdown 格式的内容。而 WordPress 文章可能需要包含 HTML 标签(如加粗、列表、图片)、分类目录(Categories)、标签(Tags)、特色图像等元数据。这个阶段需要编写逻辑,将文本内容转换为 WordPress 可识别的 HTML,并关联好预设的分类和标签。 强烈建议 在此阶段增加一个本地备份节点,将生成的文章内容以 JSON 或文本文件的形式保存到服务器或云存储中。这是一个重要的容错机制,万一发布失败,你还有原始数据可以追溯。

  4. 发布与状态确认阶段 :解决“如何发布”和“结果如何”的问题。利用 n8n 的“WordPress”节点或通用的“HTTP Request”节点,调用 WordPress REST API 的创建文章接口( /wp-json/wp/v2/posts ),将格式化好的文章内容、标题、分类、状态(通常先设为“草稿”供审核,熟练后可设为“发布”)等信息以 POST 请求发送。发布成功后,工作流应该捕获返回的文章 ID 和链接,并通过一个“通知”节点(如 Email、Telegram、Slack)将发布结果发送给你,完成闭环。

注意:在初期测试时,务必先将文章状态设置为“草稿”( status: draft ),并在后台人工审核后再手动发布。完全信任 AI 生成内容直接发布存在风险,可能产生不符合预期或质量不高的内容。

3. 核心组件配置与实操要点

3.1 n8n 的部署与基础配置

n8n 的部署方式非常灵活。对于个人使用,我最推荐的是 Docker Compose 部署 ,它简单且易于管理。

首先,在你的服务器上创建一个 docker-compose.yml 文件:

version: '3.8'

services:
  n8n:
    image: n8nio/n8n
    container_name: n8n
    restart: unless-stopped
    ports:
      - "5678:5678"
    environment:
      - N8N_PROTOCOL=https
      - N8N_HOST=your-domain.com # 替换为你的实际域名
      - N8N_PORT=5678
      - N8N_WEBHOOK_URL=https://your-domain.com/
      - WEBHOOK_URL=https://your-domain.com/
      - GENERIC_TIMEZONE=Asia/Shanghai
      - N8N_ENCRYPTION_KEY=your-super-secret-encryption-key # 请替换为强密码
      - N8N_USER_MANAGEMENT_DISABLED=false # 启用用户管理
      - N8N_BASIC_AUTH_ACTIVE=true
      - N8N_BASIC_AUTH_USER=admin # 设置登录用户名
      - N8N_BASIC_AUTH_PASSWORD=your-strong-password # 设置登录密码
    volumes:
      - n8n_data:/home/node/.n8n
volumes:
  n8n_data:

执行 docker-compose up -d 后,n8n 服务就会启动。通过 https://your-domain.com:5678 即可访问。首次登录需要你设置的用户名和密码。

关键配置解析

  • N8N_ENCRYPTION_KEY :这是加密工作流凭据的密钥,必须设置且妥善保管。一旦丢失,所有保存的 API 密钥等都将无法解密。
  • N8N_USER_MANAGEMENT_DISABLED N8N_BASIC_AUTH_ACTIVE :对于公开访问的实例,必须开启认证,否则你的自动化流程和敏感信息将暴露在公网上。
  • volumes :将 n8n 的数据持久化到宿主机,避免容器重启后数据丢失。

3.2 OpenAI API 密钥管理与提示词工程

在 n8n 中配置 OpenAI 节点非常简单。你需要在 OpenAI 官网生成一个 API Key,然后在 n8n 的 “Credentials” 中添加。关键是 提示词(Prompt)的设计 ,这直接决定了文章质量。

一个基础但有效的文章生成 Prompt 结构如下:

你是一位资深的[你的领域,如科技、美食、旅行]博主。请以“[文章主题]”为核心,撰写一篇约1200字的博客文章。

要求:
1. 文章结构需包含:引人入胜的开头、3-4个逻辑递进的主体段落、一个简洁有力的结尾。
2. 语言风格:[指定风格,如专业严谨、亲切易懂、幽默风趣]。
3. 在文章中自然地融入以下关键词:[关键词1, 关键词2, 关键词3]。
4. 文章需要提供具体的案例、数据或实操建议,避免空泛论述。
5. 最后,为这篇文章生成3个备选标题和一段150字以内的摘要。

实操心得

  • 主题来源 :可以创建一个“主题池”数组,放在 n8n 的“Code”节点中,每天随机选取一个。主题池需要你定期维护和更新。
  • 温度(Temperature)参数 :控制生成内容的随机性。对于博客文章,我通常设置在 0.7 0.9 之间。太低(如0.2)会导致文章过于刻板和重复;太高(如1.2)则可能偏离主题或逻辑混乱。
  • 分步生成 :不要指望一个 Prompt 生成完美文章。我的策略是:第一个节点生成文章主体,第二个节点基于主体内容,专门优化标题和摘要,第三个节点检查并修正明显的语法或事实错误(可以调用不同的模型,如用 GPT-4 做最终校对)。这样虽然增加了步骤,但质量提升显著。

3.3 WordPress REST API 的对接与文章格式化

WordPress 需要先开启 REST API 支持(默认是开启的)。你需要在 WordPress 后台【用户】->【个人资料】最下方,生成一个“应用程序密码”。

在 n8n 中,使用 “HTTP Request” 节点调用 WordPress API 是最灵活的方式。

请求配置示例

  • Method : POST
  • URL : https://your-wordpress-site.com/wp-json/wp/v2/posts
  • Authentication : Generic Credential
  • Username : 你的 WordPress 用户名
  • Password : 刚才生成的应用程序密码
  • Headers : Content-Type: application/json
  • Body (JSON) :
{
  "title": "{{$json.article_title}}",
  "content": "{{$json.article_content}}",
  "status": "draft", // 测试期用'draft',稳定后用'publish'
  "categories": [5, 12], // 分类ID数组
  "tags": [23, 44] // 标签ID数组
}

格式化要点

  • content 字段需要是 HTML。如果 OpenAI 生成的是 Markdown,需要在 n8n 中用 “Code” 节点或专门的转换节点进行转换。
  • 分类和标签 ID :你需要提前在 WordPress 后台创建好,并记下它们的 ID。可以在浏览器中访问 https://your-site.com/wp-json/wp/v2/categories 查看所有分类及其ID。
  • 特色图像 :上传图片并设置为特色图稍复杂。需要先使用 POST /wp-json/wp/v2/media 接口上传图片,获取其 id ,然后在创建文章的请求体中加入 "featured_media": id 字段。

4. 完整工作流搭建与核心环节实现

4.1 构建每日自动触发流程

在 n8n 编辑器中,从左侧面板拖入 “Schedule Trigger” 节点。这是工作流的起点。

  • 在节点配置中,将 “Trigger Times” 设置为 Every Day
  • 在 “Hour” 和 “Minute” 中指定具体时间,例如 2 0 ,表示每天凌晨2点触发。
  • 时区选择你所在的时区(如 Asia/Shanghai )。

这个节点没有输出数据,它只是一个触发器。连接它后面的第一个处理节点,通常是一个 “Function” 或 “Code” 节点,用于准备初始数据,比如从主题池中随机选择一个今天的写作主题。

4.2 串联内容生成与优化链条

  1. 准备主题(Code节点) :第一个 “Code” 节点,用于随机选择主题并构造请求 OpenAI 的初始数据。

    // 主题池
    const topics = [
      “如何高效学习一门新编程语言”,
      “居家办公提升效率的五个物理空间技巧”,
      “从零开始理解区块链的基本原理”,
      “个人知识管理系统的构建心法”
    ];
    // 随机选取一个
    const selectedTopic = topics[Math.floor(Math.random() * topics.length)];
    
    // 构造给下一个节点的数据
    const output = [{
      json: {
        selected_topic: selectedTopic,
        // 可以加入其他固定参数,如风格、字数要求
        writing_style: “专业但易懂,多使用类比和实例”,
        target_length: 1200
      }
    }];
    return output;
    
  2. 调用 OpenAI 生成草稿(OpenAI节点) :添加 “OpenAI” 节点,选择 “Chat Completion” 操作。在 “Messages” 中配置 “System” 角色和 “User” 角色。System 角色定义 AI 的身份,User 角色传递具体的 Prompt。

    • System : You are a helpful assistant that writes engaging and informative blog posts.
    • User : 请以“{{$json.selected_topic}}”为主题,撰写一篇{{$json.target_length}}字左右的博客文章。风格要求:{{$json.writing_style}}。文章需结构清晰,包含引言、主体和结论。 配置好你的 OpenAI API 凭证,并设置温度等参数。
  3. 提取与解析内容(Function节点) :OpenAI 返回的数据是结构化的,我们需要从中提取出纯文本。

    // 假设 OpenAI 节点的输出被命名为 `openaiData`
    const articleContent = $input.first().json.choices[0].message.content;
    
    // 这里可以添加简单的清洗逻辑,比如去除首尾多余的空格或引号
    const cleanedContent = articleContent.trim();
    
    return [{
      json: {
        raw_article: cleanedContent
      }
    }];
    
  4. 优化标题与摘要(第二个 OpenAI节点) :将上一步的 raw_article 作为输入,再次调用 OpenAI,Prompt 可以设计为:“请为以下文章内容生成3个吸引人的标题选项和一段150字以内的精彩摘要:\n\n{{$json.raw_article}}”。然后解析出标题和摘要。

4.3 实现文章格式化与发布

  1. 格式转换(Code节点) :将 Markdown 转换为 HTML。你可以使用 n8n 内置的 “Markdown” 节点,也可以使用 Code 节点调用一个轻量级 JS 库(需在 n8n 设置中安装 marked 包)。更简单的方法是,在请求 OpenAI 时直接要求它输出 HTML 格式的内容。

  2. 组装发布数据(Function节点) :将标题、HTML内容、摘要(作为文章摘录)、预设的分类/标签ID等,组装成 WordPress API 要求的 JSON 格式。

    // 假设我们从之前的节点获得了 title_options, article_html, summary
    const finalTitle = $json.title_options[0]; // 选取第一个标题作为最终标题
    const categories = [5]; // 你的分类ID
    const tags = [10, 11]; // 你的标签ID
    
    return [{
      json: {
        wp_title: finalTitle,
        wp_content: $json.article_html,
        wp_excerpt: $json.summary,
        wp_status: “draft”, // 重要:先设为草稿!
        wp_categories: categories,
        wp_tags: tags
      }
    }];
    
  3. 调用 WordPress API(HTTP Request节点) :如 3.3 节所述,配置 POST 请求。将上一步组装的 wp_title , wp_content 等字段,通过双花括号 {{}} 映射到请求体 JSON 中。

  4. 备份与通知(并行分支) :在发布节点之前或之后,可以创建分支。

    • 分支一(备份) :使用 “Write File” 节点(如果 n8n 有服务器文件写入权限)或调用另一个云存储 API,将生成的文章标题和内容以 YYYY-MM-DD-title.txt 的格式保存。
    • 分支二(通知) :使用 “Email” 节点或 “Telegram” 节点。如果发布成功(HTTP Request 节点返回 2xx 状态码),则发送成功通知,附上文章标题和草稿链接;如果失败(返回 4xx/5xx),则发送告警通知,附上错误信息,以便及时排查。

5. 常见问题、调试技巧与进阶优化

5.1 部署与连接类问题

问题1:n8n 工作流保存失败,或提示凭证错误。

  • 排查 :检查 N8N_ENCRYPTION_KEY 环境变量是否设置且未更改。如果密钥丢失或变更,之前加密保存的所有凭证都将失效。解决方法是使用备份的密钥,或者清除 n8n 数据卷重新配置。
  • 预防 :务必将 N8N_ENCRYPTION_KEY 记录在安全的密码管理器中。

问题2:WordPress API 返回“401 Unauthorized”错误。

  • 排查 :这是最常见的权限问题。首先确认你的 WordPress 用户名正确。其次,确保使用的是在后台生成的“应用程序密码”,而不是你的账户登录密码。应用程序密码是一串16位的字符。
  • 技巧 :可以在浏览器中先用 Postman 或 curl 命令测试一下 API 调用,排除 n8n 配置问题。命令示例: curl -X POST https://yoursite.com/wp-json/wp/v2/posts -u “username:application_password” -H “Content-Type: application/json” -d ‘{“title”:”Test”, “content”:”Test”, “status”:”draft”}’

问题3:OpenAI 节点超时或返回速率限制错误。

  • 排查 :免费账户或新账户的 API 调用有速率限制(RPM/TPM)。如果工作流复杂,调用频繁,可能触发限制。
  • 解决 :在 n8n 的 OpenAI 节点配置中,增加“超时时间”设置。更根本的解决方法是,在连续调用 OpenAI 的节点之间,添加 “Wait” 节点,人为增加1-2秒的间隔,以符合免费 tier 的速率限制。

5.2 内容质量与稳定性问题

问题4:AI 生成的文章内容空洞、跑题或格式混乱。

  • 优化 Prompt :这是解决问题的核心。在 Prompt 中提供更具体的指令,例如:“请围绕‘{{主题}}’,首先分析其面临的三个主要挑战,然后针对每个挑战提供两个具体的解决方案,最后用一个实际案例总结。”
  • 引入“少样本学习” :在 Prompt 中给出一两个你写的优秀文章的例子(Example),让 AI 模仿其风格和结构。
  • 分阶段生成 :如前所述,不要一步到位。用多个节点串联,分别负责生成大纲、撰写正文、润色语言、创作标题。

问题5:如何避免生成重复或类似的主题?

  • 动态主题池 :将主题池存储在外部的数据库或 Google Sheets 中。每次工作流运行时,不仅随机选取,还将已选主题标记为“已使用”,并从后续选择池中暂时移除,过一段时间后再释放。
  • 结合外部信息 :使用 n8n 的 “RSS Feed Read” 节点抓取行业新闻,或者用 “HTTP Request” 节点调用一些趋势 API,将热点关键词作为文章主题的一部分,保证内容时效性。

5.3 工作流健壮性提升技巧

  1. 增加异常处理 :在关键节点(如 OpenAI 调用、WordPress 发布)后,连接一个 “IF” 节点,判断该节点执行是否成功(例如,检查是否有错误信息,或 HTTP 状态码是否为200)。如果失败,则跳转到错误处理分支(如发送警报、记录日志、重试等),而不是让整个工作流静默失败。

  2. 实现人工审核环节 :这是从“全自动”到“人机协同”的关键一步。可以在生成文章后,不直接发布,而是调用一个“待办事项”API(如 Trello、滴答清单)或发送一封审核邮件,邮件中包含文章预览和一个“批准发布”的链接(这个链接可以触发另一个用于发布的工作流)。只有当你点击批准后,文章才会正式发布。

  3. 定期维护与评估 :自动化不是一劳永逸。每周花一点时间检查自动发布文章的数据(阅读量、评论、停留时间)。根据数据反馈,调整你的主题池、Prompt 指令和发布策略。例如,如果发现“实操指南”类文章更受欢迎,就可以在主题池和 Prompt 中强化这一方向。

搭建这样一个自动化系统,最大的收获不是每天节省的那一小时,而是它迫使你将内容创作流程化、结构化。你需要仔细思考:什么是一篇好文章的标准?如何将你的知识和风格“传授”给 AI?这个过程本身,就是对个人内容体系的一次深度梳理和升级。从最初的简单拼接,到现在的稳定运行并不断迭代,这套系统已经为我默默服务了上百天,它让我能更专注于思考战略和与读者互动,而不是被日常的发布任务所束缚。

Logo

中国智能体开发者社区,聚焦智能体与大模型开发,提供前沿资讯、实用工具链、开源项目及行业案例。通过技术沙龙、开发者大赛等活动,促进经验交流与协作,助力开发者快速构建创新智能应用。

更多推荐