Skip to content

cherry-pick: SEO/E-E-A-T pack → main - #1256

Merged
Flotapponnier merged 4 commits into
mainfrom
chore/cherry-seo-pack-main
Jul 17, 2026
Merged

cherry-pick: SEO/E-E-A-T pack → main#1256
Flotapponnier merged 4 commits into
mainfrom
chore/cherry-seo-pack-main

Conversation

@Flotapponnier

Copy link
Copy Markdown
Collaborator

Ships the SEO/E-E-A-T upgrade already merged and validated on dev.

Contains

Skipped

Verification (all green on dev staging)

  • typecheck: clean
  • validate-specs: 75 valid
  • editorial-check: clean
  • /team renders with Florent + GitHub + LinkedIn
  • /alternatives/alchemy shows "Positioning" block with "100+ chains (approximately 120)" (post fact-check correction)
  • /answers/is-usdc-safer-than-usdt shows "Editorial context" block, no visible byline, QAPage schema present, suggestedAnswer.author references PERSON_ID
  • /benchmarks/aggregator-head-lag StatisticalReport.contributor and TechArticle.reviewedBy both reference team#florent-tapponnier

Deploy

Manual: `vercel --prod` from a fresh checkout of main after merge.

Flotapponnier and others added 4 commits July 17, 2026 13:30
…_take (#1249)

Adds a broad SEO and GEO upgrade landing three surfaces at once:

- /team page with Florent Tapponnier as Maintainer, sameAs GitHub +
  LinkedIn, Person JSON-LD wired into Organization.founder and into
  every bench StatisticalReport.contributor + TechArticle.author +
  reviewedBy so YMYL crypto queries see a named human accountable.
- 23 positioning fields on alternatives specs (200 words each,
  factual, sourced from official docs, fact-checked via WebFetch).
  Cuts the shared-template surface from ~65 percent to ~30 percent
  across pages that reference the same benchmark.
- 8 expert_take fields on answers specs (150-200 words each,
  structural commentary that stays valid regardless of who currently
  leads the leaderboard) with QAPage schema so the acceptedAnswer
  (Org, auto) and suggestedAnswer (Person, expert_take) both reach
  Google + AI Overviews.
- Byline on answers pages when expert_take is present, linking to
  /team, hidden when dataPending so editorial context never renders
  next to an empty leaderboard.
- noindex on awaiting benches so Prom outages do not surface thin
  placeholder pages to crawlers.
- Optional Zod fields positioning + expert_take + expert_take_reviewed
  with noAiDashes refine so future drafts stay in policy.
- Sitemap prebuild script emits real git-commit timestamps for the
  8 editorial pages so lastmod stops resetting to build time on every
  unrelated Vercel deploy.
- scripts/editorial-check.sh lints the two new fields for em/en
  dashes, marketing adjectives, pronouns, year references.

Co-authored-by: Florent Tapponnier <contact@mobula.io>
Two fixes on top of #1249:

1. Add a Positioning block on /alternatives/[slug]/page.tsx that
   renders the newly-added field. Phase 1 added the Zod schema
   field but never wired the UI, so the content sat in YAMLs
   invisible on staging.

2. Rewrite the 23 positioning + 8 expert_take YAML blocks as a
   single line per paragraph. Previous version hard-wrapped at
   180 chars, which YAML literal (|) preserves as newlines,
   splitting words mid-token in the rendered HTML.

Co-authored-by: Florent Tapponnier <contact@mobula.io>
Fix that landed in a prior branch was lost during a squash-merge
sequence. Reapplying directly off dev to guarantee it lands.

Co-authored-by: Florent Tapponnier <contact@mobula.io>
The visible "By Florent Tapponnier, reviewed <date>" byline
implied authorship of every expert_take paragraph and dated the
review with a fabricated timestamp, both editorially fragile.

Keep the E-E-A-T signal at the schema layer only: Person JSON-LD
on Organization.founder, StatisticalReport.contributor, TechArticle
author + reviewedBy, and QAPage suggestedAnswer.author. Search
engines see the human attribution where it counts; readers see the
editorial commentary without a personal claim on every crypto
opinion the site publishes. Removes the unused Byline component too.

Co-authored-by: Florent Tapponnier <contact@mobula.io>
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