Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
128 changes: 128 additions & 0 deletions app/(marketing)/press/page.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,128 @@
export const metadata = {
title: "Press & News",
description:
"Press resources, media coverage, and news about CrawlProof — the AEO, SEO, and GEO auditor for the AI-search era.",
alternates: { canonical: "/press" },
openGraph: {
title: "Press & News · CrawlProof",
description:
"Press resources, media coverage, and news about CrawlProof — the AEO, SEO, and GEO auditor for the AI-search era.",
url: "/press",
},
};

const COVERAGE: { outlet: string; title: string; url: string; date: string }[] = [
// Add coverage items here as they are published, e.g.:
// {
// outlet: "TechCrunch",
// title: "CrawlProof launches AEO auditing for the AI-search era",
// url: "https://techcrunch.com/...",
// date: "2025-01-01",
// },
];

export default function PressPage() {
return (
<main className="mx-auto max-w-3xl px-4 sm:px-6 py-16">
<h1 className="text-4xl font-extrabold">Press &amp; News</h1>
<p className="mt-4 text-lg text-[var(--color-muted)]">
Resources for journalists, analysts, and anyone writing about CrawlProof,
AEO, or AI-search optimization.
</p>

{/* Press contact */}
<section className="mt-12">
<h2 className="text-2xl font-bold">Press contact</h2>
<p className="mt-3 text-[var(--color-muted)]">
For interviews, data requests, or media inquiries, reach us at{" "}
<a
href="mailto:press@crawlproof.com"
className="underline text-[var(--color-fg)]"
>
press@crawlproof.com
</a>
. We aim to respond within one business day.
</p>
</section>

{/* Brand assets */}
<section className="mt-12">
<h2 className="text-2xl font-bold">Brand assets</h2>
<p className="mt-3 text-[var(--color-muted)]">
Our logo and brand mark are available as an SVG at{" "}
<code className="rounded bg-[var(--color-card)] px-1 py-0.5 text-sm">
/logo.svg
</code>
. Please do not modify the logo proportions or colours without
permission.
</p>
<ul className="mt-4 space-y-2 text-sm text-[var(--color-muted)]">
<li>
<span className="font-semibold text-[var(--color-fg)]">Full name:</span>{" "}
CrawlProof
</li>
<li>
<span className="font-semibold text-[var(--color-fg)]">Short form:</span>{" "}
CrawlProof (no space, capital C and P)
</li>
<li>
<span className="font-semibold text-[var(--color-fg)]">Product category:</span>{" "}
AEO / SEO / GEO auditing platform
</li>
<li>
<span className="font-semibold text-[var(--color-fg)]">Founded:</span> 2024
</li>
</ul>
</section>

{/* Boilerplate */}
<section className="mt-12">
<h2 className="text-2xl font-bold">About CrawlProof (boilerplate)</h2>
<p className="mt-3 text-[var(--color-muted)]">
CrawlProof is an AEO, SEO, and GEO auditing platform that shows site owners
exactly what LLM crawlers and generative AI engines find on their pages — and
what they miss. By fetching pages both as raw HTML and as a fully-rendered
browser, CrawlProof exposes gaps in structured data, robots rules,
llms.txt quality, knowledge-graph anchoring, and AI-agent integration files.
The result is a clear, actionable score for AI-search visibility.
</p>
</section>

{/* Media coverage */}
<section className="mt-12">
<h2 className="text-2xl font-bold">Media coverage</h2>
{COVERAGE.length === 0 ? (
<p className="mt-3 text-[var(--color-muted)]">
No press coverage has been added yet. If you have written about
CrawlProof and would like to be listed here, email{" "}
<a
href="mailto:press@crawlproof.com"
className="underline text-[var(--color-fg)]"
>
press@crawlproof.com
</a>
.
</p>
) : (
<ul className="mt-4 space-y-4">
{COVERAGE.map((item) => (
<li key={item.url} className="card p-4">
<a
href={item.url}
target="_blank"
rel="noreferrer"
className="font-semibold underline text-[var(--color-fg)]"
>
{item.title}
</a>
<p className="mt-1 text-xs text-[var(--color-muted)]">
{item.outlet} &mdash; {item.date}
</p>
</li>
))}
</ul>
)}
</section>
</main>
);
}
1 change: 1 addition & 0 deletions app/sitemap.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ export default async function sitemap(): Promise<MetadataRoute.Sitemap> {
{ url: `${base}/hire`, changeFrequency: "monthly", priority: 0.9 },
{ url: `${base}/get-guide`, changeFrequency: "monthly", priority: 0.9 },
{ url: `${base}/about`, changeFrequency: "monthly", priority: 0.7 },
{ url: `${base}/press`, changeFrequency: "monthly", priority: 0.6 },
{ url: `${base}/blog`, changeFrequency: "weekly", priority: 0.8 },
{ url: `${base}/recent`, changeFrequency: "hourly", priority: 0.9 },
{ url: `${base}/bot`, changeFrequency: "monthly", priority: 0.5 },
Expand Down
1 change: 1 addition & 0 deletions components/site-footer.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ export function SiteFooter() {
<div className="font-semibold text-[var(--color-fg)]">Company</div>
<ul className="mt-2 space-y-1">
<li><Link href="/about">About</Link></li>
<li><Link href="/press">Press &amp; News</Link></li>
<li><Link href="/bot">Bot info</Link></li>
</ul>
</div>
Expand Down
Loading