本页记录我的静态博客发布Pipeline。
它使用Python将Markdown内容转化为可托管的静态站点,并将写作→构建→资源上云→短链→SEO→发布刷新串联成一条可重复运行的自动化流程。

管线概览
输入:articles/下的Markdown与本地资源
输出:一键构建静态站点全量目录(HTML/CSS/JS)+ /page/短链结构 + 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自动化
- 主导航生成与配置变更检测
- 站点级固定资源上传
- 辅助工具:友链状态检测(可选运行)