Skip to content

[seo-metadata] unique titles, canonicals & schema on compare/home/legal pages - #58

Merged
Smetools merged 1 commit into
mainfrom
hassan-seo-metadata
Jun 14, 2026
Merged

[seo-metadata] unique titles, canonicals & schema on compare/home/legal pages#58
Smetools merged 1 commit into
mainfrom
hassan-seo-metadata

Conversation

@Smetools

Copy link
Copy Markdown
Collaborator

What

Closes the metadata gaps the 2026-06-14 SEO audit found (overall 67.4/100). Everything outside the blog tier (97.9) was sharing the root layout's default <title>, missing rel=canonical, and carrying no JSON-LD.

Root cause: /compare/* and the 5 legal pages are 'use client' components (can't export const metadata), and the homepage page.tsx had no metadata export — so all fell back to layout defaults.

Changes (21 files, additive — no UI/behavior change)

Surface Fix
/compare/* ×5 New server layout.tsx per route → unique title + description + self-canonical (lib/compare-seo.ts); FAQPage + SoftwareApplication + BreadcrumbList JSON-LD (components/compare/compare-json-ld.tsx)
Homepage Canonical + OpenGraph; Organization / WebSite / SoftwareApplication JSON-LD
Legal/utility (policy, terms, contact-us, book, careers) Server layout.tsx → unique title + description + canonical
/for/odoo-partners Add canonical to existing metadata
Root layout.tsx metadataBase + default OpenGraph siteName
/blog index Blog (BlogPosting list) JSON-LD

/a /b /c /d already canonical→home on main (#57) — left untouched.

Verification

  • tsc --noEmit0 errors
  • next buildgreen, all routes compile (compare pages now ship the JSON-LD)
  • Built static HTML confirms the fix renders:
    • /compare/knowcap-vs-otter → title Knowcap vs Otter.ai — AI Meeting Notes That Take Action, canonical present, FAQPage/SoftwareApplication/BreadcrumbList schema
    • / → canonical present, Organization + WebSite + SoftwareApplication schema
    • /policy → title Privacy Policy — Knowcap, canonical present

Projected audit lift: ~67 → ~85 once deployed.

🤖 Generated with Claude Code

2026-06-14 SEO audit (overall 67.4/100) found everything outside the blog
tier sharing the root layout's default <title>, missing rel=canonical, and
carrying no JSON-LD. Root cause: the /compare/* and legal pages are client
components (can't export metadata) and the homepage had no metadata export.

Fixes:
- /compare/* (otter, read-ai, fireflies, fellow, granola): add a server
  layout.tsx per route with a unique title, description, and self-referential
  canonical (lib/compare-seo.ts), plus FAQPage + SoftwareApplication +
  BreadcrumbList JSON-LD (components/compare/compare-json-ld.tsx).
- Homepage: add canonical + OpenGraph and Organization / WebSite /
  SoftwareApplication JSON-LD.
- Legal/utility (policy, terms, contact-us, book, careers): server layout.tsx
  with unique title + description + canonical.
- /for/odoo-partners: add canonical to existing metadata.
- Root layout: add metadataBase + default OpenGraph siteName.
- Blog index: add Blog (BlogPosting list) JSON-LD.

(/a /b /c /d already canonical→home on main via #57, left untouched.)

Verified: tsc --noEmit 0 errors; next build green; built HTML confirms unique
title + canonical + schema on /compare/knowcap-vs-otter, home, and /policy.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@vercel

vercel Bot commented Jun 14, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
knowcap-landing Building Building Preview, Comment Jun 14, 2026 12:58pm

Request Review

@coderabbitai

coderabbitai Bot commented Jun 14, 2026

Copy link
Copy Markdown

Warning

Review limit reached

@Smetools, we couldn't start this review because you've reached your PR review rate limit.

More reviews will be available in 31 minutes and 58 seconds. Learn how PR review limits work.

Your organization has used up its prepaid credits, and credit purchases are no longer available. Enable the review add-on in the billing tab to keep reviews running — you're only billed for reviews past your plan's rate limits ($0.25/file).

⌛ How to resolve this issue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans include higher PR review limits than trial, open-source, and free plans. In all cases, reviews become available again over time. During sustained high-volume PR review activity, CodeRabbit may temporarily slow when the next review becomes available.

Please see our Fair Usage Limits Policy for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 50bea7dc-7309-4ef7-8b93-35fd2839758e

📥 Commits

Reviewing files that changed from the base of the PR and between a9e7339 and 83b4972.

📒 Files selected for processing (21)
  • app/app/blog/page.tsx
  • app/app/book/layout.tsx
  • app/app/careers/layout.tsx
  • app/app/compare/knowcap-vs-fellow/layout.tsx
  • app/app/compare/knowcap-vs-fellow/page.tsx
  • app/app/compare/knowcap-vs-fireflies/layout.tsx
  • app/app/compare/knowcap-vs-fireflies/page.tsx
  • app/app/compare/knowcap-vs-granola/layout.tsx
  • app/app/compare/knowcap-vs-granola/page.tsx
  • app/app/compare/knowcap-vs-otter/layout.tsx
  • app/app/compare/knowcap-vs-otter/page.tsx
  • app/app/compare/knowcap-vs-read-ai/layout.tsx
  • app/app/compare/knowcap-vs-read-ai/page.tsx
  • app/app/contact-us/layout.tsx
  • app/app/for/odoo-partners/page.tsx
  • app/app/layout.tsx
  • app/app/page.tsx
  • app/app/policy/layout.tsx
  • app/app/terms/layout.tsx
  • app/components/compare/compare-json-ld.tsx
  • app/lib/compare-seo.ts
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch hassan-seo-metadata

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@Smetools
Smetools merged commit 908aae9 into main Jun 14, 2026
2 of 3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant