Skip to content

Fix residual blog metadata from Ahrefs audit#7894

Open
lawrencecchen wants to merge 12 commits into
feat-seo-site-auditfrom
feat-seo-blog-audit
Open

Fix residual blog metadata from Ahrefs audit#7894
lawrencecchen wants to merge 12 commits into
feat-seo-site-auditfrom
feat-seo-blog-audit

Conversation

@lawrencecchen

@lawrencecchen lawrencecchen commented Jul 11, 2026

Copy link
Copy Markdown
Contributor

Stacked on #7888.

Selects complete, route-specific metadata for 11 blog families, /nightly, and /guides across published locales. HTML, Open Graph, Twitter, and article schema use the same selected copy. English-only cmux-omo and gpl URLs now canonicalize instead of publishing fallback duplicates.

Tests: bun test (591 passed, 91 skipped), bun run typecheck, changed-file ESLint.


View with Codesmith Autofix with Codesmith
Need help on this PR? Tag /codesmith with what you need. Autofix is disabled.


Note

Low Risk
Marketing-site SEO, routing, and i18n metadata only; no auth, payments, or app runtime behavior.

Overview
Routes 11 audited blog posts plus /nightly and /guides through shared helpers (blogPostSeoCopy, landingPageSeoCopy) so HTML metadata, Open Graph, Twitter, and article JSON-LD use the same plain-text, route-specific titles and descriptions (title: { absolute: ... } on blog pages).

English-only posts (cmux-claude-teams, cmux-omo, gpl) are registered with englishFallbackContentLocales: middleware 301s prefixed locale URLs to the canonical path, alternates/sitemap/agent lists only emit en, and the blog index/pager filter them out for other locales via blogPostsForLocale.

BlogSchema gains optional seoKey to align JSON-LD with audited copy. Locale fallback routing is generalized per-route (fallbackContentRoutes + per-route locales). Tests and small i18n string tweaks support the audit rules (plain-text candidates, punctuation checks).

Reviewed by Cursor Bugbot for commit e4f99ab. Bugbot is set up for automated code reviews on this repo. Configure here.


Summary by cubic

Fixes residual blog metadata from the SEO audit. Routes 11 audited posts and /nightly + /guides through plain‑text, canonical SEO; three English‑only posts are canonicalized and hidden from localized lists.

  • Bug Fixes
    • Route audited blog pages through blogPostSeoCopy; set title: { absolute: ... } and pass seoKey to BlogSchema so JSON‑LD uses the same audited copy.
    • Use landingPageSeoCopy for /nightly and /guides with complete prose and site context.
    • Treat /blog/cmux-claude-teams, /blog/cmux-omo, and /blog/gpl as English‑only: per‑route locale lists in locale-availability, buildAlternates/Link headers and sitemap emit only en, and middleware picks a preferred available locale and 301s non‑canonical locale paths.
    • Hide English‑only posts from non‑English pages: blog index and pager use blogPostsForLocale; agent‑page lists and sitemap match.
    • Enforce plain‑text metadata (reject rich messages and list lead‑ins); i18n copy tweaks in en, bs, th, tr; expanded tests for audited routes, alternates, discovery, and canonicalization; stabilized navigation mocks.

Written for commit e4f99ab. Summary will update on new commits.

Review in cubic

@vercel

vercel Bot commented Jul 11, 2026

Copy link
Copy Markdown

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

Project Deployment Actions Updated (UTC)
cmux Building Building Preview, Comment Jul 11, 2026 5:49pm
cmux-staging Building Building Preview, Comment Jul 11, 2026 5:49pm

@coderabbitai

coderabbitai Bot commented Jul 11, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro

Run ID: 503271f5-864e-420f-a0e4-1dfb57c3b81a

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat-seo-blog-audit

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.

@cursor cursor Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes using default effort and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 210b427. Configure here.

Comment thread web/app/[locale]/(landing)/blog/cmux-omo/page.tsx
@greptile-apps

greptile-apps Bot commented Jul 11, 2026

Copy link
Copy Markdown
Contributor

Greptile Summary

This PR aligns audited blog and landing-page metadata across localized routes. The main changes are:

  • Adds shared SEO copy selection for 11 blog families, /nightly, and /guides.
  • Uses the selected copy for HTML, Open Graph, Twitter, and article schema metadata.
  • Canonicalizes English-only blog routes and limits their localized discovery.
  • Filters the blog index and pager by each post's available locales.
  • Expands tests for metadata, redirects, alternates, sitemap entries, and agent-readable variants.

Confidence Score: 5/5

This looks safe to merge.

  • No blocking issues found in the changed code.

Important Files Changed

Filename Overview
web/i18n/audited-seo.ts Adds shared, typed metadata selection for audited blog posts and landing pages.
web/i18n/locale-availability.ts Adds route-specific locale sets for fallback and English-only content.
web/proxy.ts Uses route-specific locale availability for negotiation, redirects, rewrites, and alternate links.
web/app/[locale]/components/blog-posts.ts Adds locale-aware blog post filtering for the index and pager.
web/app/sitemap.ts Limits English-only blog posts to canonical English sitemap entries.
web/app/lib/agent-page-paths.ts Aligns agent-readable blog variants with route locale availability.

Reviews (12): Last reviewed commit: "Hide untranslated Claude Teams blog rout..." | Re-trigger Greptile

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 210b427261

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread web/i18n/locale-availability.ts

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 7018acc2ca

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread web/i18n/locale-availability.ts
@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.
To continue using code reviews, add credits to your account and enable them for code reviews in your settings.

@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.
To continue using code reviews, add credits to your account and enable them for code reviews in your settings.

@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.
To continue using code reviews, add credits to your account and enable them for code reviews in your settings.

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