图片alt属性优化:SEO和可访问性的双重收益实战
alt属性被严重低估
接手过一个图片站,每月30万流量里图片搜索流量只占2%。排查发现所有图片的alt属性要么是空,要么是”img001”这种垃圾值。
花了三周系统优化alt属性,三个月后图片搜索流量占比涨到18%,整体流量涨了23%。alt属性这种看起来不起眼的细节,收益超乎想象。
alt属性到底干什么用
三个核心用途:
| 用途 | 受益方 | 说明 |
|---|---|---|
| SEO | 搜索引擎 | 搜索引擎看不懂图片,靠alt理解内容 |
| 可访问性 | 视障用户 | 屏幕阅读器朗读alt文本 |
| 容错 | 所有用户 | 图片加载失败时显示alt文本 |
Google图片搜索完全依赖alt属性理解图片内容。没有alt的图片等于没有描述,搜索引擎无法判断是否相关,排名自然上不去。
alt属性的写法原则
原则1:准确描述图片内容
<!-- 错误 -->
<img src="iphone15.jpg" alt="图片">
<img src="iphone15.jpg" alt="">
<img src="iphone15.jpg" alt="手机">
<!-- 正确 -->
<img src="iphone15.jpg" alt="iPhone 15 Pro Max钛金属原色背面图">
原则2:融入关键词但不堆砌
<!-- 错误:关键词堆砌 -->
<img src="shoes.jpg" alt="运动鞋 跑步鞋 篮球鞋 男鞋 女鞋 便宜">
<!-- 正确:自然融入 -->
<img src="shoes.jpg" alt="耐克Air Zoom Pegasus 40男款跑步鞋侧视图">
原则3:长度控制在125字符内
屏幕阅读器会分段朗读过长的alt,体验差。超过125字符考虑用 longdesc 属性或者图片下方加文字说明。
不同类型图片的alt策略
产品图: 包含品牌、型号、颜色、视角
<img src="macbook-pro.jpg" alt="MacBook Pro 14英寸深空灰色正面打开状态">
图表: 描述图表表达的数据
<img src="sales-chart.jpg" alt="2024年Q1-Q4季度销售额柱状图,从120万增长到280万">
装饰图: 用空alt
<img src="divider-line.png" alt="">
纯装饰的图片alt留空(不是不写alt属性,是写 alt=""),告诉屏幕阅读器跳过这张图。如果不写alt属性,屏幕阅读器会朗读图片文件名,体验更差。
按钮和图标: 描述功能
<img src="search-icon.png" alt="搜索">
<img src="cart-icon.png" alt="购物车,3件商品">
关键词研究的辅助
写alt不是瞎写,要基于关键词研究。用Google Keyword Planner或者Ahrefs看用户怎么搜图片:
| 用户搜索词 | 对应alt写法 |
|---|---|
| iPhone 15配色 | iPhone 15全部配色实拍对比图 |
| 北欧风格客厅 | 北欧风格客厅装修案例,灰色沙发配白色墙面 |
| Python学习路线 | Python从入门到进阶学习路线思维导图 |
alt里用的词要和页面标题、正文里的词呼应,但不要完全重复。
电商平台批量优化
电商站图片多,手动改不现实。写脚本批量生成:
import re
def generate_alt(product_name, color, view, category):
'''根据产品属性生成alt'''
template = f"{product_name} {color}{view}"
if category:
template += f" - {category}"
return template[:100]
# 批量处理
products = [
{"name": "Nike Air Max", "color": "黑色", "view": "侧面图", "category": "男款运动鞋"},
{"name": "Adidas Ultraboost", "color": "白色", "view": "正面图", "category": "跑步鞋"},
]
for p in products:
alt = generate_alt(p["name"], p["color"], p["view"], p["category"])
print(f'<img src="{p["name"]}.jpg" alt="{alt}">')
模板生成后人工抽检,避免出现”iPhone 15 iPhone 15 iPhone 15”这种重复。
WordPress站的alt优化
WordPress上传图片时填的”替代文本”就是alt。但老文章的图片都没填,用SQL批量补:
-- 把图片文件名转成可读alt
UPDATE wp_posts
SET post_excerpt = REPLACE(REPLACE(post_title, '-', ' '), '_', ' ')
WHERE post_type = 'attachment'
AND post_excerpt = '';
再用插件自动把post_excerpt同步到img的alt属性。
可访问性合规
WCAG 2.1标准要求所有非装饰图片必须有alt文本。欧美市场这不仅是SEO问题,是法律问题。ADA诉讼里因为图片没alt被起诉的案例不少。
用Wave或者axe DevTools扫描页面,红色错误里就有缺alt的图片。
数据验证
优化完alt后,看Google Search Console的图片搜索报告:
| 指标 | 优化前 | 优化后 |
|---|---|---|
| 月图片展示次数 | 8万 | 35万 |
| 图片点击率 | 1.2% | 3.8% |
| 图片搜索流量占比 | 2% | 18% |
| 整体自然流量 | 基准 | +23% |
图片搜索流量起来后,整体流量结构更健康,不依赖单一关键词。
图片Sitemap提交
给Google单独提交图片sitemap,加速收录:
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
xmlns:image="http://www.google.com/schemas/sitemap-image/1.1">
<url>
<loc>https://example.com/product/iphone-15</loc>
<image:image>
<image:loc>https://example.com/images/iphone15-front.jpg</image:loc>
<image:title>iPhone 15正面图</image:title>
<image:caption>iPhone 15钛金属原色正面实拍</image:caption>
</image:image>
</url>
</urlset>
避坑清单
- alt不要和图片下方的caption完全一样,重复内容
- 同一页面多张同类图片alt要差异化,别都写”产品图”
- SVG图片也要加alt或者用
<title>标签 - 背景图无法加alt,确保信息在HTML文本里也能获取
- 别用alt做关键词堆砌,Google会判定为垃圾内容降权
- 图片文件名也要语义化,iphone15-front.jpg比IMG_1234.jpg好