Package Exports
- @seomesh/react
- @seomesh/react/client
Readme
@seomesh/react
React Server Components — JSON-LD structured data, OpenGraph, Canonical, HreflangAlternate
Using Next.js? Use
@seomesh/next— it includes all these components plus sitemap, robots.txt, and llms.txt generators.
Installation
npm install @seomesh/reactComponents
JSON-LD (40+ schema.org types)
import { Product, Offer, AggregateRating } from '@seomesh/react';
<Product name="Hosting Plan" description="NVMe SSD, LiteSpeed.">
<Offer prop="offers" price={9.9} priceCurrency="USD" availability="https://schema.org/InStock" />
<AggregateRating prop="aggregateRating" ratingValue={4.8} reviewCount={312} />
</Product>OpenGraph
import { OpenGraph } from '@seomesh/react';
<OpenGraph
title="Page Title"
description="Meta description"
image="https://mysite.com/og.png"
imageAlt="OG image"
type="website"
twitterCard="summary_large_image"
/>Canonical
import { Canonical } from '@seomesh/react';
<Canonical href="https://mysite.com/page" />HreflangAlternate
import { HreflangAlternate } from '@seomesh/react';
<HreflangAlternate
includeXDefault
locales={[
{ lang: 'en', href: 'https://mysite.com/en' },
{ lang: 'tr', href: 'https://mysite.com/tr' },
]}
/>AI Bot Policy
import { AiBotPolicy } from '@seomesh/react';
// Block AI training crawlers
<AiBotPolicy deny={['GPTBot', 'CCBot', 'Google-Extended']} noAiImages />Speakable (AI Summarization)
import { Article, Speakable } from '@seomesh/react';
<Article headline="Title" datePublished="2026-05-15">
<Speakable prop="speakable" cssSelector={['.intro', 'h1']} />
</Article>@graph Merge
import { SchemaGraph, WebSite, Organization } from '@seomesh/react';
<SchemaGraph>
<WebSite name="My Site" url="https://mysite.com" />
<Organization name="My Org" url="https://mysite.com" />
</SchemaGraph>RSC Compatible
No React Context used. The JSX tree is traversed statically — works seamlessly in 'use server' components.
License
MIT © Mehmet Can Öztürk