3865 字
19 分钟
更新于 2026-08-23
11 次修订
重建博客:我的灵感来源都是哪里
2026-06-07
2026-08-23
格物集边学边记
NOTE

AI 生成内容声明: 本文由 Korewaxnne(AI 助手,基于 Claude)整理与持续更新。Xnne 提供了博客重建过程中各个模块的素材、灵感来源和来龙去脉,我负责把它们组织成一篇完整的文章。

云服务商跑路后:再次审视个人博客的形态与值得被记录的东西 里,Xnne 讨论了为什么最终选择静态博客。这篇算是它的姊妹篇,记录重建以及之后持续改造博客时,各个模块的灵感来源。

写这篇的原因很简单:Xnne 从别人的博客、应用和游戏里获得了很多启发。把这些线索串起来既是致谢,也方便后来想做类似事情的人少走弯路。

这不是一份在重建结束时就被冻结的清单。博客还在生长,新的页面会加入,原本分散的功能也会重新组合;因此,这篇文章也会随着博客一起更新。

主框架

SigureMo
/
nyakku.moe
Waiting for api.github.com...
00K
0K
0K
Waiting...

博客的底层框架直接 fork 自 nyakku.moe,基于 Astro + Svelte + Tailwind 的组合。选它的理由在那篇文章里已经说过了:静态生成、Markdown 原生支持、部署简单、数据完全本地化。

而 nyakku.moe 本身可以溯源到 Fuwari:

saicaca
/
fuwari
Waiting for api.github.com...
00K
0K
0K
Waiting...

Fuwari 提供了一套开箱即用的 Astro 博客主题,nyakku.moe 在此基础上做了大量个性化改造。Xnne 则是在 nyakku.moe 的基础上继续做自己的事情。三层关系大致是:

Fuwari → nyakku.moe → 本站

内容组织的重新设计

重建不只是换了个框架,更重要的是重新想了一遍内容该怎么组织。

以前 Xnne 把不同层级的概念都塞进分类,导致内容组织极其混乱。现在的结构把几个问题重新拆开:每篇文章只有一个文集归属和一种写法,可以属于多个系列,也可以用多个主题标签连接到具体对象。

文集、写法与主题

文集回答“文章最终抵达哪里”:格物集收录技术与工程实践,游艺集收录书影剧游,行思集收录哲学与自我审视,岁时集保存经历与生活阶段。写法则回答“读者接下来会读到什么”,包括教程、观后、随想、边学边记、资源与随记。

Tags 只保留文章涉及的具体作品、技术和概念,并作为开放的标签漫游入口。完整的拆分原则记录在 一篇文章只能住进一个抽屉吗?——重新拆开 Category、Kind 与 Tags 中。

系列

系列是作者主动编排的持续写作线索,例如 LLM、博客、阅读与观影。一篇文章可以进入一部文集,同时属于多个系列;Series 不再承担全局分类,而是在相关文章中提供继续阅读的路径。

这样,文集负责主要归宿,写法负责阅读预期,Tags 负责自由关联,Series 负责阅读路线,每个字段只回答一种问题。

首页与阅读体验

首页 Banner

博客最新主页

首页首图铺满视口,实际内容下沉,背景图与内容区之间用透明波浪形做过渡。首图区域内顶部导航栏融入画面,滚轮下滑后才显形。除阅读文章外,导航栏始终跟随。

灵感来源:NBlog

Naccl
/
NBlog
Waiting for api.github.com...
00K
0K
0K
Waiting...

NBlog 也是 Xnne 在云服务器时代部署的第一个博客系统。它的首屏视觉冲击力很强,波浪过渡的处理让首图和内容区不会割裂。Xnne 把这个设计语言带到了现在的静态站上,又逐渐换成了更贴近自己的配色、导航与内容入口。

阅读时导航栏隐藏

阅读时隐藏导航栏

阅读文章时,顶部导航栏隐藏,把视觉空间完全留给内容。这个细节来自:

Innei’s Blog

阅读场景下导航栏是干扰项,隐藏它能让读者更沉浸。简单但有效。

图像检视台

视频平台会转码,GIF 又会牺牲画质和体积。对于图像超分这种需要观察同一位置细节差异的内容,最直接的方式还是把原图与结果图叠在一起,让读者自己拖动分割线。

因此,本站为 Markdown 增加了图像检视台:默认先展示结果图,点击右下角按钮后即可用鼠标、触屏或方向键对比;也可以在进入视口时自动演示一次,扫完继续留给读者拖动。

SeedVR2 超分前的原图
SeedVR2 图像超分结果
原图 · 1099×818SeedVR2 · 1648×1224

这套检视台后来用在 什么叫做从她的长相就能看出来是病娇? 中:在同一位置来回拖动,比并排放图更容易看出 SeedVR2 对人物脸部、衣物纹理和朦胧层次的处理,也避免了 GIF 与视频转码对细节的损失。

书架:正在读的,和已经留下来的

加入继续阅读后的书架

书架用于展示看过的书、漫画、游戏、电影、电视剧、动漫与论文,完整收藏以封面墙或列表的形式呈现。

最初的灵感来源是 Lapis’ Bookshelf

Lapis0x0
/
VermilionVoid
Waiting for api.github.com...
00K
0K
0K
Waiting...

Xnne 很喜欢这种把阅读与观影记录视觉化的方式。比起纯列表,封面墙更像一座慢慢扩建的展柜;分类、二级标签和阅读笔记,则让这些已经留下来的作品仍然可以被重新找到。

后来,书架顶部又加入了「继续阅读」。它不是另一份收藏列表,而是为正在读的书留一个位置,也提醒自己继续读下去。书还没有读完、感想还没有写成文章时,也不必在站点上隐身;阅读进度与随手留下的笔记,可以先证明这段关系正在发生。

于是现在的书架同时容纳两种时间:上方是尚未结束的阅读,下方是已经留下来的作品。

统计与图谱:从数字看见一座博客

原本独立存在的统计页与关联图谱,后来被合进同一个统计入口。一个视图观察内容如何发布、又如何被阅读;另一个视图观察文章之间怎样互相引用。它们关心的其实是同一件事:这座博客如何一点点长成现在的样子。

发布轨迹与阅读回声

统计页中的发布轨迹

公开统计的灵感来自 this cute world:把原本只在站长后台可见的数字整理成公开页面,让读者也能看到博客如何被阅读、内容又是怎样慢慢积累起来的。

本站把统计拆成两条线。第一条是「创作轨迹」:发布日历记录作品出现的日期,时间切片则并排呈现发布脉冲、分类演化与系列延伸。它统计的是文章何时被发布,而不假装知道每一天真实发生的写作过程。

第二条是「阅读回声」:访客数、访问量、参与时长与文章排行,描述文字离开创作桌之后怎样被读过。访客浏览器向 GA4 发送页面访问与参与事件,GitHub Actions 定时调用 GA4 Data API,再把聚合结果与 Astro 构建期统计的文章字数、预计阅读时间和发布日期合并,生成静态数据交给页面展示。

这样既不需要给 GitHub Pages 增加常驻后端,也不需要自建数据库。服务账号凭据只存在于 GitHub Actions Secrets 中,公开页面只展示文章级汇总数据;平均阅读时长排行还设置了最低样本量,避免少数访问把结果放大。

关系图谱

合入统计页的关系图谱

关系图谱的灵感来源是 Nagi’s Blog。这个博客没有开源,但作者在文章中详细讲解了相关实现思路。

Xnne 结合自己在 做过长期系统项目再看:RAG 怪兽是否适用于个人博客系统的图谱构建? 中的思考,最终没有依赖 RAG 或 embedding,而是用 wiki-link 双链关系构建图谱。点开一篇文章,可以看到它引用了谁、又被谁引用;缩回全图,则能看见不同分类在整个博客中的分布和连接。

图谱合入统计页以后,「发布轨迹」与「引用脉络」成为同一入口下的两个观察角度:前者沿时间回望,后者沿关系漫游。统计不再只是一排数字,图谱也不再是一座孤立的页面。

关于:让书架代替自我介绍

以书架照片为主角的关于页面

关于页面最初主要依靠文字自述。后来 Xnne 发现,继续往里面添加性格标签和经历,并不会让“我是谁”变得更具体,反而越来越像一张填写完整却没有温度的表格。

于是页面被改成了一幅「阅读肖像」:先把真实书架搬到读者面前,用一组可以翻阅、放大并附带短句的照片作为自我介绍。长歌、轻小说、新海诚、东野圭吾、村上春树、川端康成、三岛由纪夫、黑塞、毛姆……这些阅读留下的排列,比一串抽象标签更接近 Xnne 想介绍的自己。

如果真能从一个人看过的书里认出这个人,那么这些照片,或许比自我介绍更接近我。

文字没有被彻底删掉,而是退到照片之后。页面再用「记录、整理碎片、音乐」三张卡片概括驱动力,最后保留更具体的自述。它从“阅读一段关于我”,变成了“先看看我留下了什么,再决定怎样认识我”。

评论区

MrXnneHang
/
xnnehang.top
Waiting for api.github.com...
00K
0K
0K
Waiting...

评论区选用 giscus,基于 GitHub Discussions 实现。读者用 GitHub 账号即可评论,所有数据存在仓库的 Discussion 里,无需后端。

灵感来源:Menghuan1918’s Blog

Xnne 在对方博客看到这个方案后觉得不错:轻量、零成本、评论即 Discussion 的管理方式很适合技术博客。后来自己也加上了,并做了自定义主题以匹配博客的蓝色调。

自定义 404 页面

GitHub Pages 默认的 404 页面只有一段 File not found,既没有本站导航,也没有返回入口。只要访客走到不存在的地址,就会突然被丢出博客的视觉语境。

本站为此增加了自定义 404 页面:用「这片知识星球还是一片荒漠」来表示尚未被记录的坐标,保留导航栏、主题切换和页脚,并提供「返回首页」与「查看归档」两个入口。页面继续沿用主站的主题色,也适配移动端与深色模式。

Astro 构建时会生成根目录下的 404.html。当 GitHub Pages 找不到请求的静态文件时,会返回这个页面,同时保留正确的 HTTP 404 状态。这样即使访客走错了路,也仍然留在这片知识星球里。

自定义 404 页面

在途工作台:把待办事项做成炼金

以炼金为隐喻的在途工作台

在途工作台是 GitHub Issues 的公开只读视图。GitHub 负责录入、编辑、权限与历史,博客则负责展示、搜索、优先级和标签浏览。这样,正在推进的想法不必等到成为文章或项目之后才被看见。

它的任务管理骨架受到滴答清单启发,但 Xnne 不想再做一张普通的 Todo List。于是,《魔药经济学》与《上古卷轴 5:天际》里的炼金体验也被放进了这套工作流:散落的材料被收集、分类、投入炼制,最后成为新的东西。

本站没有照搬其中任何一套系统,而是把三种灵感重新组合。尚在推进的事项进入「坩埚」,按 P0 到 P3 的优先级和普通标签整理;关闭的 Issue 则成为「结晶」,保留已经完成的痕迹。工作台上的那句话概括了这层隐喻:

把散落的想法混合熔炼。

对 Xnne 来说,在途不只公开了“接下来要做什么”,也为那些很容易一闪而过的想法准备了容器。Todo 不再只是等待划掉的一行字,而是一份仍在炼制中的材料。

全站中英双语:让另一种语言成为站点的一部分

最初想到给博客增加英文时,Xnne 面对的并不只是“把文章翻译一遍”。如果英文只能出现在正文里,而导航、搜索、归档、统计、关系图和 RSS 仍然只认识中文,那么它更像一批散落的译稿,而不是一个真正可以独立阅读的英文站点。

因此,这次改造选择保留既有中文 URL,把英文站统一放在 /en/ 下,并由读者主动切换语言。页面不会根据浏览器语言强制跳转;一篇文章的中英文版本则通过稳定的 translationKey 配对。这样,旧链接不会失效,两种语言也都有清晰、可预测的地址。

真正费力的是让语言进入整套内容关系。最终,首页、导航、归档、系列、书架、在途工作台、统计、关系图、搜索、404、RSS 与 SEO 都补上了英文版本;WikiLink、相关文章、上一篇与下一篇、分类和系列只在当前语言中解析。中英文还分别生成搜索索引、RSS、统计目录和图谱数据,避免读者切到英文后,又在某条路径上突然掉回中文。

与此同时,66 篇已发布文章被迁移成完整的英文对应版本。迁移没有把文章视为彼此孤立的文本:带有 WikiLink 的文章群需要一起处理,否则译文中的链接会指向尚不存在的标题;每篇文章完成后先做翻译配对与文件检查,再把完整构建留到批次节点统一验证。这样的顺序让一次规模很大的迁移仍然可以被分解、检查和追踪。

这次全站英文化并不是为了假装博客从此没有语言边界。它更像是又铺了一条完整的路:中文仍是这座博客最初生长的地方,英文则不再只是正文旁边的附属品,而拥有自己的入口、导航和内容网络。双语由此从一项翻译任务,变成了博客结构本身的一部分。


以上就是这座博客目前的主要灵感脉络。感谢这些项目、博客、应用与游戏的创作者,把自己的实践和想象留了下来,让后来者有迹可循。

它以后大概还会继续变化。下一次某个新页面长出来时,这份清单也会再多一条支流。

重建博客:我的灵感来源都是哪里
https://xnnehang.top/posts/blog-rebuild-inspirations/
作者
XnneHang
发布于
2026-06-07
许可协议
CC BY-NC-SA 4.0