导航站

导航站维护

从修改导航数据到检查在线状态,再到构建和验证公开域名的一套常用流程。

项目准备

示例项目目录:

~/projects/nav-site

示例公开地址:

https://nav.example.com/

常用入口:

对象路径或地址用途
内容源data/webstack.yml首页分类和网址卡片
友情链接data/friendlinks.yml友链数据
顶部导航data/headers.yml顶部菜单入口
链接状态data/link_status.yml绿色/红色在线状态点
检测脚本scripts/check_links.py批量检测网址可用性
静态输出docs/GitHub Pages 发布目录

新增网址

打开 data/webstack.yml,按现有分类添加卡片。

常见字段:

字段说明
title卡片标题,尽量短
url主要访问地址
logo本地图标或远程 favicon
description一句话说明用途
qrcode可选二维码
usrl可选备用链接

示例:

- title: 示例站点
  logo: "https://www.google.com/s2/favicons?sz=64&domain=example.com"
  url: https://example.com/
  description: 示例站点说明

维护建议:

  • 优先放进已有分类,避免轻易新增大类。
  • 标题使用站点名,不写过长营销描述。
  • 描述写用途,不写泛泛的“很好用”。
  • 图标优先用本地稳定资源;没有图标时可用 Google S2 favicon。
  • 新增大量网址后一定跑链接检测。

检测链接状态

进入项目目录:

cd ~/projects/nav-site

运行检测脚本:

python3 scripts/check_links.py --timeout 10 --workers 24

脚本会读取:

  • data/webstack.yml
  • data/friendlinks.yml
  • data/headers.yml

并生成:

data/link_status.yml

状态含义:

状态页面表现说明
online绿色点链接可访问
restricted通常视为可用需要登录、限流或禁止 HEAD
offline红色点链接异常或检测失败
为什么有些正常网站会 restricted? 部分网站会对脚本访问返回 403429 或类似限制状态。它们不一定是真的挂了,但需要人工打开确认。

本地构建

导航站使用 Hugo 生成静态页面:

hugo --minify

构建后检查:

  • docs/index.html 是否更新。
  • docs/CNAME 是否仍然存在。
  • 首页卡片、图标、状态点是否正常。

如果本机有多个 Hugo 版本,优先使用项目实际可工作的版本,不要随手换全局 Hugo。

发布到 GitHub Pages

确认改动范围:

git status --short
git diff --stat

提交并推送:

git add data/webstack.yml data/link_status.yml docs
git commit -m "content: update navigation links"
git push origin main

如果还改了脚本、样式或配置,把对应文件也加入提交。

线上验证

本地构建成功不代表线上已经更新。推送后打开:

https://nav.example.com/

检查项:

  • 新增网址是否出现在正确分类。
  • 图标是否加载。
  • 绿色/红色状态点是否显示。
  • 异常链接是否符合预期。
  • 手机宽度下卡片是否挤压。

可以用命令确认公开站点响应:

curl -I --max-time 10 https://nav.example.com/

常见维护动作

修复失效链接

  1. data/link_status.yml 中找到 offline 链接。
  2. 回到 data/webstack.yml 查找对应卡片。
  3. 人工打开确认是否迁移、改域名或永久失效。
  4. 更新 urllogodescription
  5. 重新运行检测脚本。

调整分类顺序

分类顺序由 data/webstack.yml 中的顺序决定。移动整段分类前,先确认子分类结构没有被破坏。

增加常用热门站点

优先补到已有栏目:

  • AI 工具放到 AI 或效率类。
  • 编程工具放到编程学习。
  • 资源站放到素材资源。
  • 娱乐站放到悠闲娱乐。

新增后统一跑检测和本地构建。

联系方式更新

联系入口优先放在 content/about.md、顶部导航或个人相关卡片里。变更后同时检查导航站和文档站是否有旧地址残留。