记录这次 Hexo 个人博客改版,包括双语信息架构、SEO 统一、搜索重构和首页重设计。
之前这个站点更像一个“能发文章的 Hexo 博客”,文章可以正常写,但首页表达、搜索体验、SEO 配置和双语结构都比较松散。随着内容逐渐变多,这种结构会带来两个问题:
所以这次做了一轮比较完整的改版,目标不是换框架,而是在现有 Hexo + ZenMind 主题基础上,把个人站升级成一个更清晰、更稳、更容易持续维护的版本。
我给这次改版定了几个明确目标:
这次先处理的是最底层的问题:站点已经在用 miaohancheng.com,但部分配置仍然保留旧地址。这个问题会直接影响 canonical、Open Graph、feed 和 sitemap。
改法比较直接:
url 统一切到 https://miaohancheng.com;CNAME 和 GitHub Actions 的自定义域名配置;这样做的好处是,搜索引擎和社交分享拿到的站点身份是一致的,不会把同一篇内容拆成多个来源。
原来的首页主要是按时间倒序展示文章摘要,这对博客系统来说没问题,但对个人站来说表达太弱了。
所以这次把首页拆成三段:
这样首页不再只是“最新几篇文章”,而是一个能回答“你是谁、这个站值不值得看、我该从哪里开始”的落地页。
之前 About 页把中英文都放在一个页面里,可读性一般,也不利于页面元信息管理。
这次改成了两个独立页面:
/about/ 放中文介绍;/en/about/ 放英文介绍。两个页面互相提供跳转入口,但文章本身不强制翻译。也就是说,这次采用的是“站点框架双语,内容按原语言保留”的策略。这样不会给历史文章增加维护负担,同时也能让中英文访客各自有清晰入口。
原来的搜索逻辑属于最小可用版本,主要有几个问题:
search.json;这次的处理方式是:
/search/ 页面;search.json 在第一次搜索时加载一次,之后走内存缓存;Esc 可以快速清空结果。这类改动虽然不大,但对站点交互体验和代码可维护性提升很明显。
为了让首页、文章页、搜索页和 SEO 逻辑都能共享同一套信息,这次补齐了文章 front matter 结构,新增了几个字段:
lang:
summary:
featured:
cover:这几个字段的作用分别是:
lang:控制页面语言和文章语言标识;summary:给首页摘要、搜索摘要和 meta description 提供稳定来源;featured:控制首页精选文章;cover:给后续文章头图留好接口。同时也顺手把文章分类和标签做了一次收敛。分类控制在少量顶层主题里,标签则主要保留英文技术关键词,避免后续内容越写越散。
这次没有重写主题,而是在现有 ZenMind 基础上做增量修改,主要包括:
page.lang 的 html lang 输出;这种做法的好处是:保留 Hexo 的轻量和简单,不需要为了一个个人站把技术栈抬得太重。
改完之后,这个站点对外和对内都更清晰了:
这次改版优先解决的是结构问题,后面还有一些可以继续增强的方向: