一个博客除了评论还需要什么:叶扬的博客基础功能建设清单
博客能打开、能发文、能评论,只是"活着";要让文章在十年后还能被人搜到、读到、读得舒服,需要一整套基础功能。这篇文章做一次系统盘点:一个完整博客应该具备哪些功能,叶扬的博客已经有什么、缺什么,以及接下来的建设路线图。
2026-09-15 更新:本文写于系列开工前(9 月 13 日),是一张"开建前的清单"。两天后 G01–G16 正篇已全部收官,清单上的待办基本打勾,下文表格与路线图已按现状回填,每项都附上对应的实战教程链接。
为什么要先列清单再动手
刚把博客搭起来的时候,很容易看到别人有什么就往自己站上搬:今天加个看板娘,明天加个音乐播放器,后台挂三四个统计脚本。几年后回头看,这些"装饰"大多随第三方服务倒闭而失效,真正支撑博客运转的基础功能反而一直欠债。
所以叶扬先按"读者从站外到读完一篇文章"的完整路径,把功能分成五类:
- 内容组织与导航——读者进来之后怎么找到内容;
- 阅读体验——找到之后能不能舒服地读完;
- 订阅与传播——读完愿不愿意订你、分享你;
- SEO 与收录——新读者怎么从搜索引擎走进来;
- 统计与运维——博主自己怎么知道站还活着、谁在读。
下面逐类盘点,并标注本站现状。
一、内容组织与导航
这是博客的骨架,决定一篇老文章半年后还能不能被翻出来。
| 功能 | 作用 | 本站现状 |
|---|---|---|
| 文章列表 / 分页 | 首页按时间倒序展示,数量多了分页 | ✅ 框架自带(每页 15 篇);G13 另补数字分页条 |
| 标签聚合 | 同主题文章互相关联 | ✅ 已有标签页 |
| 站内搜索 | 按关键词找旧文 | ✅ 框架自带 |
| 时间线归档 | 按年月浏览全部文章,写久了价值越高 | ✅ 已建,见 G10 |
| 关于页 About | 博主是谁、怎么联系,建立信任的第一页 | ✅ 已建(singlePage 机制见 G01,页面在 /about) |
| 友情链接 | 博主社交与互相引流 | ⬜ 可选,后期再说 |
这里有个认知:标签是"按主题找",归档是"按时间找",搜索是"按关键词找",三者不可互相替代。文章上了几十篇之后,归档页会成为自己回顾写作历程最常用的入口。
二、阅读体验
| 功能 | 作用 | 本站现状 |
|---|---|---|
| 文章目录 TOC | 长文导航与定位 | ✅ 桌面端已升级为 G16 tocbot(嵌套层级 + 滚动高亮当前章节),手机端 ☰ 浮层见 G14 |
| 评论系统 | 读者互动、博主反馈通道 | ✅ utterances(基于 GitHub Issues) |
| 图表支持 | 技术文画流程图、时序图 | ✅ Mermaid 已本地部署,G15 升级为自动检测、按需加载 |
| 代码高亮 + 复制按钮 | 技术博客刚需 | ✅ 框架自带 GitHub 同源高亮 |
| 暗色模式 | 夜间阅读,GitHub 同源配色 | ✅ 框架自带 |
| 上一篇 / 下一篇 | 文末连续阅读引导 | ✅ 已建,见 G08 |
| 字数与阅读时长 | 读者决定"要不要现在读完"的参考 | ✅ 已建,见 G09 |
| 图片灯箱 / 懒加载 | 点击看大图、节省流量 | ✅ 已装官方 lightbox,见 G05 |
| 文末版权声明 | 声明转载规则,固定一块 CC 协议 | ✅ 已用 bottomText 配置实现,见 G02 |
| 回到顶部 | 长文回退导航 | ✅ 桌面目录卡片附带 Top 按钮(G16 保留) |
阅读体验类功能有一个共同原则:只在长内容上才体现价值,所以宁可后补,不要提前污染短文章。这也是叶扬把"上下篇导航"和"阅读时长"排在 TOC 之后的原因——先解决"文章内部找不到路",再解决"读完往哪走"。
三、订阅与传播
| 功能 | 作用 | 本站现状 |
|---|---|---|
| RSS 订阅 | 不依赖平台的长期订阅方式,博客的灵魂功能 | ✅ 框架自动生成 rss.xml |
| Open Graph / Twitter Card | 链接发到社交平台时展示标题、摘要、封面 | ✅ 框架自带 og:title/description/url/type,封面经 G03 配置 ogImage(自制 1200×630 og.png);无独立 twitter:card 标签,推特会复用 OG |
| 分享按钮 | 复制链接 / 分享到社交平台 | ⬜ 低优先级 |
叶扬把 RSS 看得比一切分享按钮都重。微博、X、公众号都可能封号或倒闭,RSS 是互联网上唯一一个订阅关系完全属于读者自己的协议:读者拿着一个 XML 地址,用任何阅读器都能订阅,博主关站之外没有任何人能切断它。Gmeek 默认生成 RSS,这是选框架时的加分项。
OG 标签则是最被低估的传播功能:同样一条链接丢进聊天框,带封面摘要的卡片和一条光秃秃的 URL,点击率差距非常明显。
四、SEO 与收录
这是五类里唯一"做了会持续带来陌生读者"的类别,也是 GitHub Pages 博客最容易欠债的地方。
| 功能 | 说明 | 优先级 | 现状 |
|---|---|---|---|
| sitemap.xml | 把全部文章 URL 主动交给搜索引擎 | P0 | ✅ G04(sitemap_gen.py 构建期自动生成) |
| Google Search Console | 提交 sitemap、查看收录与搜索词 | P0 | ✅ G04 已提交 rss.xml,收录复查中 |
| Bing 站长工具 | 国内环境下必应收录远好于 Google,值得同步提交 | P0 | ✅ G04 已完成,当天即被抓取 |
| description / 结构化数据 | 每篇文章摘要、JSON-LD,影响搜索结果摘要 | P1 | ◑ description 框架自动取正文开头;JSON-LD 仍缺 |
| canonical 链接 | 避免多 URL 重复收录 | P1 | ⬜ 框架未自带,是清单上仅剩的技术缺口 |
| robots.txt | 爬虫规则入口 | P1 | ✅ G11 |
| favicon 与站点封面 | 浏览器标签页、收藏夹里的辨识度 | P1 | ✅ G03(自制"叶"字徽章 favicon + og.png) |
| 百度收录 | 对 github.io 域名极不友好,需要独立域名才有意义 | P2 | ⏭️ 评估后主动跳过(未备案、性价比低),非欠债 |
对静态博客来说,SEO 是一次性投入、长期收益的典型:sitemap 配好、提交一次,之后每次发文搜索引擎都会自己来抓。这件事比任何"引流技巧"都管用。
五、统计与运维
| 项目 | 说明 | 本站现状 |
|---|---|---|
| 访问统计 PV/UV | 看每篇文章被读了多少次 | ✅ Vercount |
| 来源与行为分析 | 读者从哪来、读多久 | ⬜ 暂不接 Google Analytics,隐私换数据不划算 |
| 自定义 404 页 | 输错链接时给读者出路而不是白页 | ✅ 已建,见 G11 |
| HTTPS | 传输加密、搜索引擎加分 | ✅ GitHub Pages 默认开启 |
| Markdown 原文备份 | 防止"账号没了文章也没了" | ✅ 构建时自动备份到仓库 backup/ |
| 静态资源本地化 | 第三方 CDN 挂掉时页面不残缺 | ✅ Mermaid、tocbot(G16)等资源全部放自己仓库 |
统计这块叶扬刻意保持克制:Vercount 只记数字,不追踪个人身份。博客不是商业产品,"读者从哪个关键词来"这种数据的价值,撑不起让 Google 等第三方在页面上挂追踪脚本的代价。
运维里最想强调的是备份策略。这个博客的文章虽然写在 GitHub Issues 里,但构建时会把每篇 Markdown 原文自动提交回仓库的 backup/ 目录——文章、页面、配置同处一个 Git 仓库,git clone 下来就是整站的完整离线副本。建议定期再镜像一份到私有仓库,做到双保险。
路线图:按什么顺序建
功能很多,但不能同时开工。按"投入产出比"而不是"实现难度"排,叶扬的顺序是:
P0(立刻做,半天内全部完成)
- 接入文章目录 TOC —— ✅ 已完成(过程见此,后经 G14/G16 两次升级);
- About 页面 + favicon —— ✅ 已完成(About 见 G01,favicon 见 G03);
- sitemap.xml + 提交 Google / Bing 站长平台 —— ✅ 已完成,见 G04(唯一持续带来新读者的投入,收录实战番外待发)。
P1(文章写多起来之前做)
- 自定义 404 页面 —— ✅ G11;
- 文末版权声明 —— ✅ G02(
bottomText一行配置); - 上一篇 / 下一篇导航 + 字数与阅读时长 —— ✅ G08 + G09;
- 时间线归档页 —— ✅ G10;
- 核查并补全 OG 标签、robots.txt、canonical —— ◑ OG 框架自带 + 封面见 G03,robots 见 G11;canonical 与 JSON-LD 尚未补,留作下一轮的两个小缺口。
P2(有实际需求再做)
- 图片灯箱(开始大量贴图时)—— ✅ 提前完成,见 G05;
- 分享按钮(文章开始被转发时)—— ⬜ 未做,维持低优先级;
- 友链页(认识的博主多起来时)—— ⬜ 未做;
- 独立域名 + 百度收录(愿意承担年费和备案问题时)—— ⏭️ 百度已决定跳过;独立域名仍挂起,等真有需求。
建设原则
最后立三条规矩,约束以后的自己不乱加东西:
- 静态优先,零依赖优先。能用一个本地 JS 文件解决的,不引第三方服务;能靠 HTML/CSS 解决的,不加载库。第三方服务会死,自己仓库里的文件不会。
- 走插件机制,不改上游模板。所有自定义通过
static/目录加资源、config.json注入脚本来实现,Gmeek 升级时不产生冲突,删一行配置即可回退。 - 为长期写作服务,不为"显得专业"服务。每加一个功能先问:叶扬写到第 100 篇文章时它还在发挥作用吗?答不上来就先不加。
小结
盘点完可以看到,Gmeek 框架已经替个人博客覆盖了骨架的大部分:发文、标签、搜索、RSS、评论、暗色模式、备份都在开箱之列。真正需要自己补的,集中在SEO 收录、About 等固定页面和长文阅读辅助三处。
这个系列随后确实按 P0 → P1 的顺序,每完成一项写一篇记录,清单即 roadmap。截至本次更新,清单上的项目除 canonical / JSON-LD 两个技术小缺口、分享按钮与友链两个主动挂起项外,已全部打勾,完整路线见 第 0 篇总揽。
清单之外还有几项"计划外收获":外链自动新标签页(G12)、列表数字分页条(G13)、Mermaid 自动按需加载与给上游提的 bug 修复 PR(G15,Meekdai/Gmeek#319)。写着写着从"用框架"走到了"给框架修 bug",这是列清单那天没想到的彩蛋。