feat(seo): BreadcrumbList markup + repair stale Learn links - #60
Conversation
Adds BreadcrumbList JSON-LD to guides (`/:slug`) and tool pages. This is the enhancement Search Console reports on, and it lets Google show the breadcrumb trail in results instead of a bare URL. Article JSON-LD was already present; BreadcrumbList was the missing piece. Google requires the markup to mirror the breadcrumb the user actually sees, so both are built from the same values as the visible <nav> — Learn → cluster → article. On tool pages it is emitted only from the standard layout: the fullscreen layout renders no breadcrumb, so claiming one there would be a false structured-data claim. Both registered tools are currently fullscreen, so that markup is inert until a non-fullscreen tool ships. Also fixes stale links the /learn restructure left behind. The article breadcrumb pointed "Learn" at `/` (the marketing landing page) rather than the Learn directory, cluster filters pointed at `/?cluster=<id>` — a URL that no longer filters anything — and the "All topics" sidebar link and ChatSidebar had the same problem. All now target /learn and /learn?view=grid&cluster=<id>. The breadcrumb markup depends on these being right. Verified against a temporary published article: the emitted BreadcrumbList has the expected three levels and matches the rendered links exactly. Article removed afterwards; the database is back to zero published articles. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Plus Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Why
Search Console's Enhancements section only reports structured-data types that produce rich results. The site emits
WebSite,OrganizationandArticleJSON-LD — none of which appear there.BreadcrumbListdoes, and it lets Google show the breadcrumb trail in results instead of a bare URL.What
BreadcrumbList on guides (
/:slug) —Learn → cluster → article, built from the same values as the visible<nav>so the markup and the rendered trail can't drift.BreadcrumbList on tool pages —
Home → Tools → <tool>, emitted only from the standard layout. The fullscreen layout renders no breadcrumb, so claiming one there would be a false structured-data claim. Both registered tools are currentlyfullscreen: true, so this is inert until a non-fullscreen tool ships.Bug fix: stale links from the /learn restructure
The breadcrumb couldn't be marked up correctly without fixing these first — they were pointing at URLs that no longer do what they say:
/(landing page)/learn/?cluster=<id>/learn?view=grid&cluster=<id>isPartOf/?cluster=<id>/learn?view=grid&cluster=<id>//learn/?cluster=/learn?view=grid&cluster=/?cluster=<id>silently filtered nothing — the landing page ignores that param.Verification
Created a temporary published article, confirmed the emitted JSON-LD:
{"@type":"BreadcrumbList","itemListElement":[ {"position":1,"name":"Learn","item":"https://flemoji.com/learn"}, {"position":2,"name":"Music Royalties for Independent Artists","item":"https://flemoji.com/learn?view=grid&cluster=…"}, {"position":3,"name":"TEMP breadcrumb verification","item":"https://flemoji.com/temp-breadcrumb-verification"} ]}Rendered links match exactly. Temp article deleted; database back to zero published articles.
tsc0 errors · lint 0 errors · jest 337/337.Note
This produces no visible Search Console enhancement until guides are published — there are currently zero.
🤖 Generated with Claude Code