上一篇,我对刚上线的网站做了第一次搜索收录排查。
网站是:
聆机智能制造业AI工具箱
地址:
这个网站主要面向制造业质量、设备、生产和工艺人员,用于生成 8D 报告、SOP 作业指导书、设备点检表、生产日报和班组交接班记录等常用文档。

上次检查确认了几件事:
-
模拟百度蜘蛛访问首页,返回
HTTP 200 -
Nginx 没有直接拦截
Baiduspider -
Next.js 返回的原始 HTML 中包含完整中文正文
-
百度蜘蛛能够读取"聆机智能""8D报告""SOP""设备点检表"等内容
-
页面中没有发现
noindex
这说明网站的基础访问和服务端渲染没有明显问题。
不过,可能是项目一开始立项定的名字和最终上线时定的名字不一样。
在检查首页原始 HTML 时,我发现页面标题与产品正式名称并不一致。
这篇记录标题的检查、代码修改、重新部署和生产环境验证过程。
一、先检查百度蜘蛛看到的首页标题
我先模拟百度蜘蛛访问首页,并将完整 HTML 保存到本地:
bash
curl -A "Baiduspider" -sL https://ai.linkede.cn/ \
> baiduspider-homepage.html
然后从 HTML 中提取 <title>:
bash
grep -oE "<title>[^<]*</title>" baiduspider-homepage.html
实际输出为:
html
<title>聆机智能 AI 文档生成工具</title>
这个结果说明,首页标题已经由 Next.js 在服务端生成。
百度蜘蛛请求页面时,可以直接从原始 HTML 中读取标题,不需要等浏览器执行 JavaScript。
因此,当前的问题并不是"没有 title",而是标题与产品正式名称不统一。
网站对外使用的名称是:
聆机智能制造业AI工具箱
但原来的页面标题是:
聆机智能 AI 文档生成工具
两者意思接近,但并不是同一个完整名称。
我们内部运营定下来产品名称后,要求在以下位置保持一致:
-
网站首页
-
浏览器标题
-
首页 H1
-
页面描述
-
公司主站
-
公众号文章
-
CSDN文章
-
小红书内容
-
对外宣传资料
因为如果不同地方分别使用"AI文档生成工具""制造业AI工具箱""聆机智能工具箱",用户不容易形成记忆,搜索引擎也需要更多时间理解这些名称之间的关系。
二、重新确定首页标题
首先根据运营需要,首页标题定为:
聆机智能制造业AI工具箱 - 8D报告、SOP、点检表在线生成
对应的 HTML 为:
html
<title>聆机智能制造业AI工具箱 - 8D报告、SOP、点检表在线生成</title>
这个标题由两部分组成。
前半部分是完整产品名称:
聆机智能制造业AI工具箱
后半部分说明网站的主要用途:
8D报告、SOP、点检表在线生成
相比原来的"AI文档生成工具",新标题更具有品牌效应和具体。
用户在搜索结果中看到标题后,也可以更快判断网站是否和自己的工作需求有关。
三、首页标题不要堆太多关键词
有时候做 SEO 时,很容易把标题写成下面这样:
8D报告生成器_SOP生成器_设备点检表生成器_AI文档_AI办公_制造业AI工具
看起来覆盖了很多词,但实际效果未必更好。
首先,这种标题可读性较差。
用户在搜索结果中看到一串关键词,很难快速判断网站的定位,也容易降低可信度。
其次,首页不需要承接所有细分关键词。
首页主要负责介绍品牌和整体产品定位。具体工具页面可以分别设置独立标题。
例如:
8D报告生成器 - 聆机智能制造业AI工具箱
SOP作业指导书生成器 - 聆机智能制造业AI工具箱
设备点检表生成器 - 聆机智能制造业AI工具箱
这样比把所有词都塞进首页标题更清楚。
四、检查 Next.js 中的标题配置位置
我们这个项目使用的是 Next.js。
Next.js 项目中的标题可能配置在多个位置,常见文件包括:
- app/layout.tsx
- src/app/layout.tsx
- app/page.tsx
- src/app/page.tsx
我先在项目目录中搜索旧标题和 metadata 配置:
bash
grep -RniE "聆机智能 AI 文档生成工具|generateMetadata|export const metadata" \
app src pages 2>/dev/null
搜索时重点关注:
layout.tsx
page.tsx
generateMetadata
next/head
因为 Next.js 中可能同时存在布局级 metadata 和页面级 metadata。
如果首页单独设置了 metadata,它可能会覆盖根布局中的标题。
五、为什么要检查 layout.tsx 和 page.tsx
Next.js 的 metadata 可能存在覆盖关系。
例如根布局中配置:
javascript
export const metadata: Metadata = {
title: "聆机智能制造业AI工具箱",
};
但首页 page.tsx 中又配置:
javascript
export const metadata: Metadata = {
title: "聆机智能 AI 文档生成工具",
};
这时首页最终输出的标题,仍然可能是:
聆机智能 AI 文档生成工具
因此,不能只修改一个文件就结束。
需要检查:
-
根布局是否有 metadata
-
首页是否有独立 metadata
-
是否使用了
generateMetadata -
是否设置了标题模板
-
是否存在旧标题残留
-
是否有
next/head重复设置标题
修改完成后,再次全局搜索旧标题:
bash
rg -n "聆机智能 AI 文档生成工具" app src pages 2>/dev/null
如果没有输出,说明旧标题已经从主要代码中移除。
六、修改后重新构建和部署
完成代码修改后,需要重新构建项目。
根据项目使用的包管理器,可以执行:
npm run build
或者:
pnpm build
构建完成后,再按照原来的部署方式更新生产环境。
如果使用 Docker Compose,可以执行:
docker compose build
docker compose up -d
如果服务直接通过 PM2 运行,可以根据实际项目执行:
pm2 restart 项目名称
部署完成后,还需要确认:
-
构建过程没有报错
-
新代码已经进入生产环境
-
Next.js 服务已经重新启动
-
Nginx 指向的是最新服务
-
没有继续运行旧容器
-
页面缓存已经更新
本地代码修改成功,并不代表线上页面已经生效。
七、不能只看浏览器标签页
部署完成后,浏览器标签页已经显示了新的标题。
但我没有把浏览器显示结果作为最终验收标准。
浏览器可能存在缓存,也可能在页面加载后通过客户端 JavaScript 修改标题。
对于搜索引擎收录,更重要的是确认:
服务器首次返回的 HTML 中,是否已经包含新标题。
因此,我再次模拟百度蜘蛛访问生产环境:
bash
curl -A "Baiduspider" -sL https://ai.linkede.cn/ \
| grep -oE "<title>[^<]*</title>"
实际输出为:

这说明修改已经真正生效。
新标题不是浏览器运行 JavaScript 后临时生成的,而是已经直接存在于 Next.js 返回的原始 HTML 中。
八、这次修改解决了什么
这次修改主要解决了三个问题。
1. 产品名称得到统一
修改前:
聆机智能 AI 文档生成工具
修改后:
聆机智能制造业AI工具箱
后续网站、公众号、CSDN、小红书和公司主站,可以统一使用同一个名称。
2. 标题更容易理解
新标题不仅告诉用户产品叫什么,还说明网站能做什么:
8D报告、SOP、点检表在线生成
相比笼统的"AI文档生成工具",用户更容易理解。
3. 确认百度蜘蛛可以读取新标题
通过 curl 模拟 Baiduspider 访问,确认新标题已经存在于生产环境原始 HTML 中。
这比只看浏览器标签页更加可靠。
九、标题改好,不代表马上被搜索引擎收录
完成标题修改后,网站不会立刻出现在搜索引擎搜索结果中。
title 只是搜索引擎理解页面的基础信息之一。
目前仍然需要继续检查:
-
description 是否需要补充完整品牌名称
-
canonical 是否配置
-
robots.txt 是否存在
-
sitemap.xml 是否存在
-
搜索引擎的搜索资源平台是否已经添加子域名
-
搜索引擎抓取诊断能否读取页面
-
公司主站是否链接到 AI 工具箱
-
网站是否有足够的公开内容页面
所以,这次修改的意义不是"改完标题马上排名",而是先统一网站的基础信息。
十、当前 description 的检查结果
此前我使用以下命令检查页面描述:
bash
curl -A "Baiduspider" -sL https://ai.linkede.cn/ \
| grep -oE '<meta[^>]+name="description"[^>]*>'
当前 description 为:
html
<meta
name="description"
content="面向质量、设备、生产、工艺人员,生成8D、SOP、点检表、生产日报等可导出的Word/PDF文档。"
/>
这段描述已经能说明主要用户和功能。
后续计划补充完整产品名称和制造业定位,例如:
html
<meta
name="description"
content="聆机智能制造业AI工具箱面向质量、设备、生产和工艺人员,支持生成8D报告、SOP作业指导书、设备点检表、保养规范和生产日报,并可导出Word和PDF。"
/>
这一项准备在后续基础 SEO 配置中继续处理。
十一、canonical 仍待补充
此前检查 canonical 时执行:
bash
curl -A "Baiduspider" -sL https://ai.linkede.cn/ \
| grep -oE '<link[^>]+rel="canonical"[^>]*>'
没有得到输出。
说明首页暂时没有发现 canonical。
后续在 Next.js metadata 中,增加:
javascript
import type { Metadata } from "next";
export const metadata: Metadata = {
metadataBase: new URL("https://ai.linkede.cn"),
alternates: {
canonical: "/",
},
};
最终应当生成:
html
<link rel="canonical" href="https://ai.linkede.cn/">
canonical 可以帮助搜索引擎确认首页的标准地址,避免不同 URL 被视为重复页面。
十二、本次使用的检查命令
检查生产环境标题:
bash
curl -A "Baiduspider" -sL https://ai.linkede.cn/ \
| grep -oE "<title>[^<]*</title>"
检查 description:
bash
curl -A "Baiduspider" -sL https://ai.linkede.cn/ \
| grep -oE '<meta[^>]+name="description"[^>]*>'
检查 canonical:
bash
curl -A "Baiduspider" -sL https://ai.linkede.cn/ \
| grep -oE '<link[^>]+rel="canonical"[^>]*>'
检查是否存在禁止索引设置:
bash
curl -A "Baiduspider" -sL https://ai.linkede.cn/ \
| grep -oiE "noindex|nofollow"
总结
这次修改的是聆机智能制造业AI工具箱的首页标题。
下一篇继续检查:
Next.js 网站的
robots.txt和sitemap.xml是否正确,以及为什么有些网站访问这两个地址时,返回的却是首页 HTML。