seo(p0): H1 benchmark on products + FAQPage on compare + RSS discovery + rich SERP - #916
Merged
Merged
Conversation
…+ rich SERP
Three P0 SEO wins from post-shipping audit (2026-07-05):
1. products/[slug]/page.tsx — H1 now emits '{Provider} Benchmark'
instead of bare '{Provider}'. Matches the SEO title '{Provider}
Benchmark 2026' shipped in #908. Semantic mismatch was killing CTR
(only 1 click observed on 'sui benchmark' at pos 2). Small styled
'Benchmark' suffix preserves visual hierarchy.
2. compare/[slug]/page.tsx — FAQPage JSON-LD. Bing + Google render rich
FAQ dropdowns in SERP for pages emitting valid FAQPage. Every answer
is derived from the shared benchmarks (winner + metric + link to
methodology), so it re-uses data already in DOM — no editorial claim.
3. layout.tsx — RSS feed discovery + rich SERP directives:
- <link rel='alternate' type='application/rss+xml' href='/rss.xml'>
via Metadata.alternates.types so feed readers, Perplexity, Bing
News, Claude auto-discover the existing /rss.xml route.
- meta robots gains max-snippet:-1 + max-image-preview:large +
max-video-preview:-1 so SERP stops truncating our data-rich prose
and stops suppressing og:image on AI-scraped queries.
Skipped from the audit punch list (deferred to a separate PR):
- Cache-Control s-maxage / stale-while-revalidate on dynamic routes
- next/image migration for WebP/AVIF
- Preconnect hints for analytics.ahrefs.com
The 3 shipped here are the highest-signal / lowest-risk subset.Uh oh!
There was an error while loading. Please reload this page.
Flotapponnier added a commit
that referenced
this pull request
Jul 6, 2026
…+ rich SERP (#916) (#917) Three P0 SEO wins from post-shipping audit (2026-07-05): 1. products/[slug]/page.tsx — H1 now emits '{Provider} Benchmark' instead of bare '{Provider}'. Matches the SEO title '{Provider} Benchmark 2026' shipped in #908. Semantic mismatch was killing CTR (only 1 click observed on 'sui benchmark' at pos 2). Small styled 'Benchmark' suffix preserves visual hierarchy. 2. compare/[slug]/page.tsx — FAQPage JSON-LD. Bing + Google render rich FAQ dropdowns in SERP for pages emitting valid FAQPage. Every answer is derived from the shared benchmarks (winner + metric + link to methodology), so it re-uses data already in DOM — no editorial claim. 3. layout.tsx — RSS feed discovery + rich SERP directives: - <link rel='alternate' type='application/rss+xml' href='/rss.xml'> via Metadata.alternates.types so feed readers, Perplexity, Bing News, Claude auto-discover the existing /rss.xml route. - meta robots gains max-snippet:-1 + max-image-preview:large + max-video-preview:-1 so SERP stops truncating our data-rich prose and stops suppressing og:image on AI-scraped queries. Skipped from the audit punch list (deferred to a separate PR): - Cache-Control s-maxage / stale-while-revalidate on dynamic routes - next/image migration for WebP/AVIF - Preconnect hints for analytics.ahrefs.com The 3 shipped here are the highest-signal / lowest-risk subset. Co-authored-by: Florent Tapponnier <contact@mobula.io>
Flotapponnier added a commit
that referenced
this pull request
Jul 6, 2026
Next Metadata.alternates.types silently drops the RSS alternate in App Router — validated on prod after #916 shipped and the tag never rendered in HTML. Falling back to a direct <link> in the <head> JSX so feed readers + AI crawlers (Perplexity, Bing News, Claude) can auto-discover /rss.xml. Co-authored-by: Florent Tapponnier <contact@mobula.io>
Flotapponnier added a commit
that referenced
this pull request
Jul 6, 2026
Next Metadata.alternates.types silently drops the RSS alternate in App Router — validated on prod after #916 shipped and the tag never rendered in HTML. Falling back to a direct <link> in the <head> JSX so feed readers + AI crawlers (Perplexity, Bing News, Claude) can auto-discover /rss.xml. Co-authored-by: Florent Tapponnier <contact@mobula.io>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for freeto join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
3 P0 SEO fixes from post-shipping audit.
Changes
{Provider} Benchmark(matches title{Provider} Benchmark 2026). Semantic mismatch was killing CTR (only 1 click on 'sui benchmark' pos 2).<link rel=alternate>+max-snippet=-1 max-image-preview=largerobots directives so SERP stops truncating our data-rich prose.Skipped from audit (separate PR)
s-maxage=300on dynamic routesTest plan
<link rel="alternate" type="application/rss+xml"X-Robots-Tag: max-snippet:-1, max-image-preview:large(via meta or header)