Skip to content

seo: finality content cluster on l1-finality#84

Merged
Flotapponnier merged 1 commit into
mainfrom
feat/seo-finality-cluster
May 22, 2026
Merged

seo: finality content cluster on l1-finality#84
Flotapponnier merged 1 commit into
mainfrom
feat/seo-finality-cluster

Conversation

@Flotapponnier

Copy link
Copy Markdown
Collaborator

Résumé

Enrich /benchmarks/l1-finality to capture the family of 'X chain finality time' queries currently leaking impressions without converting.

GSC data: page sits at 144 impressions/wk but 0.69% CTR. Ranks #3 on the dominant query ('ethereum l1 time to finality') but the SERP snippet and the page layout don't promise specific numbers per chain.

Changes

Schema + type plumbing

  • New optional per_chain_explainer YAML field: array of {slug, h2, body}
  • Body strings go through the existing template resolver so {{p50:slug}} etc. resolve to live Prom data
  • Plumbed through spec-schema.ts -> Benchmark type -> spec.ts loader -> bench-template.ts renderer
  • Backward-compatible: optional field, other benches unchanged

Component update (ChainHeadingsSummary)

  • Headings upgraded from h3 to h2 (stronger SEO signal)
  • Each chain section gets id={slug} so URLs like /benchmarks/l1-finality#ethereum land at the exact section
  • When per_chain_explainer has an entry for the chain's slug, render its body as a second paragraph below the live p50 line

YAML content (l1-finality.yml)

  • 12 per_chain_explainer blocks (ethereum, solana, stellar, hedera, sui, ton, bnb, avalanche, tron, cardano, litecoin, monero), 70-90 words each
  • FAQ expanded from 6 to 12 entries (schema cap), adding:
    • 'What is blockchain finality?'
    • 'Probabilistic vs deterministic finality, what is the difference?'
    • Per-chain entries for SUI, TON, BNB, Cardano (previously missing)

Target queries (from GSC)

Query Current position Anchor target
ethereum l1 time to finality 3.2 #ethereum H2 + FAQ
stellar finality time 6.57 #stellar H2
hedera consensus finality time 7 #hedera H2 + FAQ
hedera finality seconds official 8.67 #hedera body
ethereum l1 finality time epochs 3 #ethereum body
solana finality time 50 #solana H2 + FAQ
hedera finality 3-5 seconds 12 #hedera H2 contains exact string

Plus 8 untapped chains (sui/ton/bnb/avalanche/cardano/tron/litecoin/monero finality time) that now have dedicated H2 anchors.

Estimated impact (per agent #3 plan)

  • Impressions: 144/wk -> 350-500/wk (2.5-3.5x)
  • Position: ~5 -> ~3 on existing queries
  • CTR: 0.69% -> 4-6%
  • Clicks: 1/wk -> 15-30/wk within 4 weeks

Validation

  • pnpm validate -> 18 specs valid
  • pnpm typecheck -> clean
  • Post-merge: verify on /benchmarks/l1-finality that all 12 chain H2s render with anchors
  • Confirm direct hit URLs work: /benchmarks/l1-finality#ethereum, #solana, #stellar, #hedera, etc.
  • GSC monitor: 14-day delta on the page

Notes

  • Methodology unchanged (Rule drop journal framing #1 pre-registered). New YAML field is purely editorial / SEO content, doesn't affect what's measured.
  • No em-dashes anywhere (per house style).
  • Hedera explainer honors the disabled state explicitly (no fake number).
  • All numbers come from {{p50:slug}} templating against live Prom data.

…inality)

GSC shows /benchmarks/l1-finality at 144 imp/wk and 0.69% CTR. The page already ranks (#3 on top query) but the SERP snippet doesn't convert and there's no on-page anchor for the family of 'X chain finality time' queries.

Changes:

Schema + type plumbing
- New optional YAML field per_chain_explainer: array of {slug, h2, body}
- Body strings go through the existing template resolver so {{p50:slug}} resolves to live Prom data
- Plumbed through spec-schema.ts -> Benchmark type -> spec.ts loader -> bench-template.ts renderer

Component update (ChainHeadingsSummary)
- Headings upgraded from h3 to h2 (stronger SEO signal)
- Each chain section gets id={slug} so URLs like /benchmarks/l1-finality#ethereum land at the exact section
- When per_chain_explainer has an entry for the chain's slug, render its body as a second paragraph below the live p50 line
- Backward-compatible: chains without an explainer keep the existing 1-line rendering

YAML content (l1-finality.yml)
- 12 per_chain_explainer blocks (ethereum, solana, stellar, hedera, sui, ton, bnb, avalanche, tron, cardano, litecoin, monero) at 70-90 words each
- FAQ expanded from 6 to 12 entries (cap), adding 'What is blockchain finality?', 'Probabilistic vs deterministic finality?', and per-chain entries for SUI, TON, BNB, Cardano (previously missing)

Targets these GSC query patterns:
- ethereum l1 time to finality (10 imp/wk, position 3.2)
- stellar finality time (7 imp/wk, position 6.57)
- hedera consensus finality time (4 imp/wk, position 7)
- ethereum l1 finality time epochs (1 imp/wk, position 3)
- solana finality time (1 imp/wk, position 50)
- hedera finality 3-5 seconds (1 imp/wk, position 12)
- 8 untapped queries (sui/ton/bnb/avalanche/cardano/tron/litecoin/monero finality time)

Estimated impact: 144 imp/wk -> 350-500, position ~5 -> ~3, CTR 0.69% -> 4-6%, clicks 1/wk -> 15-30/wk in 4 weeks.

pnpm validate -> 18 specs valid. pnpm typecheck -> clean.
@Flotapponnier
Flotapponnier merged commit ac2940a into main May 22, 2026
1 check failed
@Flotapponnier
Flotapponnier deleted the feat/seo-finality-cluster branch May 22, 2026 15:31
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