feat(web): full SEO stack — metadata, JSON-LD, sitemap, robots, OG image
Some checks failed
Deploy to Production / deploy (push) Failing after 46s
Some checks failed
Deploy to Production / deploy (push) Failing after 46s
Ported and adapted from the BuildMyDiscord SEO setup: - lib/seo.ts — single source for site constants, the FAQ data (shared by the rendered FAQ and the FAQPage schema so they never drift) and JSON-LD builders. - Rich root metadata: title template, keywords, Open Graph, Twitter card, robots directives, canonical. - JSON-LD: Organization + WebSite + SoftwareApplication sitewide, FAQPage on the landing page. No AggregateRating — there are no real reviews yet. - app/robots.ts — allow all, explicit allow-list for AI answer-engine crawlers (GPTBot, ClaudeBot, PerplexityBot, …), disallow private routes. - app/sitemap.ts — every public marketing + docs route. - app/opengraph-image.tsx — monochrome on-brand 1200x630 share card. - app/manifest.ts + public/llms.txt. - Per-page metadata for pricing, changelog, security, privacy, terms, docs, templates and status. - opengraph-image + apple-icon pinned to the edge runtime — next/og crashes during a Node-runtime prerender. Verified: next build passes; /robots.txt, /sitemap.xml, /manifest.webmanifest and /opengraph-image all generate. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -1,4 +1,11 @@
|
||||
export const metadata = { title: 'Privacy — BuildMyMCPServer' };
|
||||
import { pageMetadata } from '@/lib/seo';
|
||||
|
||||
export const metadata = pageMetadata({
|
||||
title: 'Privacy',
|
||||
description:
|
||||
'BuildMyMCPServer privacy policy — what data we collect, how it is used, and the rights you have over it.',
|
||||
path: '/privacy',
|
||||
});
|
||||
|
||||
const SECTIONS = [
|
||||
{
|
||||
@@ -29,7 +36,7 @@ const SECTIONS = [
|
||||
{
|
||||
h: 'Subprocessors',
|
||||
p: [
|
||||
'Anthropic (generation) — only the prompt text you send. Anthropic\'s data-retention policy applies.',
|
||||
"Anthropic (generation) — only the prompt text you send. Anthropic's data-retention policy applies.",
|
||||
'Hetzner (compute).',
|
||||
'Backblaze (encrypted backups).',
|
||||
'Stripe (billing).',
|
||||
@@ -91,7 +98,10 @@ export default function Privacy() {
|
||||
<h2 className="text-[16px] font-semibold tracking-tight">Contact</h2>
|
||||
<p className="mt-3 text-[13.5px] leading-relaxed text-[--color-fg-muted]">
|
||||
Data controller: BuildMyMCPServer. Email{' '}
|
||||
<a className="text-[--color-accent] underline" href="mailto:privacy@buildmymcpserver.com">
|
||||
<a
|
||||
className="text-[--color-accent] underline"
|
||||
href="mailto:privacy@buildmymcpserver.com"
|
||||
>
|
||||
privacy@buildmymcpserver.com
|
||||
</a>{' '}
|
||||
for any of the above.
|
||||
|
||||
Reference in New Issue
Block a user