出版商指南,第 6 章
面向读屏软件和机器的数据
最近审查:2026 年 11 月
读屏软件、搜索引擎和 RSS 阅读器,都取决于你网站的结构。清晰的 HTML、结构化数据和干净的源,能给它们每一方所需要的东西。
从 HTML 开始
这些元素为页面提供地标,让读屏软件用户可以直接跳到文章。
<html lang="en">
<body>
<a href="#main">Skip to the article</a>
<header>
<nav aria-label="Main">...</nav>
</header>
<main id="main">
<article>
<h1>Article headline</h1>
<p>By <a href="/authors/jane-doe">Jane Doe</a></p>
<p><time datetime="2026-11-05T08:00:00+01:00">Published 5 November 2026</time></p>
<h2>First section</h2>
<p>Article text.</p>
</article>
<aside aria-label="Related articles">...</aside>
</main>
<footer>...</footer>
</body>
</html>
- 地标: 按其本来的用途使用
header、nav、main、aside和footer。当页面有多个nav时,为每一个加上标签。 - 跳转链接: 它让键盘用户可以跳过重复的导航,有助于满足 WCAG 成功标准 2.4.1。让它在获得焦点时可见。
- 标题: 标题只用一个
h1,并保持层级的顺序。在h2之后直接用h4,就是应避免的那种跳级。选择标题要看它在大纲中的位置,而不是看它的大小。 - 列表和表格: 使用真正的
ul、ol和table元素,这样软件才能读懂它们的结构(成功标准 1.3.1)。
语言
在每个语言版本中,都为 html 元素设置 lang(成功标准 3.1.1)。没有它,读屏软件可能会用错误的声音朗读你的文章。也要标出使用其他语言的段落(成功标准 3.1.2)。
<p>The minister called it <span lang="fr">une erreur historique</span>.</p>
图片
- 编写
alt文本,告诉读者这张图为报道增添了什么。 - 对纯装饰性的图片使用
alt=""。不要省略这个属性,因为有些读屏软件会把文件名读出来。 - 能用 CSS 背景做纯装饰的地方就用 CSS 背景。
- 照片说明和署名使用
figure和figcaption。
在每种屏幕上
对新闻模板最重要的 WCAG 2.2 AA 要求:
| 要求 | 目标 | 标准 |
|---|---|---|
| 文字对比度 | 4.5:1,大号文字为 3:1 | 1.4.3 |
| 文字缩放 | 放大到 200% 而不丢失内容 | 1.4.4 |
| 重排 | 320 CSS 像素宽,无横向滚动 | 1.4.10 |
| 焦点可见 | 可见的键盘焦点指示 | 2.4.7 |
| 焦点不被遮挡 | 焦点绝不会被完全隐藏 | 2.4.11 |
| 目标尺寸 | 至少 24 乘 24 CSS 像素 | 2.5.8 |
在手机上,用 VoiceOver 或 TalkBack,并使用最大的文字设置来测试。在桌面端,只用 Tab、Enter 和 Esc 键走一遍页面。
发布一份无障碍声明,说明你已达到什么、尚未达到什么,以及如何报告问题。
《欧洲无障碍法案》
指令(EU)2019/882 适用于 2025 年 6 月 28 日之后向消费者提供的所列服务。这份清单包括电子商务服务、电子书,以及提供视听媒体访问的服务。电子商务服务被定义为通过网站和基于移动设备的服务,应消费者要求远程提供、以订立合同为目的的服务。提供服务的微型企业可以豁免。
该法案并未把新闻网站本身列入清单。在线销售订阅,或销售电子书或视频访问权限的网站,仍可能属于其适用范围,各国法律还会补充细节。请与法律顾问一起确认你自己的情况。
文章的结构化数据
NewsArticle 标记有助于 Google 理解页面。Google 的指南说没有必填属性,所以请添加适用的属性。
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "NewsArticle",
"headline": "Article headline",
"image": [
"https://example.com/photos/1x1/photo.jpg",
"https://example.com/photos/4x3/photo.jpg",
"https://example.com/photos/16x9/photo.jpg"
],
"datePublished": "2026-11-05T08:00:00+01:00",
"dateModified": "2026-11-05T09:20:00+01:00",
"author": [{
"@type": "Person",
"name": "Jane Doe",
"url": "https://example.com/authors/jane-doe"
}]
}
</script>
- 使用带时区的 ISO 8601 日期。
- 让标记中的日期与页面上的日期保持一致,并用“发布于”或“最后更新”之类的标签显示它们。
- 提供 16x9、4x3 和 1x1 三种比例的图片,每张的宽乘高至少为 50,000 像素。
- 使用新闻图片,绝不要用你的标志。
- 让移动端和桌面端的标记保持一致。
干净的 RSS 源
你的源是网站最简单的机器可读版本,其中包含什么,由你完全决定。
<item>
<title>Article headline</title>
<link>https://example.com/news/article-headline</link>
<guid isPermaLink="true">https://example.com/news/article-headline</guid>
<pubDate>Thu, 05 Nov 2026 07:00:00 GMT</pubDate>
<description>One or two sentences that describe the article.</description>
<category>Politics</category>
</item>
- 每个频道都需要
title、link和description。 - 为每个条目提供稳定的
guid,能用永久链接的地方就用永久链接。 - 按这里所示的 RFC 822 格式编写
pubDate。 - 使用规范的文章 URL。
- 保持
description简短,不要放入付费文本。 - 在每个页面的
head中添加发现链接。
<link rel="alternate" type="application/rss+xml" title="Latest news" href="https://example.com/feed.xml">
发送 ETag 或 Last-Modified 头,当 RSS 阅读器的 If-None-Match 或 If-Modified-Since 表明内容没有变化时,回复 304 Not Modified。这能让频繁的抓取对你的服务器来说开销很小。
检查清单
- 在每个语言版本的
html元素上添加lang。 - 为每个模板添加跳转链接和一个
main地标。 - 为每个
nav和aside加上标签。 - 对你的文章模板做一次标题大纲检查。
- 在你的 CMS 中审核
alt文本,并把它设为新闻图片的必填字段。 - 检查链接、图片说明和署名的对比度。
- 用键盘测试,并用 VoiceOver 或 TalkBack 测试。
- 发布一份附有联系地址的无障碍声明。
- 询问法律顾问,《欧洲无障碍法案》是否适用于你的服务。
- 添加
NewsArticleJSON-LD,并让其中的日期与页面一致。 - 验证你的源,并确认它会发送
ETag或Last-Modified。
来源
- Page Regions,W3C WAI
- Headings,W3C WAI
- Decorative Images,W3C WAI
- F65: Failure of Success Criterion 1.1.1 due to omitting the alt attribute,W3C WAI
- Web Content Accessibility Guidelines (WCAG) 2.2,W3C
- Directive (EU) 2019/882 on the accessibility requirements for products and services,Official Journal of the EU, Publications Office
- Learn About Article Schema Markup,Google Search Central
- Add a Byline Date to Google Search Results,Google Search Central
- RSS 2.0 specification,RSS Advisory Board
- RSS autodiscovery,RSS Advisory Board
- RFC 9110: HTTP Semantics,IETF