Skip to content

liWanr/mkdocs-feed

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MkDocs-feed

PyPI Python License MkDocs

给 MkDocs 站点生成 RSS 2.0 订阅源。一行配置起步,不依赖任何主题。

特性

  • 日期可信: Meta、Git 历史、文件 Mtime 三级回退。git 日志只扫一遍,跟随重命名,移动过的文章保留原始日期
  • 列表页自动排除: blog 插件生成的首页、归档、分类、分页按页面类型识别,改 blog_dir 和各种 *_url_format 都不会失效,多个 blog 实例也一样
  • 摘要不是垃圾: 从渲染后的 HTML 提取,跳过代码块、标题、表格和主题注入的锚点,不会把一整份配置文件塞进 <description>
  • guid 稳定: 用文件首次提交的 git blob 哈希,编辑和重命名都不会让订阅者收到重复通知
  • 多语言: 配合 mkdocs-static-i18n,每种语言一份 feed,<language>rel="self" 各自正确
  • serve 不污染: mkdocs serve 改写 site_url 时,feed 里仍然是你配置的正式地址
  • 配置克制: 一共 12 个选项,能从 MkDocs 和 Material 已有配置里读出来的一律不重复要求

文档

安装和接入方式见 部署说明。其中包含全部配置项、日期与时区规则、收录逻辑等说明。

为什么插件名叫 feed 而不是 rss

rss 这个入口点已经被 mkdocs-rss-plugin 占了,同时装会冲突。

更麻烦的是 Material 的 base.html:只要检测到有插件叫 rss,它就往每个页面的 <head> 里塞两行写死的链接,指向那个插件的文件名。叫 rss 就意味着入口点冲突加上每个页面两条死链。用 feed 两个问题都没有,插件注入自己那条正确的。

兼容性

版本 说明
Python 3.9 – 3.14 每个版本都跑过完整测试
MkDocs 1.5+ 1.4 及更早不支持
Material for MkDocs 9.2+ 可选。9.2 是 blog 插件进入社区版的版本
materialx 10.0+ 可选

Material 不是必需依赖,插件不 import 它,只在运行时识别 blog 页面类型。不用 Material 同样能跑。