如何用rss-feeds从零创建你的第一个RSS Feed:新手完整教程

【免费下载链接】rss-feeds

Generate RSS feeds for all the blogs that don't have one

项目地址: https://gitcode.com/gh_mirrors/rs/rss-feeds
点击查看 免费下载

rss-feeds 是一个开源 RSS Feed 生成器,专为那些没有 RSS 订阅功能的博客自动抓取网页并生成标准 feed_*.xml 文件,每小时由 CI 自动刷新。本教程带你用 6 个步骤,从零创建并注册你的第一个 RSS Feed,即使是编程新手也能照着跑通。

一、rss-feeds 是什么:30秒看懂项目

你喜欢的博客没有 RSS,而且可能永远不会有?rss-feeds 的思路很简单:

  1. 用 Python 脚本"抓取"博客页面(静态页面、分页列表、JS 动态加载都支持)
  2. 解析出标题、日期、摘要、链接,生成合法的 RSS XML
  3. 输出到 feeds/ 目录,提交后任何 RSS 阅读器都能直接订阅

项目已内置 30 多个生产级示例(Ollama、OpenAI、Anthropic、Cursor 等博客的 Feed),你完全可以模仿现有生成器来完成自己的第一个。

二、准备工作:一键安装开发环境

最快环境配置方法只需 3 条命令:

# 1. 克隆仓库
git clone https://gitcode.com/gh_mirrors/rs/rss-feeds
cd rss-feeds

# 2. 安装依赖(项目使用 uv 管理)
uv sync --group dev

# 3. 安装 pre-commit 钩子
pre-commit install

💡 装好后运行 make help,可以看到按类别分组的全部可用命令,这是探索项目最快的方式。

三、读懂项目:5 个核心文件速览

动手前,先认识这几个关键位置(完整架构说明见 AGENTS.md):

文件 / 目录作用
feed_generators/每个博客对应一个 Python 抓取脚本,如 ollama_blog.py
feeds/输出的 feed_*.xml 文件,订阅者使用的就是这里
feeds.yamlFeed 注册表,所有生成器的"单一事实来源"
makefiles/feeds.mk每个 Feed 对应的 Make 命令目标
feed_generators/utils.py共享工具:抓取页面、设置 Feed 链接、保存输出

四、创建第一个 RSS Feed:6步上手

Step 1:分析目标博客,选择抓取模式

打开目标博客,先看它是哪种加载方式,这决定了你使用哪种模式:

网站行为推荐模式可参考的示例
所有文章在单页展示简单静态(最简单,新手首选)feed_generators/ollama_blog.py
URL 变 ?page=2 的分页分页 + 缓存feed_generators/dagster_blog.py
点击 "Load More" 按钮加载Selenium 无头浏览器feed_generators/anthropic_news_blog.py

判断技巧:打开浏览器 DevTools 的 Network 面板刷新页面,如果文章在初始 HTML 里就有,选前两种;如果是执行 JS 后才出现,选 Selenium。

Step 2:下载 HTML 样本

# 静态站直接下载即可
curl -o sample.html "https://example.com/blog"

如果是 JS 重度渲染的网站,需在页面加载完成后,从 DevTools 的 Elements 面板复制完整 HTML。

Step 3:生成抓取脚本

项目内置了 AI 辅助的 Feed 生成器技能,一条指令即可根据 HTML 样本自动分析结构、选对模式并生成 feed_generators/ 下的脚本:

Use /cmd-rss-feed-generator to convert @sample.html to a RSS feed for https://example.com/blog

不想用 AI 也没关系——直接复制 ollama_blog.py 改一改即可,它的结构非常清晰:fetch_blog_content() 抓取 → parse_blog_html() 解析 → generate_rss_feed() 生成 → save_rss_feed() 保存。

Step 4:本地测试并验证输出

# 运行你的生成器
uv run feed_generators/<source>_blog.py

# 查看生成的 XML
head -50 feeds/feed_<source>.xml

验证清单:

  •  XML 能正常打开,无解析错误
  •  <link> 指向博客原站(而不是 XML 文件本身)——记得用 utils.py 中的 setup_feed_links() 辅助函数
  •  每篇文章都有标题、日期、链接
  •  日期顺序为最新在前

Step 5:注册你的 Feed(3 处改动)

这是新手最容易漏的一步,缺一不可:

  1. 在 feeds.yaml 添加注册项:
<source>:
  script: <source>_blog.py
  type: requests   # JS 重度站点用 "selenium"
  blog_url: https://example.com/blog
  1. 在 makefiles/feeds.mk 添加 Make 目标,仿照现有条目:
.PHONY: feeds_<source>
feeds_<source>: ## Generate RSS feed for <Source Name>
	$(call check_venv)
	$(call print_info,Generating <Source Name> feed)
	$(Q)uv run feed_generators/<source>_blog.py
	$(call print_success,<Source Name> feed generated)
  1. 更新 README.md 中的 Feed 列表表格(按字母顺序插入)。

之后就可以用一条命令运行了:make feeds_<source>。

Step 6:提交前的最终检查

  •  make dev_format 通过(Ruff 格式化)
  •  uv run feed_generators/<source>_blog.py 无报错
  •  feeds/feed_<source>.xml 已生成且有效
  •  三项注册(feeds.yaml / feeds.mk / README)全部完成
  •  Feed 的 <link> 指向原博客

更多质量保障细节(回归测试、离线 fixture、输出校验)可参考 docs/feed-reliability.md 和 CONTRIBUTING.md。

五、新手常见问题速查

症状解决办法
"No posts found" / 空 Feed网站改版了,重新下载 HTML 样本并更新选择器
<link> 显示 XML 地址使用 setup_feed_links(),并确保 rel="self" 先于 rel="alternate" 设置
日期解析报错在 date_formats 列表中补充该站的日期格式
缓存不更新删除 cache/<source>_posts.json,加 --full 参数全量重跑

完整的排障清单在 AGENTS.md 的 Troubleshooting 章节。

结语:从这里出发

🎉 恭喜!完成以上 6 步,你就拥有了一个可以持续更新的 RSS Feed。建议的进阶路径:

  1. 先跑通一个静态站(模式 1),建立信心
  2. 再挑战分页站(模式 2),理解缓存合并机制
  3. 最后尝试 Selenium 模式(模式 3)

这个项目刻意保持了"简单 Python + Makefile"的轻量架构,几乎没有学习门槛——你的第一个 Feed,今天就可以上线。

【免费下载链接】rss-feeds

Generate RSS feeds for all the blogs that don't have one

项目地址: https://gitcode.com/gh_mirrors/rs/rss-feeds
点击查看 免费下载

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值