跳到主内容
项目
3 分钟阅读

个人博客

从一个 Astro 模板慢慢改出来的个人博客,现在已经变成我长期写东西、放项目和记录碎碎念的地方。

项目背景

这个博客最开始真的很简单,就是想先有个能写东西的地方。后来越用越觉得,一个站如果只是能发文章,其实很快就会变成“搭完就放着”的状态。

所以我慢慢把它改成了现在这样:文章、项目、碎碎念放在一起,发布链路也尽量收进一套工作流里。它对我来说已经不只是博客,更像一个长期维护的线上工作台。

当前能力

现在这套站里,已经比较稳定地在跑这些东西:

  • 三类内容共用一套内容系统:文章、项目和碎碎念都走 Astro Content Collections
  • 全文搜索:基于 Pagefind,构建完就能直接搜
  • 碎碎念模块:支持归档、标签聚合和分享海报
  • 项目展示页:可以单独维护项目说明、链接和介绍
  • SEO 基础:RSS、Sitemap、OG 图、结构化数据这些都已经补上
  • 本地发布台:本地 admin.cjs 可以直接发碎碎念
  • 自动部署:代码推到 GitHub 后,Cloudflare Pages 会自动构建上线

技术选型

技术上没有特别追求“堆满”,更多是围绕长期维护来选:

  • 框架:Astro 5
  • 内容管理:Astro Content Collections + MD/MDX
  • 样式:Tailwind CSS 4
  • 搜索:Pagefind
  • 图片生成:Satori + Resvg
  • 部署:Cloudflare Pages
  • 辅助工具:Cloudflare Worker、本地 Node.js 脚本

发布流程

我比较在意的一点,是把“写”和“发”这两件事做顺,不想每次发内容都像在维护系统。

  1. 文章、项目和碎碎念都以内容文件形式存放在仓库中
  2. 平时可以通过本地编辑或者本地发布台写入内容
  3. 内容提交到 GitHub 后触发 Cloudflare Pages 自动构建
  4. 构建时顺手生成搜索索引、RSS、Sitemap 和分享图

做过的关键优化

这个项目真正花时间的地方,反而不是“搭起来”,而是后面一点点把它修顺:

  • 修正中文阅读时长计算,避免中文文章几乎都显示成固定时间
  • 修复搜索结果渲染里的注入风险
  • 修复本地发布台的路径穿越、命令注入和上传校验问题
  • 给全站补默认 OG 图、结构化数据和 BreadcrumbList
  • 清理构建检查里的噪音,让真正的问题更容易被看见

当前取舍

  • 评论系统还没启用,我暂时更在意内容本身和发布体验
  • 本地发布台、Worker 这些辅助工具会保留,但尽量按需使用
  • 页面设计会继续往统一和耐看上收,不追求复杂交互

后续计划

  • 继续写内容,不想让它只停留在“站搭得挺好看”
  • 把项目页和文章页的内容慢慢写得更像我自己
  • 在不明显增加维护成本的前提下,再考虑评论或别的互动功能
分享到 X