Enhance homepage Schema.org structured data#16866
Conversation
- Add standalone WebSite schema with @id for proper graph linking - Add EducationalOrganization as additionalType to signal educational purpose - Add knowsAbout property listing expertise areas (Ethereum, blockchain, DeFi, etc.) - Add parentOrganization referencing Ethereum Foundation - Use @id references to link WebSite, WebPage, and Organization schemas - Fix foundingDate to 2015 (Ethereum network launch) - Remove deprecated SearchAction (Google sunset sitelinks search box Nov 2024) - Clean up redundant author/reviewedBy properties (publisher suffices) These changes help establish ethereum.org as an authoritative educational resource, which is important for YMYL (Your Money Your Life) content classification by search engines. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
Please do not merge this into the other changes in its current state. @minimalsm can you please change this PR to draft? |
Replace multi-schema approach with single WebSite schema optimized for EEAT (Experience, Expertise, Authoritativeness, Trust) signals: - Use WebSite as primary type (educational platform vs business entity) - Set publisher to Ethereum Foundation (avoids self-referential loop) - Add Wikidata sameAs links for Knowledge Graph integration - Ethereum Foundation: Q114736857 - Ethereum network: Q16783523 - Add MIT license URL (open-source signal) - Add EducationalAudience with developer role - Set educationalUse to "instruction" (LRMI vocabulary) - Add maintainer referencing GitHub contributors - Define "about" as Ethereum (SoftwareApplication) with Wikipedia/GitHub links - Add keywords for YMYL disambiguation from financial products This approach establishes ethereum.org as an educational resource published by a recognized non-profit (EF) rather than self-vouching. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
@coderabbitai please review |
|
@minimalsm: I'll review the changes in this PR that enhance the Schema.org structured data for the homepage. ✅ Actions performedReview triggered.
|
WalkthroughModified the homepage JSON-LD structured data schema in a single file, transitioning from a WebPage-based structure to a WebSite-based structure. Updated publisher information, replaced review blocks with maintainer details, introduced an about section, and consolidated the output to return a single JSON-LD entry. Changes
Estimated code review effort🎯 2 (Simple) | ⏱️ ~10 minutes
Pre-merge checks and finishing touches❌ Failed checks (1 warning)
✅ Passed checks (2 passed)
✨ Finishing touches
🧪 Generate unit tests (beta)
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. Comment |
There was a problem hiding this comment.
Actionable comments posted: 1
🧹 Nitpick comments (1)
app/[locale]/page-jsonld.tsx (1)
54-67: Consider translating theabout.descriptionfor i18n SEO benefits.The
aboutsection's description is hardcoded in English. While Schema.org metadata is often kept in English, translating this description could improve SEO in non-English locales since it may appear in search results.You could add a translation key and use:
description: - "A decentralized, open-source blockchain with smart contract functionality.", + t("page-index-about-ethereum-description"),
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (1)
app/[locale]/page-jsonld.tsx(1 hunks)
🧰 Additional context used
📓 Path-based instructions (3)
app/**/*.{ts,tsx}
📄 CodeRabbit inference engine (CLAUDE.md)
app/**/*.{ts,tsx}: Use kebab-case for page files following Next.js conventions
Prioritize Server Components; use App Router and Server Components when possible
Files:
app/[locale]/page-jsonld.tsx
**/*.{ts,tsx}
📄 CodeRabbit inference engine (CLAUDE.md)
**/*.{ts,tsx}: Useinterfacefor defining object shapes in TypeScript, andtypefor unions and intersections
Avoid usinganytypes; useunknowninstead and prefer explicit typing (ESLint enforcesfixToUnknown)
Export types from dedicated files in@/lib/types
Files:
app/[locale]/page-jsonld.tsx
{app,src/components}/**/*.{ts,tsx}
📄 CodeRabbit inference engine (CLAUDE.md)
Ensure all user-facing text is translatable using
getTranslationsandgetLocalehelpers
Files:
app/[locale]/page-jsonld.tsx
🧬 Code graph analysis (1)
app/[locale]/page-jsonld.tsx (1)
src/components/PageJsonLD.tsx (1)
PageJsonLD(5-21)
🔇 Additional comments (3)
app/[locale]/page-jsonld.tsx (3)
20-30: LGTM! Schema structure follows JSON-LD best practices.The transition from WebPage to WebSite schema is appropriate for the homepage. The
@idusing a hardcoded base URL is correct for JSON-LD entity identification, while theurlfield uses the localized path. Technical metadata likekeywordsandeducationalUseare acceptable in English.
70-70: LGTM! Array wrapping is compatible with PageJsonLD.The return statement correctly wraps the structured data in an array, which the
PageJsonLDcomponent handles properly by iterating over the array to generate script tags.
20-68: Verify implementation matches PR objectives.The PR description mentions several features that are not present in the current implementation:
- Missing: Organization
additionalType: "EducationalOrganization"- Missing:
knowsAboutproperty with expertise areas- Missing:
foundingDate: 2015- Missing: Separate Organization schema with
@id: "#organization"for graph linking- Missing: WebPage schema linking to WebSite via
isPartOfInstead, the code implements
audience: EducationalAudience,maintainer, andaboutsections which aren't described in the PR objectives.Since this is a draft PR and mnelsonBT requested not to merge, please confirm whether the current implementation represents the intended schema structure or if it's still being aligned with the PR description.
| name: "Ethereum Foundation", | ||
| url: "https://ethereum.foundation", | ||
| ownershipFundingInfo: "https://ethereum.foundation/ef", | ||
| logo: "https://cdn.jsdelivr.net/gh/ethereum/ethereum-foundation-website@master/src/assets/images/ef-logo.svg", |
There was a problem hiding this comment.
Replace external CDN logo URL with stable source.
The logo URL uses jsDelivr CDN pointing to the master branch of an external GitHub repository. This creates a fragile dependency that could break if:
- The upstream repository is restructured or deleted
- The file path changes
- The master branch is renamed
Consider using a direct URL to ethereum.foundation's hosted logo or a local asset instead.
- logo: "https://cdn.jsdelivr.net/gh/ethereum/ethereum-foundation-website@master/src/assets/images/ef-logo.svg",
+ logo: "https://ethereum.foundation/images/ef-logo.svg",Committable suggestion skipped: line range outside the PR's diff.
🤖 Prompt for AI Agents
In app/[locale]/page-jsonld.tsx around line 42, replace the fragile jsDelivr CDN
URL for the logo with a stable source: either point to the official
ethereum.foundation-hosted absolute URL or move the SVG into the app's static
assets (e.g. public/images/ef-logo.svg) and reference that local path; update
the JSON-LD property to use the new absolute or local URL and ensure the asset
path is correct for production builds.
✅ Deploy Preview for ethereumorg ready!
To edit notification comments on pull requests, go to your Netlify project configuration. |
Co-authored-by: mnelsonBT <74370515+mnelsonBT@users.noreply.github.com>
| reviewedBy: { | ||
| "@type": "Organization", |
There was a problem hiding this comment.
shouldn't it be ethereumFoundationOrganization like the others?

Changes
@idfor proper graph linking between schemasadditionalTypeto signal educational purposeknowsAboutproperty listing expertise areas: Ethereum, blockchain, cryptocurrency, DeFi, smart contracts, Web3, decentralized applicationsparentOrganizationreferencing Ethereum Foundation to establish authority chain@idreferences to properly link WebSite, WebPage, and Organization schemas into a connected graphfoundingDateto 2015 (Ethereum network launch year)SearchAction- Google sunset the sitelinks search box feature in November 2024author/reviewedBysincepublisheris sufficientSchema Graph Structure
Notes
EducationalOrganizationandknowsAboutare valid Schema.org vocabulary but not specifically recognized by Google's rich results - they still provide semantic value and may be used by other structureddata consumers
@idhash fragments (#website,#organization,#logo) are JSON-LD node identifiers for graph linking, not actual URLsTest plan
Summary by CodeRabbit
✏️ Tip: You can customize this high-level summary in your review settings.