Metadata-Version: 2.4
Name: mkdocs-feed
Version: 0.1.2
Summary: RSS 2.0 feed generation for MkDocs, with per-language feeds and git-derived dates
Author-email: liWanr <dotWanr@icloud.com>
License-Expression: MIT
Project-URL: Homepage, https://github.com/liWanr/mkdocs-feed
Project-URL: Repository, https://github.com/liWanr/mkdocs-feed
Project-URL: Issues, https://github.com/liWanr/mkdocs-feed/issues
Keywords: mkdocs,mkdocs-plugin,rss,feed,blog
Classifier: Development Status :: 4 - Beta
Classifier: Framework :: MkDocs
Classifier: Intended Audience :: Developers
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Topic :: Documentation
Classifier: Topic :: Text Processing :: Markup :: HTML
Requires-Python: >=3.9
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: mkdocs>=1.5
Requires-Dist: tzdata; sys_platform == "win32"
Provides-Extra: dev
Requires-Dist: pytest>=7; extra == "dev"
Requires-Dist: mkdocs-material; extra == "dev"
Requires-Dist: mkdocs-static-i18n; extra == "dev"
Dynamic: license-file

<div align="center" markdown>

# MkDocs-feed

[![PyPI](https://img.shields.io/pypi/v/mkdocs-feed?color=blue)](https://pypi.org/project/mkdocs-feed/)
[![Python](https://img.shields.io/badge/Python-3.9+-blue)](https://pypi.org/project/mkdocs-feed/)
[![License](https://img.shields.io/badge/License-MIT-yellow)](LICENSE)
[![MkDocs](https://img.shields.io/badge/MkDocs-1.5+-green)](https://www.mkdocs.org/)

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

</div>

## 特性

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

## 文档

安装和接入方式见 [部署说明](https://liwanr.com/recom/projects/mkdocs-feed/)。其中包含全部配置项、日期与时区规则、收录逻辑等说明。

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

`rss` 这个入口点已经被 [mkdocs-rss-plugin](https://github.com/Guts/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 同样能跑。
