SurfSense/surfsense_web/components/seo/json-ld.tsx
DESKTOP-RTLN3BA\$punk 7af3f535fc feat(pricing): enhance pricing page with SEO metadata and structured data
- Updated the pricing page to include improved SEO metadata, including title, description, and keywords.
- Added structured data using JsonLd for better search engine visibility.
- Revised pricing plan descriptions and features for clarity and accuracy.
- Enhanced link behavior for external pricing links to open in a new tab with appropriate security attributes.
- Updated FAQ sections to reflect changes in credit and billing explanations.
2026-07-05 20:45:23 -07:00

178 lines
4.9 KiB
TypeScript

interface JsonLdProps {
data: Record<string, unknown>;
}
export function JsonLd({ data }: JsonLdProps) {
return (
// biome-ignore lint/security/noDangerouslySetInnerHtml: JSON-LD structured data requires dangerouslySetInnerHTML for script injection
<script type="application/ld+json" dangerouslySetInnerHTML={{ __html: JSON.stringify(data) }} />
);
}
export function OrganizationJsonLd() {
return (
<JsonLd
data={{
"@context": "https://schema.org",
"@type": "Organization",
name: "SurfSense",
url: "https://www.surfsense.com",
logo: "https://www.surfsense.com/logo.png",
description:
"SurfSense is an open-source competitive intelligence platform. AI agents monitor competitors, track rankings, and listen to your market through one API or MCP server.",
sameAs: ["https://github.com/MODSetter/SurfSense", "https://discord.gg/ejRNvftDp9"],
contactPoint: {
"@type": "ContactPoint",
email: "rohan@surfsense.com",
contactType: "sales",
},
}}
/>
);
}
export function WebSiteJsonLd() {
return (
<JsonLd
data={{
"@context": "https://schema.org",
"@type": "WebSite",
name: "SurfSense",
url: "https://www.surfsense.com",
description:
"SurfSense is an open-source competitive intelligence platform for AI agents, with live data connectors served through one API or MCP server.",
potentialAction: {
"@type": "SearchAction",
target: {
"@type": "EntryPoint",
urlTemplate: "https://www.surfsense.com/docs?search={search_term_string}",
},
"query-input": "required name=search_term_string",
},
}}
/>
);
}
export function SoftwareApplicationJsonLd() {
return (
<JsonLd
data={{
"@context": "https://schema.org",
"@type": "SoftwareApplication",
name: "SurfSense",
applicationCategory: "BusinessApplication",
operatingSystem: "Windows, macOS, Linux, Web",
offers: {
"@type": "Offer",
price: "0",
priceCurrency: "USD",
description:
"Free self-hosted from the open-source repo; cloud starts with $5 of free credit, then pay as you go",
},
description:
"SurfSense is an open-source competitive intelligence platform. AI agents monitor competitors, track rankings, and listen to your market with platform-native connectors for Reddit, YouTube, Google Maps, Google Search, and the open web, through one API or MCP server.",
url: "https://www.surfsense.com",
downloadUrl: "https://github.com/MODSetter/SurfSense/releases",
featureList: [
"Platform-native connectors: Reddit, YouTube, Google Maps, Google Search, Web Crawl",
"MCP server that exposes every connector as a native agent tool",
"Agent harness with retries, structured output, and credit metering",
"Competitor, brand, and rank monitoring with briefs and alerts",
"AI automations and agents (scheduled and event-triggered workflows)",
"AI-powered semantic search across connected tools and documents",
"Knowledge base with file uploads and Google Drive, OneDrive, and Dropbox sync",
"Document Q&A with citations, report, podcast, and video generation",
"Real-time collaborative team chats",
"Native desktop app with Quick, General, and Screenshot Assist",
"Open source and self-hostable with no data limits",
],
}}
/>
);
}
export function ArticleJsonLd({
title,
description,
url,
datePublished,
dateModified,
author,
image,
}: {
title: string;
description: string;
url: string;
datePublished: string;
dateModified?: string;
author: string;
image?: string;
}) {
return (
<JsonLd
data={{
"@context": "https://schema.org",
"@type": "Article",
headline: title,
description,
url,
datePublished,
...(dateModified ? { dateModified } : {}),
author: {
"@type": "Organization",
name: author,
},
publisher: {
"@type": "Organization",
name: "SurfSense",
logo: {
"@type": "ImageObject",
url: "https://www.surfsense.com/logo.png",
},
},
image: image || "https://www.surfsense.com/og-image.png",
mainEntityOfPage: {
"@type": "WebPage",
"@id": url,
},
}}
/>
);
}
export function BreadcrumbJsonLd({ items }: { items: { name: string; url: string }[] }) {
return (
<JsonLd
data={{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
itemListElement: items.map((item, index) => ({
"@type": "ListItem",
position: index + 1,
name: item.name,
item: item.url,
})),
}}
/>
);
}
export function FAQJsonLd({ questions }: { questions: { question: string; answer: string }[] }) {
return (
<JsonLd
data={{
"@context": "https://schema.org",
"@type": "FAQPage",
mainEntity: questions.map((q) => ({
"@type": "Question",
name: q.question,
acceptedAnswer: {
"@type": "Answer",
text: q.answer,
},
})),
}}
/>
);
}