AEO Saigon
Hướng dẫn

BreadcrumbList Schema: Giúp AI và Google Hiểu Cấu Trúc Website của Bạn

Mục lục bài viết

Khi AI đọc website của bạn, một trong những thứ nó đang tìm là cấu trúc phân cấp. Trang nào là tổng quan? Trang nào là chi tiết? Trang nào thuộc chủ đề gì? BreadcrumbList schema là cách bạn trả lời những câu hỏi này một cách rõ ràng và có cấu trúc.

BreadcrumbList là danh sách các "nút" dẫn đường từ trang chủ đến trang hiện tại. Nó làm hai việc:

1. Trên Google SERP:

Thay vì URL raw, người dùng thấy chuỗi phân cấp đẹp: example.vn › blog › huong-dan › breadcrumb-schema → CTR tăng.

2. Với AI search:

AI hiểu: bài này thuộc chủ đề "Hướng dẫn", là con của "Blog" — khi trả lời câu hỏi về structured data, đây là nguồn phù hợp để trích dẫn.

JSON-LD BreadcrumbList đầy đủ

{
  "@context": "https://schema.org",
  "@type": "BreadcrumbList",
  "itemListElement": [
    {
      "@type": "ListItem",
      "position": 1,
      "name": "Trang chủ",
      "item": "https://example.vn/vi"
    },
    {
      "@type": "ListItem",
      "position": 2,
      "name": "Blog",
      "item": "https://example.vn/vi/blog"
    },
    {
      "@type": "ListItem",
      "position": 3,
      "name": "Hướng dẫn",
      "item": "https://example.vn/vi/blog/huong-dan"
    },
    {
      "@type": "ListItem",
      "position": 4,
      "name": "BreadcrumbList Schema: Giúp AI và Google Hiểu Cấu Trúc Website"
    }
  ]
}

Lưu ý item cuối không có trường item (URL) — đây là trang hiện tại, không cần link.

Triển khai trong Next.js App Router

// lib/schema/breadcrumb.ts
const siteUrl = process.env.NEXT_PUBLIC_SITE_URL!;

interface BreadcrumbItem {
  name: string;
  href?: string;
}

export function generateBreadcrumbSchema(
  items: BreadcrumbItem[],
  locale: string
): object {
  return {
    "@context": "https://schema.org",
    "@type": "BreadcrumbList",
    itemListElement: items.map((item, index) => ({
      "@type": "ListItem",
      position: index + 1,
      name: item.name,
      ...(item.href && {
        item: `${siteUrl}/${locale}${item.href}`,
      }),
    })),
  };
}

Trang dịch vụ

{
  "@context": "https://schema.org",
  "@type": "BreadcrumbList",
  "itemListElement": [
    { "@type": "ListItem", "position": 1, "name": "Trang chủ", "item": "https://example.vn/vi" },
    { "@type": "ListItem", "position": 2, "name": "Dịch vụ", "item": "https://example.vn/vi/dich-vu" },
    { "@type": "ListItem", "position": 3, "name": "AEO cho E-commerce" }
  ]
}

Trang sản phẩm (E-commerce)

{
  "@context": "https://schema.org",
  "@type": "BreadcrumbList",
  "itemListElement": [
    { "@type": "ListItem", "position": 1, "name": "Trang chủ", "item": "https://shop.vn" },
    { "@type": "ListItem", "position": 2, "name": "Thời trang", "item": "https://shop.vn/thoi-trang" },
    { "@type": "ListItem", "position": 3, "name": "Áo nam", "item": "https://shop.vn/thoi-trang/ao-nam" },
    { "@type": "ListItem", "position": 4, "name": "Áo polo cotton" }
  ]
}

SitelinksSearchBox schema

SitelinksSearchBox cho phép Google hiển thị ô tìm kiếm inline khi người dùng tìm kiếm thương hiệu của bạn:

{
  "@context": "https://schema.org",
  "@type": "WebSite",
  "@id": "https://example.vn/#website",
  "url": "https://example.vn",
  "name": "AEO Saigon",
  "potentialAction": {
    "@type": "SearchAction",
    "target": {
      "@type": "EntryPoint",
      "urlTemplate": "https://example.vn/tim-kiem?q={search_term_string}"
    },
    "query-input": "required name=search_term_string"
  }
}

Điều kiện để Google kích hoạt Sitelinks Search:

  • Website có thanh tìm kiếm hoạt động tốt với kết quả liên quan
  • URL search hoạt động đúng với query parameter
  • Google đã index đủ nhiều trang (thường cần domain authority tương đối)

Lỗi BreadcrumbList phổ biến

LỗiMô tảCách fix
URL không khớp cấu trúcBreadcrumb khai báo path khác URL thựcĐồng bộ breadcrumb items với URL slug
Dùng relative URL/blog thay vì https://example.vn/blogLuôn dùng absolute URL trong item
Item cuối có URLTrang hiện tại không cần URLBỏ trường item cho position cuối
Position không liên tục1, 2, 4 (bỏ qua 3)Đảm bảo position tăng liên tục từ 1
Thiếu item đầu tiênBreadcrumb bắt đầu từ category, bỏ Trang chủLuôn có Trang chủ là item đầu tiên
i18n bỏ quên localeURL trong schema không có /vi/Thêm locale vào đầu mỗi URL item

BreadcrumbList schema ảnh hưởng đến AEO theo cách ít ai nghĩ đến:

  • Topical clustering: AI nhận ra /blog/huong-dan/* là cluster "hướng dẫn kỹ thuật", khác với /blog/kien-thuc/* là cluster "kiến thức lý thuyết". Khi trả lời câu hỏi thực hành, AI ưu tiên /huong-dan/.
  • Authority flow: AI hiểu rằng trang category (/blog/huong-dan) là "parent authority" của các bài con. Nếu category page có schema tốt và nhiều bài con, category page nhận authority cao hơn từ AI.
  • Citation precision: Thay vì trích dẫn "trang web ABC", AI có thể trích dẫn "trong phần Hướng dẫn của ABC" — cụ thể hơn, đáng tin hơn.

BreadcrumbList là một trong những schema dễ triển khai nhất nhưng hay bị bỏ qua. Triển khai đúng trong một buổi, hưởng lợi lâu dài từ cả SEO (rich results) lẫn AEO (AI context).

Câu hỏi thường gặp

BreadcrumbList schema có tác động đến AEO không?

Có — theo hai cách. Thứ nhất, BreadcrumbList giúp AI hiểu phân cấp nội dung: trang /blog/huong-dan/aeo-la-gi là con của /blog/huong-dan, là con của /blog. AI dùng tín hiệu này để xác định parent topic và context khi trích dẫn. Thứ hai, Google hiển thị breadcrumb trong search results thay vì URL xấu — người dùng thấy đường dẫn rõ ràng, CTR tăng. Trang có CTR cao giúp AI nhận tín hiệu relevance mạnh hơn.

Phải khai báo BreadcrumbList ở đâu — trong page hay layout?

Khai báo trong từng page, không phải layout. Mỗi trang có một breadcrumb trail riêng (ví dụ: blog post có 3-4 levels; homepage chỉ có 1 level). Nếu khai báo trong layout, bạn không thể customize per-page. Trong Next.js App Router: tạo hàm generateBreadcrumbSchema() trong mỗi page.tsx, truyền vào generateMetadata hoặc render trực tiếp trong script JSON-LD.

Bao nhiêu levels breadcrumb là đủ?

3-4 levels là lý tưởng. Ví dụ: Trang chủ → Dịch vụ → AEO cho E-commerce → Case Study. Quá ít (1-2 levels) không cung cấp đủ context phân cấp. Quá nhiều (5+ levels) làm URL và structure phức tạp không cần thiết. Nếu site structure flat (chỉ có 2 levels) — vẫn nên khai báo, Google sẽ hiển thị domain và category.

SitelinksSearchBox là gì và có nên dùng không?

SitelinksSearchBox là schema cho phép Google hiển thị ô tìm kiếm ngay trong kết quả tìm kiếm branded. Người dùng có thể tìm kiếm nội dung trong site ngay từ Google SERP. Nên dùng nếu site có thanh tìm kiếm hoạt động tốt. Không bắt buộc — Google có thể tự thêm sitelinks search mà không cần schema.

BreadcrumbList schema và URL structure có cần phải match không?

Có — phải match hoàn toàn. Nếu URL là /blog/huong-dan/aeo-la-gi thì BreadcrumbList phải phản ánh đúng cấu trúc: item 1 = /, item 2 = /blog, item 3 = /blog/huong-dan, item 4 = /blog/huong-dan/aeo-la-gi. Không được khai báo breadcrumb khác với URL thực. Google kiểm tra sự nhất quán này và sẽ ignore nếu có mâu thuẫn.

AEO Saigon

Agency Answer Engine Optimization tại TP. Hồ Chí Minh — giúp website doanh nghiệp được AI trích dẫn. Về AEO Saigon →

Muốn website của bạn được AI trích dẫn như vậy?

Audit miễn phí