ChatGPT创意写作AI 评分 · 85/100AI 辅助编辑·未发现明显提示词注入风险n8n.io

n8n 定时自动生成博客草稿并发布到 Ghost CMS

定时触发 → OpenAI 生成文章与元数据 → 代码提取并格式化 → 通过 Ghost Admin API 发布

有一点经验步骤流程提示词贴士
给谁
运营博客的内容创作者、希望自动化发布流程的 Ghost 站长
你会得到
每 12 小时自动触发,由 gpt-4.1-mini 生成带标题、标签、SEO 元描述的文章,经格式转换后直接发布到 Ghost 博客
你需要
n8n · schedule · openai · http-request · code

硬约束

前置条件:自建或托管 n8n 实例;在 n8n Credential Manager 中配置 openAiApi(OpenAI API Key)与 ghostAdminApi(Ghost Admin API Key)两类凭证;Ghost 博客需开启 Admin API 并获取 API URL。费用:OpenAI API 按 token 计费,Ghost 自托管或托管版按各自方案计费。边界:模板默认模型为 gpt-4.1-mini-2025-04-14,可在 OpenAI 节点更换为 gpt-4.1 或 gpt-4;Ghost URL 需替换为实际域名;文章默认直接发布(status: published),可在 Code 节点修改。

他们做了什么

作者 darkrangeholdings 在 n8n 创建了一个 5 节点工作流模板:Schedule Trigger 每 12 小时触发;OpenAI 节点调用 gpt-4.1-mini 生成博客正文、标题、SEO 元描述和 5 个标签;第一个 Code 节点用正则从模型输出中提取元数据并将正文转为 HTML;第二个 Code 节点将 HTML 封装为 Ghost mobiledoc 格式;最后通过 HTTP Request 节点以 POST 方式调用 Ghost Admin API 发布文章。模板强调不在代码中硬编码 API Key,而是通过 n8n Credential Manager 管理凭证。

效果如何

模板在 n8n.io 上展示为已发布状态(status: published),截至采集时累计浏览量 4232 次(author_report)。未提供具体博客发布后的读者互动或 SEO 效果数据。

值得知道

1. 模型默认值为 gpt-4.1-mini-2025-04-14,可在 OpenAI 节点参数中切换为 gpt-4.1 或 gpt-4,但不同模型的输出格式稳定性会影响后续正则提取。2. Code 节点中的正则依赖 OpenAI 输出包含 **Blog Post Title:**、**Meta Description:**、**Tags:** 标记;若模型未按格式返回,提取会失败。3. Ghost URL 在 HTTP Request 节点中硬编码为 https://yourcustomurl.com/ghost/api/admin/posts/,必须替换为实际域名。4. 文章默认直接发布(status: published),如需改为草稿需在 Code 节点修改。5. 模板未包含错误处理或重试逻辑,Ghost API 返回非 2xx 时工作流会报错终止。6. 本站未实测该工作流,复现前建议先用样例数据测试 Code 节点的正则匹配。 【边界】来源默认仅 gpt-4.1-mini;「可更换为 gpt-4.1 或 gpt-4」仅为节点可选项说明,非本模板已配置模型。

n8n 工作流模板

结构已检查 · 未实际运行

下载后在 n8n 选择“Import from File”,或复制 JSON 后粘贴到编辑器。先配置自己的账号,再用测试数据运行;模板默认未启用。

配置与测试清单

需要绑定的凭证

  • OpenAI 节点:绑定OpenAI API 凭证。
  • HTTP Request1 节点:绑定Ghost Admin API 凭证。

需要替换的配置

  • 源模板来自 n8n 公开库 #5934(约 8 个节点)。导入后先保持未启用,核对触发器、表达式与外部 API 端点。
  • Sticky Note 中的说明仅供参考;按自己的账号、表结构或频道 ID 替换占位配置。

测试输入与预期结果

  • 在测试环境手动执行一次主路径,确认每个需凭证的节点已连接且无鉴权错误。
  • 用一条合成/脱敏样例数据跑通,核对输出字段与下游写入目标,再考虑生产启用。

模板处理说明

  • 已移除原作者凭证绑定、webhookId 与执行数据,工作流设为未启用;节点、连线与原文提示词保持原样。未在 n8n 中实际运行。
  • 未改业务逻辑;运行前请自行核对密钥、配额与隐私合规。

模板获取日期: 2026-10-24

步骤

  1. 配置定时触发器

    在 n8n 工作流中添加 Schedule Trigger 节点。设置触发规则为每 12 小时执行一次(field: hours, hoursInterval: 12),可指定触发分钟(如 triggerAtMinute: 34)。保存后该节点将作为整个工作流的入口。

  2. 配置 OpenAI 生成节点

    添加 OpenAI 节点(@n8n/n8n-nodes-langchain.openAi),选择已配置的 openAiApi 凭证。模型选择 gpt-4.1-mini-2025-04-14(或更换为 gpt-4.1 / gpt-4)。在 Messages 中填入系统/用户提示词,要求模型生成博客正文、标题、SEO 元描述和 5 个标签。

    运行提示词 · 来源原文。OpenAI 节点的 messages.values[0].content 字段

    Write a high-quality blog post on a creative or thought-provoking topic. The tone should be engaging and immersive. Length: 2–4 paragraphs.
    
    Then add a brief paragraph offering an alternative perspective or logical counterpoint.
    
    Finally, generate:
    - Blog post title
    - Meta description
    - 5 tags
  3. 提取内容与元数据(Code 节点)

    添加 Code 节点,连接 OpenAI 节点输出。节点使用 JavaScript 解析 OpenAI 返回的文本,用正则表达式提取 **Blog Post Title:**、**Meta Description:**、**Tags:** 后的内容;将正文与元数据分离;把正文包装为居中、保留换行的 HTML div;输出包含 title、html、status(published)、tags 数组、meta_description 的 JSON 对象。

    运行提示词 · 来源原文。Code 节点(第一个 Code,id=4c460c9f-0074-4b9a-be5c-f0cfb8bae9bd)的 jsCode 字段

    const content = $json.message.content;
    
    // Extract Blog Post Title
    const titleMatch = content.match(/\*\*Blog Post Title:\*\*\s*(.+)/i);
    const title = titleMatch ? titleMatch[1].trim() : 'Untitled';
    
    // Extract Meta Description
    const metaMatch = content.match(/\*\*Meta Description:\*\*\s*(.+)/i);
    const meta = metaMatch ? metaMatch[1].trim() : '';
    
    // Extract Tags
    const tagsMatch = content.match(/\*\*Tags:\*\*\s*(.+)/i);
    const rawTags = tagsMatch ? tagsMatch[1] : '';
    const tags = rawTags.split(',').map(t => t.trim()).filter(t => t);
    
    // Strip metadata from the body
    const body = content
      .split('\n\n')
      .filter(p => !/\*\*Blog Post Title:\*\*/i.test(p) && !/\*\*Meta Description:\*\*/i.test(p) && !/\*\*Tags:\*\*/i.test(p))
      .join('\n\n');
    
    // Wrap in clean HTML
    const html = `<div style="text-align:center; white-space:pre-line;">${body.trim()}</div>`;
    
    // Return Ghost-compatible JSON
    return [
      {
        json: {
          title,
          html,
          status: 'published',
          tags,
          meta_description: meta
        }
      }
    ];
  4. 格式化为 Ghost mobiledoc(Code1 节点)

    再添加一个 Code 节点,接收上一步的 JSON。将 HTML 内容嵌入 mobiledoc 结构(version: 0.3.1,cards: [['html', {html: htmlContent}]],sections: [[10, 0]]);把 tags 字符串数组转换为 {name: tag} 对象数组;组装 posts 数组,包含 title、mobiledoc(JSON 字符串)、status、tags;输出给 HTTP Request 节点。

    运行提示词 · 来源原文。Code1 节点(id=cb384074-daf5-4945-adf6-40657498493d)的 jsCode 字段

    const title = $json.title;
    const status = $json.status || 'published';
    const tags = ($json.tags || []).map(tag => ({ name: tag }));
    
    // Already wrapped with styling and line breaks — use as-is
    const htmlContent = $json.html;
    
    const mobiledoc = JSON.stringify({
      version: '0.3.1',
      atoms: [],
      cards: [['html', { html: htmlContent }]],
      markups: [],
      sections: [[10, 0]]
    });
    
    return [
      {
        posts: [
          {
            title,
            mobiledoc,
            status,
            tags
          }
        ]
      }
    ];
  5. 发布到 Ghost(HTTP Request 节点)

    添加 HTTP Request 节点,选择 POST 方法。URL 替换为实际 Ghost 博客地址:https://yourdomain.com/ghost/api/admin/posts/。启用 sendBody,body 类型选 JSON,内容为 {{ JSON.stringify($json) }}。Header 添加 Content-Type: application/json。Authentication 选择 predefinedCredentialType,凭证类型选 ghostAdminApi,并绑定已配置的 Ghost Admin API 凭证。

  6. 保存并激活工作流

    检查节点连线:Schedule Trigger → OpenAI → Code → Code1 → HTTP Request1。确认 Ghost URL 和凭证已替换为实际值。保存工作流后点击 Active 开关启用。首次运行可手动点击 Execute Workflow 测试,观察 Ghost 后台是否出现新文章。【首次测试安全】首次测试前,先在第一个 Code 节点将 status 改为 draft,或临时断开 HTTP Request 节点,确认输出格式正确后再恢复发布。

可复制提示词

搭建指导 · 本站建议版本。交给搭建助手,先确认输入和权限

这一段是提示词,页面不会在这里插入广告。

你是一个 n8n 工作流搭建助手。用户希望复现「定时自动生成博客草稿并发布到 Ghost CMS」的模板。请按以下顺序协助:
1. 确认用户已有 n8n 实例访问权限,以及 OpenAI API Key 和 Ghost Admin API Key。
2. 指导用户导入 workflow.json 或按步骤手动创建节点。
3. 强调必须将 HTTP Request 节点中的 URL 从 yourcustomurl.com 替换为实际 Ghost 域名。
4. 建议首次运行前手动执行一次,检查 Ghost 后台文章状态。
5. 若 OpenAI 输出格式与正则预期不符,指导用户在 Code 节点调整匹配规则。

搭建前请准备好 n8n 账号、OpenAI API Key、Ghost Admin API Key 以及 Ghost 博客的 Admin API URL。

来源

Automated blog post generation with GPT-4 and publishing to Ghost CMS · darkrangeholdings · n8n.io · 2025-07-13

留言与反馈

试过这个方法吗?分享效果、遇到的问题或改进建议。留言审核后公开,请勿填写敏感信息。

正在加载…

    相关用例