KEEL · 龙骨 · A CURRICULUM FOR THE AI ERA
06 · 内容与内链:收录之后怎么变好 — keel 龙骨
本章目标:让每个页面有清晰主题、被内链支撑、并按节奏更新。 验收标准:站点没有"孤儿页面",每个内容页至少有 3 条内链指入,且更新能体现在 sitemap 的 lastmod。
本章目标:让每个页面有清晰主题、被内链支撑、并按节奏更新。
验收标准:站点没有"孤儿页面",每个内容页至少有 3 条内链指入,且更新能体现在 sitemap 的 lastmod。
前提:这一章生效的前提是前五章已经做完。未收录时优化内容,等于在没人看的房间里重新摆家具。
一、一个页面一个主题
搜索引擎理解页面的基本单位是「这个页面在讲什么」。判断标准很简单:
这个页面的 title 能不能用一句话说清它独有的内容?
如果三个页面的 title 都能套同一句话,它们就该合并。
内容型站点的常见结构(本站采用)
首页(WebSite)
└─ 板块页 /tracks/<track>/ → 讲这个板块解决什么问题
└─ 课程页 /courses/<course>/ → 讲这门课的产出与章节结构
└─ 章节页 /courses/<course>/lessons/<n>/ → 讲一个具体问题
每一层都有自己的 title 与 description,不是上层的复制。这样既避免重复内容,也让爬虫通过结构理解层级关系(配合第 02 章的 BreadcrumbList)。
正文的可抓取性细节
- 标题层级要真实:一个 h1(页面主题),h2/h3 分段。用样式放大字号冒充标题没有语义价值
- 锚点目录要有真实
href:爬虫会顺着锚点理解页面结构,也能生成搜索结果里的"跳转至"链接 - 代码块与表格不影响收录,但注意不要把长正文塞进图片——图片里的文字爬虫读不到
⚠️ 一个真实踩过的坑:把内容放在需要登录才能访问的区域,搜索引擎永远看不到。本站的做法是把公开内容与付费内容分开构建(split-private-content),公开部分的 sitemap 只含公开 URL,私密章节不进 sitemap 也不预渲染。
二、内链:最重要的可控因素
外链你控制不了,内链完全在你手里。 内链同时解决三件事:让爬虫发现页面、传递权重、告诉搜索引擎页面的层级关系。
三条规则
1. 不要有孤儿页面
任何进了 sitemap 的页面,都必须能从站点内部点进去。检查方法:
# 从首页出发做一次简单爬取,收集内链,与 sitemap 比对
curl -s https://www.xxxxxx.cn/learning/ \
| grep -oE 'href="/learning/[^"]*"' | sed 's/href="//;s/"//' | sort -u > /tmp/linked.txt
curl -s https://www.xxxxxx.cn/learning/sitemap.xml \
| grep -o '<loc>[^<]*</loc>' | sed 's/<[^>]*>//g' | sort -u > /tmp/sitemap.txt
# 在 sitemap 里但首页链不到的(首层发现不了,需要更深爬取或补内链)
comm -13 /tmp/linked.txt /tmp/sitemap.txt | head
上面只爬了首页一层,深层页面靠列表页与章节导航逐级可达即可。真正要防的是完全没有任何入口的页面。
2. 用描述性锚文本
<!-- ❌ -->
<a href="/learning/courses/tools/">点击这里</a>
<!-- ✅ -->
<a href="/learning/courses/tools/">Tool Calling:工具注册与幂等执行</a>
锚文本是搜索引擎理解目标页面内容的强信号。"点击这里"是零信息。
3. 关键页面多入口
重要的内容页应该出现在:所属列表页 + 相关章节的"延伸阅读" + 首页/板块页的推荐位。入口越多,被抓频率越高。
相关链接的实现
本站的做法是在内容源里维护「前置关系」:
{
"id": "tool-calling",
"prerequisites": ["agent-harness"]
}
构建时把它渲染成双向链接(前置 → 本章,本章 → 后继)。好处是内容与关系同源,不会出现在 A 页加了链接、B 页忘了的漂移。
三、更新节奏与 lastmod
搜索引擎偏好"活着"的站点。两个可操作点:
1. 更新要真实体现在 lastmod
# 内容变更后重新生成 sitemap,确认对应 URL 的 lastmod 变了
curl -s https://www.xxxxxx.cn/learning/sitemap.xml | grep -A1 'lessons/1' | grep lastmod
虚假的 lastmod(每次构建全量刷新)会让这个字段失去意义,爬虫会更频繁地白跑。只更新真正变了的条目。
2. 保持稳定的更新频率
不需要日更。对内容型站点,每周 1~2 次有意义的内容更新远好于每天改一个错别字。爬虫会学习站点的更新节奏并相应调整抓取频率——长期不更新会被降频,恢复需要时间。
四、质量信号:E-E-A-T 的落地理解
Google 的质量评估框架强调 Experience / Expertise / Authoritativeness / Trustworthiness。对个人站点,可操作的部分其实很朴素:
| 原则 | 具体做法 |
|---|---|
| 署名与归属 | 有作者信息页,说明你是谁、为什么写这个 |
| 可验证性 | 结论给出依据(代码、日志、命令输出),而不是断言 |
| 第一手经验 | 写你真正做过的事,包含失败与取舍——这是最难被替代的部分 |
| 站点层面的可信 | 有 HTTPS、有联系方式/关于页、无隐藏内容、无诱导点击 |
| 时效声明 | 技术内容标注适用版本与时间("nginx 1.24 下…") |
反面清单(会实实在在扣分):
- 关键词堆砌(同一词在 title/description/正文反复出现)
- 采集/翻译他人内容拼装
- 页面正文极少但广告/外链极多
- 用隐藏文字(白字白底)塞关键词
- 大量近义重复页面(programmatic 生成的空壳页)
五、面向 AI 摘要的写作(新变量)
AI 回答越来越成为内容的入口。被 AI 引用的前提通常是:内容能被独立摘出一段回答某个问题。
可操作的三点:
- 每节有小标题且是问题式表述("为什么爬虫抓不到正文?"比"抓取原理"更易被摘取)
- 关键结论前置:段落首句给出答案,后面再展开论证
- 结构化表达:表格、清单、代码块,比大段散文更容易被解析
这三点与传统 SEO 并不冲突——它们本质上都是"让内容更容易被机器理解"。
六、本章验收
# 1. 孤儿页面检查(首页可发现性)
comm -13 /tmp/linked.txt /tmp/sitemap.txt | wc -l
# 2. 抽查内链是否可访问
curl -s https://www.xxxxxx.cn/learning/courses/tools/ \
| grep -oE 'href="/learning/[^"]*"' | sed 's/href="//;s/"//' | sort -u \
| while read -r p; do printf "%s " "$(curl -s -o /dev/null -w '%{http_code}' "https://www.xxxxxx.cn$p")"; echo "$p"; done \
| grep -v '^200' || echo "全部 200"
# 3. lastmod 是否反映真实更新
curl -s https://www.xxxxxx.cn/learning/sitemap.xml | grep -c '<lastmod>'
- 无孤儿页面(sitemap 中的每一条都能从站内导航到达)
- 内链锚文本是描述性的
- 抽样内链全部返回 200(无死链)
- 重点页面有 3 个以上入口
- lastmod 只在内容真正变化时更新
- 正文有真实标题层级、结论前置、结构化表达
下一章处理最后一个影响排名的可控因素:性能。