本页记录AyaOS博客所使用的静态发布Pipeline。
它使用Python将Markdown内容转化为可托管的静态站点,并把写作→构建→资源上云→短链生成→SEO处理→发布刷新串联为一条可重复运行的自动化流程。
它是一套面向长期写作与发布维护的内容交付管线。

管线概览
输入:articles/下的Markdown内容与本地资源
输出:可一键发布的静态站点目录(HTML/CSS/JS)、统一/page/<slug>/短链结构与sitemap.xml
核心流程
- 内容解析:扫描
articles/,解析front-matter(如slug、分类、标签、特殊页面)并生成元数据。 - 渲染生成:将Markdown渲染为HTML,注入模板、面包屑与站点信息。
- 资源上云:提取本地图片与视频引用,替换为CDN链接并上传至对象存储。
- 访问路径:统一生成
/page/<slug>/短链,并支持目录分页与相册分页映射。 - 完善SEO:生成
sitemap.xml,并为关键页面注入canonical。 - 发布交付:将静态产物增量上传至静态网页托管存储桶,并清理远端冗余页面。
关键机制(结构设计)
- 配置驱动:站点结构、导航关系、内容分组、分页策略与发布规则统一由
config.yml声明,避免配置逻辑散落在代码中。 - 构建调度器:通过统一入口协调各阶段执行顺序,支持增量/全量模式切换、配置变更自动重建、dry-run预演与发布阶段接管。
- 统一分页工具:文章目录与相册目录复用同一套分页计算与URL规则,保证路径长期稳定。
- 目录增量重建:基于“文章变更清单+目录缓存”精确定位受影响的分类与子分类范围。
- 导航栏自动生成:主导航由
config.yml驱动生成,并带配置变更检测,避免无意义重建。 - 固定资源发布:头像、友链头像等站点级资源通过独立脚本发布,不依赖内容构建流程。
容错与可靠性
- 幂等执行:资源发布采用“缓存命中→远端存在性探测→本地上传”的分层去重策略,并在日志中高亮缺失文件,便于定位异常。
- 增量优先:基于hash与mtime追踪变更,仅重建受影响内容,并提供强制重建兜底。
- 可解释失败:外部探测(如友链检测)细分失败原因并记录状态,避免黑盒式失败。
- 发布保护:支持dry-run与交互确认;记录上传与CDN刷新日志,并清理历史残留路径。
- 完整性自检:短链复制包含哈希校验,降低部署过程中出现静默错误的风险。
管线功能覆盖范围
- 内容系统:文章(Markdown→HTML)
- 相册系统:详情页分页与目录页重建
- 目录系统:一级/二级分类、标签过滤与分页
- 短链与访问路径映射
- sitemap与canonical 自动化
- 主导航生成与配置变更检测
- 站点级固定资源上传
- 辅助工具:友链状态检测(可选运行)