做 SEO 是不是一定要写代码?我在这行干了快十年,这个问题被问到的频率能排进前三。先说结论:不一定,但不会看代码、不改代码,你的 SEO 天花板会非常低。我见过太多优化师卡在 60 分上不去,不是策略不行,是落不了地。
下面我会分几种情况拆解,你可以根据自己的角色对号入座,看看哪些代码层面的操作是绕不开的。
### 个人站长或单页站点:你几乎不需要写代码
如果你用的是 WordPress、Shopify、Wix 这类成熟的 CMS,或者 Hexo、Hugo 这类静态网站生成器,那么日常 90% 的 SEO 操作确实不需要你手写一行代码。
这些平台把基础优化做成了开关或输入框。你只需要关注:
- **标题和描述**:在 Yoast SEO、Rank Math 这类插件的面板里填好 title 标签和 meta description。
- **URL 结构**:在后台设置里把固定链接改成 `/post-name/` 或者自定义结构,避开默认的 `?p=123`。
- **图片 alt 属性**:在媒体库上传图片时,直接填写替代文本。
- **站点地图**:插件会自动生成 sitemap.xml,你只需要把地址提交到 Google Search Console。
- **robots.txt**:多数插件提供可视化编辑,你可以勾选哪些目录不让搜索引擎抓取。
这些操作本质上是给后台填参数,后台程序再帮你生成对应的 HTML。你确实没碰代码,但你要理解每个输入框背后对应的是哪个标签,否则参数填错了位置,等于白做。
### 技术 SEO 或中大型站点:看懂和修改代码是分水岭
一旦站点规模上来,页面数量过万,或者用了自研前端框架,纯后台点按钮就不够用了。这时候,搜索引擎抓取、渲染、索引的效率问题会集中爆发。以下这些场景,你绕不开代码。
#### 1. 抓取预算优化
大型站点页面多,Google 不会无限制抓取。你需要主动告诉爬虫哪些该抓、哪些不该抓。这件事只能通过配置 `robots.txt` 和页面头部的 `meta robots` 标签完成。
`robots.txt` 的写法示例:
```
User-agent: *
Disallow: /wp-admin/
Disallow: /tag/
Allow: /wp-admin/admin-ajax.php
Sitemap: https://www.example.com/sitemap.xml
```
页面头部控制索引和追踪的写法:
```
```
如果你不清楚 `Disallow` 和 `noindex` 的区别,这里有一组对比:
| 控制方式 |
生效位置 |
效果 |
适用场景 |
| robots.txt Disallow |
服务器根目录文件 |
阻止抓取,但页面仍可能被索引 |
后台管理目录、内部搜索页面 |
| meta robots noindex |
页面 HTML 头部 |
允许抓取,但不进入索引库 |
用户中心、过期活动页 |
这个表里的逻辑一旦搞反,比如用 `Disallow` 去阻止索引,页面可能因为外链被收录,但显示为“无可用信息”,排名全丢。
#### 2. 结构化数据标记
你想在搜索结果里展示星级、价格、FAQ 折叠问题,必须给页面加结构化数据。主流格式是 JSON-LD,这是一段 JavaScript 代码,需要插入到页面头部或主体里。
一个 FAQ 页面的结构化数据示例:
```
```
有些插件可以生成这段代码,但如果模板不支持或者你需要自定义字段,就得手动写。这段代码写错一个逗号,Google 结构化数据测试工具就会报错,富媒体展示资格直接取消。
#### 3. 页面渲染控制
现在很多站点用 Vue、React 做前端渲染。搜索引擎爬虫虽然能执行部分 JavaScript,但资源消耗大、延迟高。关键内容如果依赖客户端 JS 异步加载,抓取覆盖率会明显下降。
你需要和服务端开发配合,确认以下配置:
- 关键元数据(title、description、canonical、hreflang)必须在服务端渲染输出,不能依赖 JS 动态注入。
- 正文内容采用服务端渲染或预渲染,保证爬虫在 HTML 源码里直接拿到文本。
- 异步加载的推荐列表、评论区可以客户端渲染,但核心内容不行。
验证方法很简单:在浏览器里查看网页源代码,搜索正文里的句子。如果源代码里找不到,说明内容依赖 JS 执行,抓取有风险。
#### 4. 链接规范与 Hreflang
多语言站点需要在页面头部声明语言版本关系:
```
```
页面如果有重复内容,需要用 canonical 标签指定首选版本:
```
```
这些标签必须写在 HTML 的 `` 区域内。多一个斜杠、少一个域名,搜索引擎都会忽略整个指令。
### 代码质量直接影响排名,但机制和你想的不一样
很多人问:HTML 写得烂、CSS 不规范,会不会降权?Google 的官方回应一直是:代码有效性不是直接排名因素。但这句话被严重误读了。
代码质量是通过“抓取、渲染、体验”这三条路径间接影响排名的。以下四个维度有明确关联。
#### 1. 抓取效率
如果 HTML 里塞了大量内联 CSS 和 JS,页面体积膨胀到 200KB 以上,Googlebot 下载单个页面的时间增加。对于大型站点,这会导致有效抓取量下降。新内容上线后,被发现和索引的延迟变长。索引延迟对时效性内容排名打击很大。
#### 2. 渲染稳定性
HTML 结构错误会导致浏览器和爬虫的解析树断裂。常见问题包括:
- 标签未闭合,比如 `
` 没有对应的 `
`。
- 块级元素嵌套在行内元素内部。
- `` 区域里误放了 `` 才该有的标签。
这些错误会让页面在部分渲染引擎下出现布局错乱,也可能导致 Google 提取标题或结构化数据失败。标题提取错误,搜索结果里显示的标题就不是你设定的那个,点击率直接受影响。
#### 3. 核心网页指标
Google 的页面体验信号里,LCP、INP、CLS 这三项核心网页指标直接受代码质量影响。
- **LCP(最大内容绘制)**:如果 HTML 里引用了阻塞渲染的 CSS 和同步 JS,浏览器必须等这些文件下载完才能开始渲染最大元素。把非关键 CSS 异步加载,LCP 能从 4 秒降到 2 秒以内。
- **CLS(累积布局偏移)**:图片和广告位没有在代码里预留宽高属性,加载后会把页面内容挤下去。在 `
![]()
` 标签里显式声明 `width` 和 `height`,或者在 CSS 里用 `aspect-ratio` 固定比例,能直接消除这类偏移。
- **INP(与下一次绘制的交互延迟)**:长任务 JS 阻塞主线程,点击按钮后页面没反应。代码层面需要拆分长任务、延迟加载非关键脚本。
这三个指标和排名有统计相关性。Google 内部研究公布过,LCP 在 2.5 秒以内的页面,相比 4 秒以上的页面,移动端转化率有显著差异。虽然没给具体数字,但方向是明确的。
#### 4. 移动端可用性
移动端误点击、字号过小、视口未配置,这些问题在 Search Console 里会直接收到警告。根源都在代码:
- 视口标签缺失:`
` 没写。
- 可点击元素间距小于 48px,在触屏上容易误触。
- 字号基准小于 12px,移动端会自动缩放。
这些警告累积到一定比例,Google 会认为站点对移动设备不友好,排名下调。
### 你不需要成为程序员,但必须掌握这几个操作
结合我自己的项目经验,SEO 从业者不需要从零搭建网站,但以下五个代码层面的操作,建议你熟练到可以直接上手改:
1. **阅读和修改 `` 区域**:知道 title、meta description、meta robots、canonical、hreflang 的准确位置和写法,能用浏览器开发者工具检查是否生效。
2. **编写和测试结构化数据**:能用 JSON-LD 格式写 Article、Product、FAQ、BreadcrumbList 等常用类型,并用 Google 富媒体搜索结果测试工具验证。
3. **配置 robots.txt 和 sitemap**:理解通配符 `*` 和 `$` 的用法,知道 sitemap 索引文件的分割策略。
4. **使用浏览器开发者工具分析网络请求**:打开 Network 面板,筛选 HTML 请求,查看服务器返回的 HTTP 状态码和响应头,确认是否有 301/302 跳转、X-Robots-Tag 等指令。
5. **检查渲染结果**:在 Search Console 的“网址检查”工具里输入页面地址,点击“测试实际版本”,查看抓取到的 HTML 截图和资源加载列表,确认关键内容是否被成功渲染。
这五项技能不需要你写复杂的业务逻辑,但每一项都直接决定搜索引擎能不能正确理解你的页面。如果你目前对这些操作还不熟悉,建议从浏览器开发者工具的 Elements 面板开始,对照着 HTML 源码一行一行看,把自己站点的 head 区域彻底搞懂。这个基础打牢之后,上面提到的所有技术 SEO 操作,你都能独立完成 80% 以上。