AEO Saigon

文章目录

title: "Speakable Schema 与语音搜索:为 Google Assistant 和 Siri 优化内容" description: "Speakable schema 标记最适合朗读的文本段落——帮助内容出现在 Google Assistant、智能音箱和 AI 语音助手中。面向越南新闻博客、电子报纸和信息网站的实施指南。" date: "2026-08-11" author: "AEO Saigon" category: "huong-dan" faqs:

  • question: "Speakable schema 是如何工作的?" answer: "Speakable schema 将页面中的一个或几个文本段落(通常每段 20-50 个词)标记为"适合朗读"。当用户通过语音询问 Google Assistant("嘿 Google,最新的股市新闻是什么"),Assistant 会找到具有有效 Speakable schema 的页面,获取标记的文本段落并朗读出来。没有 schema——AI 必须自行决定朗读哪个段落,通常准确度较低。Speakable 目前被 Google 正式支持用于新闻页面(NewsArticle),但正在扩展到其他内容类型。"
  • question: "哪些页面适合使用 Speakable schema?" answer: "目前 Google 优先考虑:(1) 新闻页面和电子报纸(NewsArticle schema)——这是 Speakable 的官方用例,(2) 概念定义/解释页面——AI 在回答"X 是什么?"时常朗读开头部分,(3) FAQ——简短的答案适合朗读,(4) 分步骤指南——AI 逐步朗读给用户操作。避免将 Speakable 用于长篇内容、数据表格或包含大量 URL 和特殊字符的段落。"
  • question: "应该标记哪些文本段落为 Speakable?" answer: "选择满足以下标准的段落:(1) 长度 20-70 个词——足够短,AI 朗读时不会失去上下文,(2) 可以独立理解——听众无需阅读前文即可理解,(3) 不包含表格、有序列表、URL、特殊符号——这些朗读起来很奇怪,(4) 是文章的关键信息——定义、结论或直接答案,(5) 完整的句子——不截断句子。通常是文章的第一段(导语)和结论段。"
  • question: "可以使用 CSS 选择器而不是为每个段落设置 @id 吗?" answer: "可以——Speakable schema 支持两种标记方式:(1) cssSelector:指定包含文本的 HTML 元素的 CSS class 或 ID(例如:'.article-summary'、'#main-definition'),(2) url:设置指向具有 id 的特定 HTML 元素的片段 URL(例如:'https://example.vn/bai-viet#dinh-nghia')。对于 Next.js/React:CSS 选择器更简单,只需为组件添加 className。对于静态 HTML:片段 URL 也能很好地工作。不必二选一——同时使用两者可以获得更高的覆盖率。"
  • question: "Speakable schema 对普通 SEO 排名有帮助吗?" answer: "Speakable 不直接影响传统 Google 搜索排名——它不是排名信号。然而,优化语音搜索间接改善了 AEO(Answer Engine Optimization):当 AI 选择您的内容朗读时,可以提高品牌认知度、增加来自语音驱动查询的流量,并建立作为可信 AI 来源的权威性。随着 AI 搜索越来越多地整合语音(iOS Siri + ChatGPT、Google Assistant + Gemini),Speakable schema 是一项长期投资。" howToSteps:
  • name: "确定适合朗读的文本段落" text: "重新阅读文章并标记 2-4 个满足所有条件的段落:少于 70 个词、脱离上下文也能独立理解、不含表格或有特殊字符的列表、包含文章的关键信息(定义、结论、最重要的数据)。通常是开头段落和结论段落。对于新闻:导语段落(前 50 个词中包含 who/what/when/where/why)。"
  • name: "为选定的段落设置 CSS class 或 id" text: "在 React/Next.js 中:将 className='speakable' 添加到包含所选文本段落的 p 或 div 标签中。在纯 HTML 中:为每个段落添加 id='speakable-1'、id='speakable-2'。确保选择器或 id 在页面中是唯一的,且在部署后不会更改(更改选择器将使已被 Google 索引的 schema 失效)。"
  • name: "使用 cssSelector 编写 Speakable JSON-LD" text: "创建包含 @type SpeakableSpecification 和 cssSelector(所选段落的 CSS 选择器数组)的 JSON-LD。将 Speakable 放在 NewsArticle 或 WebPage schema 内部——而非独立 schema。放置在页面的 head 或 body 结束标签之前。"
  • name: "使用 Google 富媒体搜索结果测试工具进行测试" text: "访问 search.google.com/test/rich-results,输入页面 URL,运行测试。如果有效,Speakable 将显示在结果中。注意:Google 富媒体搜索结果测试工具会显示"Speakable",但不会预览音频——仅确认 schema 有效。目前没有专门的 Speakable 测试工具。"

当用户问 Google Assistant "今天股市怎么样?"或"当前银行利率是多少?",Assistant 需要决定数百个网页中哪个段落适合朗读。Speakable schema 是您告诉 AI 的信号:"就是这里——朗读这段。"

Speakable 在 AI 生态系统中的运作方式

用户通过语音提问
         ↓
Google Assistant / Siri / Alexa 搜索
         ↓
优先选择具有有效 Speakable schema 的页面
         ↓
朗读标记为 speakable 的段落(20-70 个词)
         ↓
以语音回答用户 + 显示来源页面

没有 Speakable——AI 仍然可以找到您的页面,但必须自行分析文本,通常会选择准确度较低的段落。

NewsArticle 中的 JSON-LD Speakable

{
  "@context": "https://schema.org",
  "@type": "NewsArticle",
  "@id": "https://example.vn/vi/tin-tuc/lai-suat-ngan-hang-thang-8-2026",
  "headline": "Lãi suất ngân hàng tháng 8/2026: Vietcombank và BIDV điều chỉnh xuống 4.5%",
  "description": "Từ ngày 10/8/2026, Vietcombank và BIDV đồng loạt giảm lãi suất tiết kiệm kỳ hạn 12 tháng xuống 4.5%/năm, mức thấp nhất trong 3 năm qua.",
  "datePublished": "2026-08-11T08:00:00+07:00",
  "dateModified": "2026-08-11T10:30:00+07:00",
  "author": {
    "@type": "Person",
    "name": "Nguyễn Minh Tuấn"
  },
  "publisher": {
    "@type": "Organization",
    "name": "Tin Tức Tài Chính VN",
    "url": "https://example.vn",
    "logo": {
      "@type": "ImageObject",
      "url": "https://example.vn/images/logo.png",
      "width": 600,
      "height": 60
    }
  },
  "image": "https://example.vn/images/lai-suat-8-2026.jpg",
  "speakable": {
    "@type": "SpeakableSpecification",
    "cssSelector": [".article-lead", ".article-summary", ".article-conclusion"]
  },
  "articleBody": "..."
}

在 React/Next.js 中使用 cssSelector 的 Speakable

// components/news/ArticleContent.tsx
interface ArticleContentProps {
  lead: string;
  body: string;
  conclusion: string;
}

export function ArticleContent({ lead, body, conclusion }: ArticleContentProps) {
  return (
    <article>
      {/* 此段落标记为 speakable — 适合朗读 */}
      <p className="article-lead text-lg font-medium leading-relaxed">
        {lead}
      </p>

      {/* 主要内容 — 不 speakable */}
      <div className="article-body prose">
        {body}
      </div>

      {/* 结论 — 适合朗读 */}
      <p className="article-conclusion text-base border-l-4 border-orange-500 pl-4">
        {conclusion}
      </p>
    </article>
  );
}

// app/[lang]/tin-tuc/[slug]/page.tsx
export default async function NewsPage({ params }) {
  const article = await getArticle(params.slug);

  const jsonLd = {
    "@context": "https://schema.org",
    "@type": "NewsArticle",
    headline: article.title,
    datePublished: article.publishedAt,
    author: { "@type": "Person", name: article.author },
    publisher: {
      "@type": "Organization",
      name: "Tin Tức VN",
      url: "https://example.vn",
      logo: { "@type": "ImageObject", url: "https://example.vn/logo.png" },
    },
    speakable: {
      "@type": "SpeakableSpecification",
      cssSelector: [".article-lead", ".article-conclusion"],
    },
  };

  return (
    <>
      <script
        type="application/ld+json"
        dangerouslySetInnerHTML={{
          __html: JSON.stringify(jsonLd).replace(/</g, "\\u003c"),
        }}
      />
      <ArticleContent
        lead={article.lead}
        body={article.body}
        conclusion={article.conclusion}
      />
    </>
  );
}

使用片段 URL 的 Speakable(不使用 React)

{
  "@context": "https://schema.org",
  "@type": "WebPage",
  "name": "Lãi suất ngân hàng 2026",
  "speakable": {
    "@type": "SpeakableSpecification",
    "url": [
      "https://example.vn/vi/tin-tuc/lai-suat#tom-tat",
      "https://example.vn/vi/tin-tuc/lai-suat#ket-luan"
    ]
  }
}

对应的 HTML:

<p id="tom-tat">
  Từ ngày 10/8/2026, Vietcombank và BIDV giảm lãi suất tiết kiệm 12 tháng
  xuống 4.5%/năm — mức thấp nhất kể từ 2023.
</p>

<!-- ... nội dung bài ... -->

<p id="ket-luan">
  Với xu hướng giảm lãi suất hiện tại, người gửi tiền nên cân nhắc kỳ hạn
  dài hơn (24-36 tháng) để khóa lãi suất trước khi thị trường điều chỉnh tiếp.
</p>

各类内容及 Speakable 标记方式

内容类型应标记为 Speakable 的段落备注
新闻导语(前 50 个词)+ 结论Google 官方用例
定义文章第一段(定义)当 AI 回答"X 是什么?"时
指南摘要部分 + 每个简短步骤每步少于 30 个词
FAQ每个问题的答案已有 FAQPage schema——Speakable 作为补充
报价/定价价格摘要句 + 条件不标记价格表格
产品页面核心优势描述句不是整段描述

Speakable schema 检查清单

  • 选择 2-4 个合适的段落:20-70 个词,可独立理解,无表格/URL
  • 为选定段落添加 CSS class(.speakable.article-lead
  • 在 NewsArticle 或 WebPage 中编写包含 cssSelector 的 SpeakableSpecification
  • 使用 Google 富媒体搜索结果测试工具测试——确认"Speakable"出现
  • Google 索引后不要更改 CSS class
  • 当文章内容更新时,同步更新 speakable 段落

Speakable schema 目前是 structured data 中使用最少的信号——很少有开发者实施——因此现在实施可以在语音搜索和 AI 助手查询中创造明显的竞争优势。

位于胡志明市的答案引擎优化(AEO)机构 — 帮助企业网站被 AI 引用。 关于 AEO Saigon →

想让您的网站也这样被 AI 引用吗?

免费审计