WordPress 内容版本控制和 GitHub 备份 - n8n 工作流

利用这个高级 n8n 流程来保障你的 WordPress 内容安全。定时自动备份,对比内容变更,并且只将新增或修改过的文章提交到 GitHub。

工作流预览

准备好自动化了吗?

下载此 n8n 工作流模板并立即开始使用。

适用人群


  • 需要可靠、自动内容备份的博客管理员。

  • 有兴趣将博客内容视为代码以保留版本历史和方便取回的开发者。

  • 正在寻找能展示复杂差分逻辑和自引用流程的高级 n8n 模板的 n8n 用户。

  • 任何需要强大 n8n 流程来进行 GitHub 文件管理的人。

概览

这个全能的 n8n 流程旨在通过将文章备份到指定的 GitHub 仓库,来确保你 WordPress 内容的完整性和版本历史。和那些简单的备份方案不一样,这个 n8n 自动化只有在内容是全新或确实被修改过时才会提交,避免了不必要的提交,保持了仓库历史的干净清爽。它用到了一个精妙的子流程结构,以及一个自定义的 n8n 节点来对 JSON 内容做差分对比,是 n8n 高级自动化能力的一个绝佳展示。

工作原理

n8n 流程通过定时或手动启动来运行。


  1. 触发与提取: n8n 的触发器(定时或手动)启动流程。'Get All WP Posts' n8n 节点会从已配置的 WordPress 站点抓取所有内容。

  2. 流程迭代: 接着,'Execute Workflow' n8n 节点会逐一处理每篇 WordPress 文章。关键在于,这个节点会执行同一个 n8n 流程的后半部分(充当子程序),并将文章数据逐条传递过去。

  3. 设置与获取: 子程序首先定义全局 GitHub 仓库设置(Globals)。它会尝试使用 'Get file data' n8n 节点从 GitHub 获取该特定文章已有的备份文件。该节点被配置为失败时继续,以应对文件可能不存在(即新文章)的情况。

  4. 内容对比: 数据流将获取到的 GitHub 元数据与实际的 WordPress 内容 JSON 合并。然后执行自定义的 'isDiffOrNew' Code n8n 节点。这段专用代码负责解码来自 GitHub 的 base64 内容,对现有数据和新数据的 JSON 键进行排序,以确保可靠的逐字节比较,并设置一个状态变量(github_status: "same", "different", 或 "new")。

  5. 条件操作: 'Check Status' n8n 节点根据前一个 n8n 节点的对比结果充当一个开关。

如果状态是 "same"(相同),n8n 流程跳过提交。
如果状态是 "different"(不同),'Edit existing file' GitHub n8n 节点会用新内容更新文件。
* 如果状态是 "new"(新增),'Create new file' GitHub n8n 节点首次创建备份文件。

这种可靠的逻辑确保了每一次 n8n 执行都能对你的内容版本控制做出有意义的贡献。

安装指南

要部署这个强大的 n8n 流程模板,请按以下步骤操作:


  1. 导入: 复制提供的 JSON 数据并直接导入到你的 n8n 实例中。

  2. WordPress 凭证: 使用你的 WordPress API 凭证配置 'Get All WP Posts' n8n 节点。

  3. GitHub 凭证: 使用具有仓库写入权限的个人访问令牌 (PAT) 配置 GitHub n8n 节点的凭证('Get file data', 'Create new file', 'Edit existing file')。

  4. 全局仓库设置: 找到 'Globals' n8n 节点(位置 200, 120)。你 必须 在这里编辑参数:

repo.owner 设置为你的 GitHub 用户名或组织名称。
repo.name 设置为你的备份仓库名称。
可选:* 如果你希望备份文件有特定的目录结构,可以调整 repo.path

  1. 定时: 检查并调整 'Schedule Trigger' n8n 节点以匹配你想要的备份频率。当前设置是每天 UTC 时间下午 5 点运行。

节点详情

定时触发 / 手动触发:作为启动备份过程的主要 n8n 触发器,支持定时或即时执行。
WordPress n8n 节点 (Get All WP Posts):使用 'getAll' 操作从 WordPress 站点获取所有文章和页面。这些数据构成了 n8n 流程其余部分的数据负载。
Execute Workflow n8n 节点:对于迭代处理 WordPress 文章至关重要。它以 'each' 项目模式调用同一个流程 ID,将 GitHub 备份逻辑隔离到每一篇文章中。
Set n8n 节点 (Globals):集中管理 GitHub 仓库所有者、名称和文件路径结构的配置,方便维护这个 n8n 模板。
GitHub n8n 节点 (Get file data):尝试检索特定 WordPress 条目的现有 JSON 备份文件,在文件名中使用该条目的 ID。关键是,它使用 continueOnFail: true 来处理文件尚不存在的情况。
Code n8n 节点 (isDiffOrNew):包含核心的版本控制逻辑。它处理现有文件的 Base64 解码,并标准化 JSON 对象键,然后执行严格的字符串比较,以判断内容是 'same'(相同)、'different'(不同)还是 'new'(新增)。
Switch n8n 节点 (Check Status):根据前一个 n8n 节点确定的 github_status 来路由流程,确保执行正确的 GitHub 操作(跳过、编辑或创建)。
GitHub n8n 节点 (Create new file / Edit existing file):在 GitHub 仓库中执行必要的文件操作,提交字符串化的 WordPress 内容 JSON,并附上表明更新状态的相关提交信息。

相关 n8n 工作流

免费

节点: 14 节点
更新时间: 2025年12月26日
创建者

精选*