feat(seo): add semantic breadcrumbs and BreadcrumbList structured data
还没有人认领这个 Issue。
评估
- 难度
- 4/5
- 预计耗时
- 3-5 天
- 新手友好度
- 48/100
- Issue 类型
- 功能
- 描述清晰度
- 基本清楚
- 活跃度
- 冷清
- 技术栈
- typescript
- 领域
- documentation, web-dev
调研方向
从 src/components/Breadcrumbs.tsx 和 Google Breadcrumb structured-data guidance 开始,然后跟踪 issue 中列出的 library、docs、blog、charts 和 partner 代表性路由。完成标准是:共享的 Breadcrumb 数据驱动可访问的可见导航和 SSR 可见的 JSON-LD,并具备针对顺序、URL、转义和排除路由的列出验证与自动化覆盖。
由索引模型根据 Issue 内容生成。
描述
Context
TanStack has a deep, meaningful content hierarchy, especially across library landing pages, documentation, blog posts, chart examples, and partner pages. These pages currently do not emit BreadcrumbList JSON-LD.
The shared src/components/Breadcrumbs.tsx component is currently a section label plus an on-page table-of-contents control. It renders div elements rather than a complete semantic breadcrumb trail, so it cannot serve as the source of truth for either accessible navigation or structured data.
Google documentation: https://developers.google.com/search/docs/appearance/structured-data/breadcrumb
Proposed scope
- Define a shared breadcrumb item model with a label and optional absolute or site-relative URL.
- Render visible breadcrumbs as nav with aria-label="Breadcrumb".
- Generate an SSR-visible BreadcrumbList JSON-LD object from the same breadcrumb items.
- Use representative user paths rather than mechanically mirroring URL segments.
- Cover at least:
- Library landing pages: Libraries → Query
- Docs: Libraries → Query → React Docs → Guides → Query Keys
- Blog posts: Blog → Post title
- Charts catalog examples: Charts → Catalog → Example title
- Partner detail pages: Partners → Partner name
- Do not emit breadcrumb markup on the homepage, errors, or non-indexable pages.
Acceptance criteria
- Visible breadcrumbs and JSON-LD are derived from one shared data model.
- BreadcrumbList is present in the raw SSR response, not added only after hydration.
- Every BreadcrumbList contains at least two ListItem entries with contiguous positions.
- Linked breadcrumb items use absolute canonical HTTPS URLs in JSON-LD.
- The current page name matches the visible page heading/title.
- Representative routes pass Google Rich Results Test validation.
- Automated tests cover ordering, URL generation, escaping, and routes that should not emit breadcrumbs.
Notes
The current UI component can retain its on-this-page control, but that control should be separate from the hierarchical breadcrumb data.
- 主要语言
- TypeScript
- 星标
- 1.1k
- 派生
- 401
- 平均合并
- 16 小时 8 分钟
- 30 天内合并 PR
- 58
贡献指南
这个仓库没有索引到贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
TanStack/tanstack.com 的其他 Issue
-
难度 1/5 1 小时以内 新手友好度 90/100
TanStack/tanstack.com#1293 ·
-
source-audit
难度 1/5 1 小时以内 新手友好度 84/100
TanStack/tanstack.com#1195 ·
-
source-audit
难度 2/5 1-3 小时 新手友好度 68/100
TanStack/tanstack.com#1194 · 2 条评论 ·
-
source-audit
难度 2/5 1-3 小时 新手友好度 72/100
TanStack/tanstack.com#1177 · 1 条评论 ·
-
难度 2/5 1-3 小时 新手友好度 64/100
TanStack/tanstack.com#1059 ·
查看 TanStack/tanstack.com 的全部 Issue
相似的 Issue
-
VerificationGate: ATTRIBUTION quote guard never matches a normal quotation (\b around the quote) 未关闭
难度 2/5 1-3 小时 新手友好度 75/100
danielmiessler/LifeOS#2234 ·
-
T: Bug
难度 2/5 1-3 小时 新手友好度 75/100
-
难度 2/5 1-3 小时 新手友好度 65/100
-
难度 1/5 1 小时以内 新手友好度 85/100
-
Mend: dependency security vulnerability untriaged
难度 2/5 1-3 小时 新手友好度 70/100