docs: add canonical links and Organization JSON-LD to both sites - #509
docs: add canonical links and Organization JSON-LD to both sites#509vihar wants to merge 1 commit into
Conversation
docs.plane.so had no <link rel="canonical"> and neither site published structured data, which the is-agentic scan flagged (metadata completeness, JSON-LD, Organization schema). Add `packages/theme/src/seo.ts`, exported as `@plane/docs-theme/seo`, with: - `siteJsonLd(site)` — one `application/ld+json` head entry carrying a shared Plane Organization (logo, GitHub/X profiles, support and sales contact points) plus a WebSite node for the site, so both sites publish the same identity - `canonicalLink(origin, pageData)` — per-page canonical mirroring cleanUrls, skipped when frontmatter already sets one Wire both into `apps/docs` (new `transformPageData`) and `apps/developer-docs` (replacing its inline canonical logic). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CsPSwTnpsEb5c5Ud2CLrL8
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
Warning Review limit reached
Next review available in: 49 minutes Limit details: You’ve used the included review currently available. You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository. How can I continue?Wait for the limit to reset, then comment An organization admin can change what happens after included review limits in Billing. How do review limits work?CodeRabbit enforces per-developer PR review limits within each organization. For paid Pro and Pro+ reviews, CodeRabbit uses a developer's included PR review attempts over the past 7 days to set the current hourly allowance. At typical activity levels, the full plan allowance applies. Higher sustained activity can lower the allowance until earlier attempts leave the 7-day window. Please refer docs for additional details. Review details⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (5)
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 |
Summary
Item 2 from the
is-agenticscan of docs.plane.so (follow-up to #508, independent of it).docs.plane.so had no
<link rel="canonical">(developers.plane.so already injected one per page), and neither site published structured data. The scan flagged three findings for this: Metadata completeness (partial), JSON-LD structured data (fail), Organization schema completeness (fail).Change. New
packages/theme/src/seo.ts, exported as@plane/docs-theme/seo(build-time only — nothing ships to the browser):siteJsonLd(site)→ one<script type="application/ld+json">head entry with a shared Organization for Plane (name, url, logo,sameAsGitHub + X,contactPointfor support@ and sales@) plus a WebSite node for the specific site. Keeping the Organization in the theme means both sites publish the same identity and it can't drift.canonicalLink(origin, pageData)→ per-page canonical mirroringcleanUrls(dir/page.md→/dir/page,index.md→/), skipped when frontmatter already sets one.apps/docsgains atransformPageDatafor the canonical;apps/developer-docsswaps its inline canonical logic for the helper. Both addsiteJsonLd(...)tohead.No postal address is included — say if one should be published.
Verification
pnpm check:types/check:formatpass; both apps build.dist/s: exactly one canonical and one JSON-LD per page; root canonical ishttps://docs.plane.so/, nested pages have no trailing slash, and/self-hosting/manage/upgrade-from-0.13.2-0.14.0is correct. The JSON-LD parses (Organization Plane+WebSite …, 2 contact points).Checklist
/llms.txtand/sitemap.xmlopenapi.jsonon developers.plane.so and link it fromllms.txtnpx is-agenticon both hosts🤖 Generated with Claude Code
https://claude.ai/code/session_01CsPSwTnpsEb5c5Ud2CLrL8