From 0ee456ad58328f857f9adb8c477651e19fd8fc23 Mon Sep 17 00:00:00 2001 From: Nik L Date: Thu, 19 Mar 2026 15:31:15 -0400 Subject: [PATCH] feat: seo optimization p1 --- app/globals.css | 4 +- app/greyscan/layout.tsx | 29 ++++++++- app/layout.tsx | 96 +++++++++++++++++++++++++--- app/privacy/page.tsx | 118 +++++++++++++++++++++++++++++++++++ app/sitemap.ts | 9 +++ components/agents.tsx | 3 +- components/comparison.tsx | 18 +++--- components/footer.tsx | 6 ++ components/observability.tsx | 11 +++- next.config.mjs | 14 ++++- public/llms.txt | 30 +++++++++ public/robots.txt | 26 ++++++++ 12 files changed, 341 insertions(+), 23 deletions(-) create mode 100644 app/privacy/page.tsx create mode 100644 app/sitemap.ts create mode 100644 public/llms.txt create mode 100644 public/robots.txt diff --git a/app/globals.css b/app/globals.css index 766559b..8356a1f 100644 --- a/app/globals.css +++ b/app/globals.css @@ -49,8 +49,8 @@ } @theme inline { - --font-sans: 'Inter', ui-sans-serif, system-ui, sans-serif; - --font-serif: 'Source Serif 4', 'Source Serif Pro', Georgia, serif; + --font-sans: var(--font-inter), 'Inter', ui-sans-serif, system-ui, sans-serif; + --font-serif: var(--font-source-serif), 'Source Serif 4', 'Source Serif Pro', Georgia, serif; --font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; --color-background: rgb(var(--background)); diff --git a/app/greyscan/layout.tsx b/app/greyscan/layout.tsx index 2f7c9b2..49f2471 100644 --- a/app/greyscan/layout.tsx +++ b/app/greyscan/layout.tsx @@ -3,8 +3,35 @@ import type { Metadata } from 'next' export const metadata: Metadata = { title: 'Greyscan | Greywall', description: 'Scan your repo and see what an unrestricted AI agent would attempt. Powered by Greywall.', + alternates: { + canonical: 'https://greywall.io/greyscan', + }, + openGraph: { + title: 'Greyscan | Greywall', + description: 'Scan your repo and see what an unrestricted AI agent would attempt. Powered by Greywall.', + url: 'https://greywall.io/greyscan', + siteName: 'Greywall', + type: 'website', + }, +} + +const breadcrumbJsonLd = { + '@context': 'https://schema.org', + '@type': 'BreadcrumbList', + itemListElement: [ + { '@type': 'ListItem', position: 1, name: 'Greywall', item: 'https://greywall.io' }, + { '@type': 'ListItem', position: 2, name: 'Greyscan', item: 'https://greywall.io/greyscan' }, + ], } export default function ExposureLayout({ children }: { children: React.ReactNode }) { - return children + return ( + <> +