图谱导航和链接分析手册

版本:v4(2026-10) 工具:build_name_map4.py + link_checker4.py 输出目录:8000/test/ 部署产物:8000/nav.html


一、整体流程

① 规范 HTML 的 <title>
        ↓
② python build_name_map4.py     (抽 title,建中文名表)
        ↓
③ python link_checker4.py       (生成两份图谱)
        ↓
④ 双击 test/link_graph_nav4.html  (本地测试)
        ↓
⑤ 满意后复制到 8000/nav.html      (部署)

二、目录结构

8000/
├── build_name_map4.py              ← 建表脚本
├── link_checker4.py                ← 生成图谱脚本
├── d3.v7.min.js                    ← D3 源文件(被内嵌)
├── index.html                      ← 你的站点首页
├── nav.html                        ← 部署产物(图谱导航)
├── wq/  ICTC/  ncg/  ...           ← 你的站点内容
│
├── _reports/                       ← 旧版产物(保留,不用)
│
└── test/                           ← 新版产物目录(自动创建)
    ├── name_map4.csv               ← 中文名对照表(可手工维护)
    ├── name_map4.json              ← 自动生成,py 读取用
    ├── name_map_report4.txt        ← 质量报告
    ├── link_graph_nav4.html        ← 导航版(双击能跑)
    ├── link_graph_analysis4.html   ← 分析版
    └── report_nav4.txt             ← 链接问题报告

三、<title> 规范

格式

<title>名称 - 牛春国个人主页</title>
<title>名称 | 牛春国个人主页</title>

示例

页面 <title>
首页 <title>牛春国个人主页</title>
维权导航 <title>维权 - 牛春国个人主页</title>
维权某页 <title>局戴尔维权总体工作路线图 - 牛春国个人主页</title>
技术导航 <title>技术 - 牛春国个人主页</title>
含连字符的名称 <title>dell-成就7510主板问题 - 牛春国个人主页</title>

关键点


四、日常操作

场景 1:新增页面

  1. 写 HTML,规范 <title>
  2. 跑:
cd C:\Users\niuch\Documents\8000
python build_name_map4.py
python link_checker4.py
  1. 双击 test/link_graph_nav4.html 看效果

场景 2:改了某个页面的 <title>

同上,跑两个脚本即可。不用手工改 CSV(因为 manual=no 时自动重新抽取)。

场景 3:某个页面不想改 <title>,但想在图谱上显示别的名字

  1. 打开 test/name_map4.csv
  2. 找到该行,改 chinese_name 列
  3. 把 manual 列改成 yes
  4. 保存(保持 UTF-8 BOM 编码)
  5. 跑 python build_name_map4.py(同步到 JSON)
  6. 跑 python link_checker4.py

注意:manual=yes 的行,以后重跑不会被 <title> 覆盖,但 title 列也不会更新。

场景 4:批量检查 title 质量

跑完 build_name_map4.py 后,看 test/name_map_report4.txt:


五、两个版本的区别

特性 nav 版 analysis 版
用途 日常导航,部署到站点 排查问题,放本地
文件名 link_graph_nav4.html link_graph_analysis4.html
D3 内嵌 内嵌
断链节点 不显示 显示(可开关)
空链节点 不显示 显示(可开关)
孤本节点 不显示 显示(可开关)
问题筛选下拉框 无 有
默认视图 正常结构 正常 + 问题高亮

六、交互功能

左侧面板

控件 作用
显示文件名 节点旁显示 l3-2.html
显示中文名 节点旁显示 局戴尔维权总体工作路线图
显示超链接 节点旁显示 wq/l3-2.html(路径)
打开超链接 勾选后点击节点直接打开页面
仅显示有中文名 过滤掉没有中文名的节点
显示断链/空链/孤本 仅 analysis 版,控制问题节点显示
问题筛选 仅 analysis 版,只看某类问题
单元筛选 只看个人/技术/维权/孙子等
搜索框 按文件名或中文名搜索
返回初始视图 重置缩放和过滤

注意:文件名和中文名互斥(开一个自动关另一个)。超链接独立。

节点交互

操作 效果
悬停 显示 tooltip(文件名、中文名、路径、状态、度数)
单击 隐藏其他,只留它 + 一跳邻居
单击空白 恢复全图
拖拽 移动节点位置
滚轮 缩放
拖动空白 平移

七、配色规则

节点颜色

角色 颜色 形状
总导航 index.html 亮黄 #ffd60a 五角星(大)
个人 ncg/sh/huiyilu/xianhuashenghuo 咖啡 #632000 圆
技术 ICTC/tixi/jishu/my-store 灰 #2c2c2c 圆
维权 wq 蓝 #1A497A 圆
孙子 njr 绿 #1d6f06 圆
其他 灰 #888888 圆
断链(analysis) 红 #ff2d55 圆
空链(analysis) 紫 #bf5af2 圆
孤本(analysis) 灰白空心 #dddddd 圆

其他


八、过滤规则

边的保留条件

一条边 A → B 保留,当且仅当:

  1. B 后缀是 .html / .md / .pdf
  2. A 和 B 同目录,或 A 是 index.html
  3. A 是 index.html 时,B 必须是目录入口(*/nav.html 或 */index.html)
  4. 深度差 ≤ 1

效果

边 保留?
index.html → wq/nav.html ✅
index.html → wq/l3-2.html ❌ 跨级
wq/nav.html → wq/l3-2.html ✅ 同目录
wq/l3-2.html → wq/jubaoshu.html ✅ 同目录
wq/l3-2.html → ICTC/tools.html ❌ 跨目录

被过滤的链接


九、部署流程

本地测试

cd C:\Users\niuch\Documents\8000
python build_name_map4.py
python link_checker4.py

双击 test/link_graph_nav4.html 测试。

此时节点链接失效(因为 test/ 下没有 wq/ 等子目录),这是预期的。测试时主要看结构、配色、开关。

部署

copy 8000\test\link_graph_nav4.html 8000\nav.html

(或你习惯的其他名字)

上传到服务器后:

部署后验证

浏览器打开 https://你的域名/nav.html:


十、脚本配置

build_name_map4.py

SITE_ROOT = Path(r"C:\Users\niuch\Documents\8000")
OUTPUT_DIRNAME = "test"

link_checker4.py

SITE_ROOT = Path(r"C:\Users\niuch\Documents\8000")
OUTPUT_DIRNAME = "test"
D3_PATH = SITE_ROOT / "d3.v7.min.js"

常用配置项

# title 分隔符(抽取时取前面部分)
TITLE_SEPARATORS = [" - ", " – ", " — ", " | ", "|", "·", "-", "–", "—"]

# 过滤的目录
EXCLUDE_DIRNAMES = {"bigsize", "_gsdata_", "_reports", ..., "test"}

# 过滤的目标前缀
BLOCK_PREFIX = ["bigsize/", "njr/photo/yey", "njr/video/s0", "njr/video/_"]

# 单元定义(配色用)
UNIT_DIRS = {
    "personal": ["ncg", "sh", "huiyilu", "xianhuashenghuo"],
    "tech":     ["ICTC", "tixi", "jishu", "my-store"],
    "wq":       ["wq"],
    "njr":      ["njr"],
}

十一、常见问题

Q1:中文名没显示

检查:

  1. test/name_map4.json 存在吗?
  2. 里面有你想要的条目吗?
  3. HTML 里勾了"显示中文名"吗?(和"显示文件名"互斥)

Q2:图谱是鸟窝

Q3:双击 HTML 打不开

Q4:节点链接失效

Q5:改了 CSV 没生效

Q6:某个文件被误判为断链

Q7:想改配色

改 link_checker4.py 里的 UNIT_COLORS、COLOR_ROOT_STAR 等常量。

Q8:想改过滤规则

改 link_checker4.py 里的 link_allowed_py 函数。


十二、快捷命令

# 进入工作目录
cd C:\Users\niuch\Documents\8000

# 建表
python build_name_map4.py

# 生成图谱
python link_checker4.py

# 一条命令搞定
python build_name_map4.py && python link_checker4.py

十三、文件清单

文件 作用 手工改?
build_name_map4.py 建中文名表 可改配置
link_checker4.py 生成图谱 HTML 可改配置/模板
d3.v7.min.js D3 源文件 不动
test/name_map4.csv 中文名表 ✅ 常改
test/name_map4.json py 读取用 ❌ 自动生成
test/name_map_report4.txt 质量报告 只看
test/link_graph_nav4.html 导航版 ❌ 自动生成
test/link_graph_analysis4.html 分析版 ❌ 自动生成
test/report_nav4.txt 链接问题报告 只看

十四、工作原则

  1. 规范 <title> 是根本,manual 列尽量不用
  2. 每改一批内容,重跑两个脚本,图谱自动更新
  3. nav 版部署,analysis 版本地诊断,两者互补
  4. 发现问题先看 report,再决定改 HTML 还是改配置
  5. 测试产物在 test/,部署产物在 8000/,互不干扰

手册结束。有疑问随时问。