这个博客今天搭起来了。写一篇技术记录,把选型和过程留下来, 一是给自己存档,二是万一有人想搭类似的东西可以参考。

为什么选 Hugo

需求其实很朴素:纯静态、无后端、无数据库、构建快、依赖少。

对比过一圈:Astro 很现代但要背 Node 工具链;Hexo 中文社区大但生态有点老了; Pelican 是 Python 的(我熟),但主题生态小,最后还是要自己写主题。 Hugo 是单个二进制,装完没有任何依赖,Markdown 进、静态 HTML 出, 构建一个内容站是秒级的——对一个纯内容博客来说,没什么可挑剔的。

站点结构

四个栏目,对应 Hugo 里的三个 content section:

content/
├── notes/     数据学习笔记(金融数据方法、指标原理)
├── journal/   个人复盘日记(市场观察记录)
└── essays/    杂项随笔(本篇在这里)

主题是自己写的,总共五个模板文件(首页、栏目列表、文章页、404、公共骨架), 零 JavaScript——整站没有一行脚本,样式一个 CSS 文件。 功能越少,长期维护成本越低,这是个人站最重要的性质。

一个小设计:红线词门禁

写了个几十行的 Python 脚本挂在构建流程里:扫描所有 Markdown 和产物 HTML, 命中预设的违规词(无歧义的倾向性、营销性词汇,清单维护在脚本里)直接报错退出, 部署脚本会拒绝继续。人写文章总有笔滑的时候,让机器把最后一道关。

踩坑记录

  1. 中文摘要被截断成乱码:Hugo 需要开 hasCJKLanguage = true, 否则自动摘要按字节数切,中文必乱。
  2. Windows 下装 Hugowinget install Hugo.Hugo.Extended 一条命令, 但装完要重开终端才有 PATH。
  3. 部署用 scp 而不是 rsync:本机 Git Bash 没有 rsync, 静态站体量小,全量 scp 完全够用。

成本

服务器是已有的,域名已有。这个站新增成本是零——个人站就该这样。


建站过程的完整决策记录在仓库的 docs/adr/ 目录里。