使用n8n和RSS实现博客发布自动化

使用n8n和RSS实现博客发布自动化

利用GitHub Actions、RSS订阅和n8n工作流程实现博客自动发布和社交媒体分发的实战指南

引言

完成博客文章的撰写后,还有另一项工作在等待着我们:在X(Twitter)、LinkedIn等各种社交媒体平台上创建并发布定制化内容。由于每个平台的最佳字数、语气和话题标签各不相同,这项工作需要投入大量的时间和精力。

在本文中,我们将介绍如何通过GitHub Actions自动构建博客、生成RSS订阅,然后使用n8n (workflow automation tool)将社交媒体分发完全自动化。只需一次配置,之后只要撰写博客文章,所有流程都会自动完成。

整体自动化流程

graph TD
    A[Git Push] --> B[GitHub Actions]
    B --> C[Astro Build]
    C --> D[生成RSS订阅]
    D --> E[n8n RSS触发器<br/>每日9点轮询]
    E --> F[HTTP请求<br/>获取完整HTML]
    F --> G[AI代理<br/>Google Gemini 2.5 Pro]
    G --> H[结构化输出解析器<br/>JSON验证]
    H --> I[发布到X<br/>280字限制]
    I --> J[发布到LinkedIn<br/>专业语气]

    style A fill:#ff6b6b
    style B fill:#4ecdc4
    style C fill:#45b7d1
    style D fill:#96ceb4
    style E fill:#ffeaa7
    style F fill:#dfe6e9
    style G fill:#a29bfe
    style H fill:#fd79a8
    style I fill:#74b9ff
    style J fill:#55efc4

核心流程:

  1. 将博客文章推送到Git后,GitHub Actions自动开始构建
  2. Astro生成静态站点并同时生成RSS订阅
  3. n8n每天监控RSS订阅,检测新文章
  4. 发现新文章后,获取完整的HTML内容
  5. Google Gemini AI分析内容并生成针对各平台的定制化帖子
  6. 自动发布到X(Twitter)和LinkedIn

第1步:生成博客RSS订阅

在Astro中生成RSS订阅非常简单。使用@astrojs/rss包可以为每种语言生成RSS订阅。

RSS订阅生成代码

创建src/pages/rss-ko.xml.js文件:

import { getCollection } from 'astro:content';
import rss from '@astrojs/rss';
import { SITE_META } from '../consts';

export async function GET(context) {
  const now = new Date();

  // 仅筛选韩语博客文章
  const posts = (await getCollection('blog'))
    .filter((post) => post.id.startsWith('ko/') && post.data.pubDate <= now)
    .sort((a, b) => b.data.pubDate.valueOf() - a.data.pubDate.valueOf());

  return rss({
    title: SITE_META.ko.title,
    description: SITE_META.ko.description,
    site: context.site,
    items: posts.map((post) => {
      const [lang, ...slugParts] = post.id.split('/');
      const slug = slugParts.join('/');
      return {
        title: post.data.title,
        description: post.data.description,
        pubDate: post.data.pubDate,
        link: `/${lang}/blog/${lang}/${slug}/`,
      };
    }),
    customData: `<language>ko</language>`,
  });
}

关键要点:

  • pubDate <= now:排除未来日期的文章(支持定时发布)
  • 按语言生成RSS订阅:rss-ko.xml.jsrss-en.xml.jsrss-ja.xml.js
  • 文章按最新顺序排列
  • 遵循RSS标准格式

确认RSS订阅

构建后可在以下URL确认RSS订阅:

  • 韩语: https://jangwook.net/rss-ko.xml
  • 英语: https://jangwook.net/rss-en.xml
  • 日语: https://jangwook.net/rss-ja.xml

第2步:配置n8n工作流程

n8n是一个无代码/低代码工作流程自动化工具。通过可视化界面可以轻松构建复杂的自动化流程。

n8n工作流程节点配置

n8n工作流程图

整个工作流程由6个节点组成:

1. RSS Feed Trigger (RSS订阅触发器)

{
  "parameters": {
    "pollTimes": {
      "item": [
        {
          "hour": 9
        }
      ]
    },
    "feedUrl": "https://jangwook.net/rss-ko.xml"
  },
  "type": "n8n-nodes-base.rssFeedReadTrigger"
}

工作方式:

  • 每天上午9点检查RSS订阅
  • 发现新项目时执行工作流程
  • 仅处理上次检查后的新文章

2. HTTP Request (HTTP请求)

{
  "parameters": {
    "url": "={{ $json.link }}",
    "options": {}
  },
  "type": "n8n-nodes-base.httpRequest"
}

作用:

  • 从RSS订阅的链接获取完整的HTML内容
  • 为AI分析提供完整的上下文
  • 利用完整内容而非RSS的简短摘要

3. AI Agent (Google Gemini 2.5 Pro)

这个节点是整个工作流程的核心。使用Google Gemini 2.5 Pro模型分析博客内容并生成针对各平台的定制化社交媒体帖子。

{
  "parameters": {
    "promptType": "define",
    "text": "你是社交媒体内容专家。请基于网页文章的全文(HTML)撰写适合X(Twitter)和LinkedIn的优化帖子。

**输入数据:**
```html
{{ $json.data }}
```

**写作指南:**

充分理解文章的全部内容后,提取核心洞察和价值,针对各平台进行创作。

**X帖子(280字限制):**
- 强调文章中最有趣或最重要的1个要点
- 以简洁、有影响力的内容创作
- 激发读者好奇心,引导点击
- 使用1-2个表情符号(可选)
- 包含2-3个话题标签
- 链接将单独添加,正文中无需包含

**LinkedIn帖子(建议200-400字):**
- 专业且可信赖的语气
- 说明文章的核心洞察和启示
- 强调从商业或行业角度的意义
- 为读者提供实际价值或学习要点
- 包含引发思考的问题或评论(可选)
- 链接将单独添加,正文中无需包含
- 最少使用表情符号或不使用
- 包含3-5个话题标签

**输出格式:**
必须仅以以下JSON格式回复。不要包含其他说明或文本。

```json
{
    \"x\": \"X平台发布文本(280字以内,包含链接)\",
    \"linked_in\": \"LinkedIn平台发布文本(包含链接)\"
}
```

**重要事项:**
- 基于文章的全部内容创作,提供深刻洞察而非表面总结
- 仅输出JSON格式
- 不要使用Markdown代码块(```)
- 不要包含额外说明或注释
- 请包含博客文章的链接: {{ $('RSS Feed Trigger').item.json.link }}
- 必须用韩语撰写。",
    "hasOutputParser": true,
    "options": {}
  },
  "type": "@n8n/n8n-nodes-langchain.agent"
}

提示词设计原则:

  • 角色定义:赋予”社交媒体内容专家”明确的人设
  • 输入数据:提供完整的HTML内容作为上下文
  • 平台特定指南:针对X和LinkedIn特性的具体指示
  • 结构化输出:要求可解析为JSON格式的响应
  • 语言指定:明确指定使用韩语撰写

4. Google Gemini Chat Model (语言模型)

{
  "parameters": {
    "modelName": "models/gemini-2.5-pro",
    "options": {}
  },
  "type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini"
}

选择该模型的原因:

  • Gemini 2.5 Pro:最新模型,具有出色的上下文理解能力
  • 能够处理长HTML内容
  • 多语言支持(韩语、日语、英语)
  • 成本效益高

5. Structured Output Parser (结构化输出解析器)

{
  "parameters": {
    "jsonSchemaExample": "{\n\t\"x\": \"x投稿消息\",\n    \"linked_in\": \"linked in投稿消息\"\n}"
  },
  "type": "@n8n/n8n-nodes-langchain.outputParserStructured"
}

作用:

  • 将AI的响应解析为JSON
  • 架构验证和错误处理
  • 提供可供下一个节点使用的结构化数据

6. Create Tweet & Create a post (社交媒体发布)

X (Twitter)节点:

{
  "parameters": {
    "text": "={{ $json.output.x }}",
    "additionalFields": {}
  },
  "type": "n8n-nodes-base.twitter"
}

LinkedIn节点:

{
  "parameters": {
    "person": "e7xJgbUNtW",
    "text": "={{ $('AI Agent').item.json.output.linked_in }}",
    "additionalFields": {}
  },
  "type": "n8n-nodes-base.linkedIn"
}

第3步:基于AI的内容生成核心

针对各平台的优化

X (Twitter)优化:

  • 280字限制:简洁且有影响力的消息
  • 引发好奇心:激发点击的吸引要点
  • 话题标签:2〜3个相关标签扩大触达范围
  • 表情符号运用:提高视觉吸引力

LinkedIn优化:

  • 专业语气:强调商业背景下的价值
  • 提供洞察:分享实用的学习要点
  • 长格式:200〜400字提供充分的上下文
  • 包含问题:引导互动参与

实际生成示例

原博客文章:“通过Claude Code最佳实践提升开发生产力”

AI生成的X帖子:

"使用"AI编程助手和"活用"AI编程助手是完全不同的🤖

基于在实际项目中应用Claude Code最佳实践的经验,
分享最大化生产力的实战指南。

#ClaudeCode #AI开发 #生产力提升

https://jangwook.net/ko/blog/ko/claude-code-best-practices/

AI生成的LinkedIn帖子:

有效利用AI开发工具需要超越简单使用的战略性方法。

深入分析Anthropic公开的Claude Code最佳实践并应用于实际项目后,
开发工作流程的效率得到了显著提升。

特别值得关注的要点:
• 通过CLAUDE.md进行明确的上下文管理
• 通过子代理系统实现专业化
• 利用Think功能进行复杂决策

在现代开发现场,恰当地活用AI工具成为竞争优势的来源。

详细的实现示例和具体的最佳实践请参见文章。

#AI开发 #ClaudeCode #开发者生产力 #最佳实践 #软件工程

https://jangwook.net/ko/blog/ko/claude-code-best-practices/

第4步:实战应用技巧

n8n设置指南

1. 安装n8n

n8n提供云版本和自托管版本。

云版本(推荐):

# 在n8n.io创建免费账户
# 无需信用卡
# 每月免费执行5,000次

自托管(Docker):

# 使用Docker运行n8n
docker run -it --rm \
  --name n8n \
  -p 5678:5678 \
  -v ~/.n8n:/home/node/.n8n \
  n8nio/n8n

2. 认证设置

Google Gemini API:

X (Twitter) OAuth:

  • 在X Developer Portal创建应用
  • 设置OAuth 2.0认证
  • 将OAuth凭证连接到n8n

LinkedIn OAuth:

  • 在LinkedIn Developer Portal创建应用
  • 设置OAuth 2.0认证
  • 所需权限:w_member_social(创建帖子)

3. 导入工作流程

可以将上述JSON配置导入n8n:

  1. 打开n8n工作流程编辑器
  2. 选择Import from File或Import from URL
  3. 上传或粘贴JSON文件
  4. 重新设置各节点的凭证

监控和调试

利用n8n Executions标签:

  • 确认各工作流程的执行结果
  • 检查各节点的输入输出数据
  • 分析错误日志

常见问题:

1. AI响应不是JSON格式时:

解决方案:更清晰地定义Structured Output Parser的架构
在提示词中强调"仅输出JSON"的指示

2. RSS订阅未检测到新项目时:

解决方案:确认RSS Feed Trigger的轮询间隔
验证RSS订阅URL是否正确
在浏览器中直接确认RSS订阅

3. 社交媒体发布失败:

解决方案:确认OAuth令牌是否过期
检查API使用量是否超限
重新确认发布权限设置

性能优化

成本节约技巧:

  • 适当调整RSS轮询间隔(每小时→每天1次)
  • 优化AI模型选择(Gemini Pro vs Flash)
  • 监控工作流程执行次数

提升响应质量:

  • 根据平台特性精细调整AI提示词
  • 在提示词中包含示例输出(Few-shot learning)
  • 定期审查生成的内容并改进提示词

实际运营结果

运营此自动化系统3个月的结果:

时间节约:

  • 社交媒体发布:每篇20分钟→0分钟(100%自动化)
  • 针对各平台的内容优化:每篇10分钟→0分钟
  • 总节约时间:每月15〜20小时

一致性提升:

  • 在所有平台实现100%发布率
  • 保持稳定的内容质量
  • 自动遵守各平台指南

扩大触达范围:

  • 同时发布多语言内容
  • 通过针对各平台优化的消息使互动参与度增加30%
  • 通过持续发布内容使粉丝增加50%

扩展可能性

此系统可以通过以下方式扩展:

1. 添加更多平台:

  • Facebook页面
  • Instagram(添加图像自动生成)
  • Threads(Meta的文本型社交网络服务)

2. 高级内容生成:

  • 图像自动生成(DALL-E、Midjourney)
  • 视频片段生成(短预告片)
  • 串文格式帖子(X线程)

3. 分析与优化:

  • 收集互动指标
  • A/B测试(多种提示词)
  • 分析最佳表现内容模式

4. 双向沟通:

  • 监控评论/提及
  • 基于AI的响应生成
  • 社区管理自动化

结论

将从博客发布到社交媒体分发的整个流程自动化后,内容创作者可以专注于真正重要的事情,那就是创作优质内容

结合GitHub Actions、RSS订阅、n8n和Google Gemini AI的此系统具有以下特点:

  • 完全自动化:只需撰写博客文章,所有流程自动处理
  • 平台优化:针对各社交媒体特性的定制化内容
  • 成本效益:利用大部分免费或低价工具
  • 可扩展性:易于添加新平台和功能

现在就为您的博客构建自动化系统吧。节约时间、提升质量、扩大触达范围。

下篇文章将介绍如何使用n8n自动化评论监控和基于AI的社区管理。


参考资料:

阅读其他语言版本

这篇文章有帮助吗?

您的支持能帮助我创作更好的内容。请我喝杯咖啡吧!☕

关于作者

JK

Kim Jangwook

AI/LLM专业全栈开发者

凭借10年以上的Web开发经验,构建AI代理系统、LLM应用程序和自动化解决方案。分享Claude Code、MCP和RAG系统的实践经验。