1. 首页 > 技术教程 > 正文

n8n 自动分发文章到自媒体:RSS、Webhook 和 API 思路

做自媒体的人都知道,内容分发是刚需——写一篇文章要手动复制粘贴到公众号、知乎、头条、小红书,既累又容易出错。n8n 作为一个低代码自动化工作流工具,能帮你在 VPS 上搭建一条自动化分发管线,把文章从 RSS 源、Webhook 或 API 推送到多个自媒体平台。本文不讲概念,直接拆三种主流思路和实战配置。

zhujixuan TASK 142

三种分发思路:RSS、Webhook、API 怎么选

n8n 触发节点支持 RSS Feed Read、Webhook、HTTP Request 等,对应三种常见场景:

RSS 拉取:适合固定站点(比如你的博客、其他 RSS 源)有新文章时自动抓取并分发。n8n 里的 RSS Feed Read 节点可以定时轮询,检测到新条目就触发后续动作。

Webhook 推送:适合内容系统(比如 WordPress、Ghost)在发布文章时主动通知 n8n。你只需在 n8n 里创建一个 Webhook 节点,获取回调 URL,然后在内容系统的发布钩子里配置 POST 请求即可。

API 轮询/主动调用:适合没有 RSS 也没有 Webhook 的源,比如某个 CMS 的 REST API。用 HTTP Request 节点定期拉取文章列表,比对 ID 或时间戳判断是否是新文章。

RSS 拉取:最省事的方案

如果你的博客或内容源支持 RSS(WordPress 默认有 /feed),直接在 n8n 里拖一个 RSS Feed Read 节点,填上 RSS 地址,设置轮询间隔(比如 15 分钟)。新文章被抓取后,用 HTTP Request 节点依次调用各平台的发布 API。

实操注意点:

• 很多 RSS 只输出摘要,不包含全文。你需要用 HTTP Request 节点根据文章链接抓取 HTML,再用 HTML Extract 节点提取正文。或者直接用 n8n 的 HTML to Markdown 节点转换。

• 轮询间隔不要太短(<5 分钟),避免被源站封 IP。建议 15-30 分钟。

Webhook 推送:实时性最好的方案

内容系统发布文章时,通过自定义 Webhook 把文章标题、正文、标签等信息 POST 到 n8n。n8n 的 Webhook 节点支持 GET/POST,你只需要在 n8n 里配置一个 Webhook URL,然后在 WordPress 的 `publish_post` 钩子里用 wp_remote_post 发送请求。

WordPress 侧代码示例(放到主题的 functions.php 或自定义插件里):

php
add_action('publish_post', function($post_id) {
$post = get_post($post_id);
if ($post->post_status != 'publish') return;
$data = array(
'title' => $post->post_title,
'content' => $post->post_content,
'url' => get_permalink($post_id),
'tags' => wp_get_post_tags($post_id, array('fields' => 'names'))
);
wp_remote_post('https://你的n8n域名/webhook/your-webhook-id', array(
'body' => json_encode($data),
'headers' => array('Content-Type' => 'application/json')
));
});

n8n 端接收后,解析 JSON,然后根据平台 API 要求组装参数。注意 Webhook 节点默认会生成一个测试 URL,生产环境记得加上 Basic Auth 或 Bearer Token 防止滥用。

API 轮询:通用兜底方案

有些内容系统既没 RSS 也没 Webhook(比如自建的静态博客、某些老旧 CMS),可以用 HTTP Request 节点定时调用文章列表 API。比如你的博客有 `/api/posts?page=1&per_page=10` 接口,n8n 每 10 分钟请求一次,返回 JSON 数组。

关键点:

• 需要记录已分发的文章 ID,避免重复推送。n8n 可以用 Set 节点配合数据库(比如 SQLite、PostgreSQL)或者直接写入文件(File System 节点)来存已处理 ID。

• 如果接口有分页,用 Loop Over Items 节点循环翻页,直到没有下一页。

实战:在 VPS 上用 Docker 部署 n8n 并配置一条 RSS→多平台工作流

这里假设你已经有 VPS(推荐 2C4G 以上,n8n 跑起来比较稳),并且已经安装 Docker 和 Docker Compose。

1. 部署 n8n

创建一个 `docker-compose.yml`:

yaml
version: '3.8'
services:
n8n:
image: n8nio/n8n:latest
ports:
– "5678:5678" # n8n Web UI 端口
volumes:
– ./n8n_data:/home/node/.n8n # 持久化工作流和凭证
environment:
– N8N_BASIC_AUTH_ACTIVE=true
– N8N_BASIC_AUTH_USER=admin
– N8N_BASIC_AUTH_PASSWORD=你的密码
– WEBHOOK_URL=https://你的域名或IP:5678/ # 生产环境建议配域名+反向代理
restart: unless-stopped

启动:`docker-compose up -d`。然后访问 `http://你的VPS_IP:5678`,用配置的用户名密码登录。

2. 创建 RSS→多平台分发工作流

• 添加节点:RSS Feed Read → 输入你的博客 RSS 地址。

• 添加节点:Split In Batches(可选,如果 RSS 一次返回多条,分批处理避免超时)。

• 添加节点:HTTP Request(调用平台 A 的发布 API)。

• 添加节点:HTTP Request(调用平台 B 的发布 API)。

• 添加节点:最后可以用一个 NoOp 节点做结束标记。

以微信公众号(通过第三方 API)和知乎(通过开放接口)为例,每个 HTTP Request 节点需要配置:

• Method:POST

• URL:平台提供的发布接口

• Headers:Content-Type: application/json,Authorization: Bearer 你的 API Key

• Body:JSON 格式,包含 title、content、cover_url 等字段

注意:大多数自媒体平台(如公众号、头条)不直接开放公开 API,需要你接入第三方内容分发平台(如 WeMedia、简媒、易媒宝等),或者用模拟浏览器的方式(n8n 的 Puppeteer 节点)。如果平台只允许手动粘贴,那就只能走半自动——n8n 生成预览内容,人工确认后再发布。

3. 配置错误处理和重试

每个 HTTP Request 节点可以开启“Continue on Fail”选项,或者用 Error Trigger 节点统一处理失败情况。建议在失败时发一封邮件(n8n 内置 Email 节点)或推送到企业微信/钉钉。

老鸟叮嘱

1.API 频率限制:自媒体平台通常有调用频率限制(比如每分钟 10 次)。n8n 的 Wait 节点可以插入延迟,或者用 Rate Limit 节点控制。
2.内容格式转换:不同平台支持的富文本格式不同(Markdown、HTML、纯文本)。n8n 的 Set 节点里可以用表达式进行简单替换,复杂格式建议用 Code 节点写 JavaScript 做转换。
3.图片处理:文章中的图片需要上传到平台 CDN。可以先用 HTTP Request 下载图片,再用 Form Data 节点上传,或者直接用平台提供的图片上传 API。
4.安全:Webhook URL 和 API Key 不要暴露在公网日志里。n8n 的凭证(Credentials)用加密存储,不要在节点 Body 里硬编码。
5.数据备份:n8n 的工作流和凭证都保存在 `n8n_data` 目录,定期备份这个目录。如果 VPS 重装,恢复数据后重新 `docker-compose up` 即可恢复所有工作流。

FAQ

Q1: n8n 免费版支持这些功能吗?
A: 免费版(自托管)完全够用,所有节点包括 RSS、Webhook、HTTP Request、Code 都是内置的。只有企业版才需要付费。

Q2: 没有公开 API 的平台怎么自动分发?
A: 可以用 n8n 的 Puppeteer 节点模拟浏览器登录并发布,但稳定性差且容易被封。更推荐使用第三方内容分发中台(如简媒、易媒宝),它们提供统一 API。

Q3: 为什么我的 RSS 节点抓不到新文章?
A: 检查 RSS 地址是否可访问(用浏览器打开看看),以及 n8n 的 RSS 节点是否设置了正确的轮询间隔。如果源站有缓存,可能需要等待。

Q4: 我可以用 n8n 同时分发到 10 个平台吗?
A: 可以,但要注意每个平台的 API 差异和速率限制。建议先测试 2-3 个平台稳定后再扩展,避免一次失败导致全网分发中断。

Q5: 如何避免重复分发同一篇文章?
A: RSS 节点默认不会重复处理已读条目(靠内部状态记录)。如果是 Webhook 触发,你需要在 n8n 里用数据库或文件记录文章 ID,每次先查重再发。

Q6: n8n 对 VPS 配置有什么要求?
A: 最低 1C1G 可以跑,但建议 2C4G 以上,特别是当工作流中有 Puppeteer 或大量 HTTP 请求时。磁盘空间主要取决于工作流数量和日志大小,10GB 足够。

结尾

用 n8n 做内容分发,核心是理清数据源(RSS/Webhook/API)和目标平台的接口差异。先把一条链路跑通,再逐步扩展平台数量。记住,自动化不是万能——平台规则变更、API 升级都是家常便饭,定期检查工作流日志比“一键分发”更重要。

**相关阅读:**

– [n8n VPS 部署教程:搭建自己的自动化工作流平台](https://www.zhujixuan.com/jishujiaocheng/9892.html)
– [Hermes Agent VPS 部署教程:Docker Compose 安装和初始化配置](https://www.zhujixuan.com/jishujiaocheng/9872.html)
– [AI Agent自动化运维实战100讲:VPS巡检、日志分析、告警处理与工作流教程](https://www.zhujixuan.com/jishujiaocheng/10066.html)

转载请注明出处:https://www.zhujixuan.com/jishujiaocheng/9898.html 商家投稿邮箱:zhujixuanblog@qq.com