129 lines
5.1 KiB
TypeScript
129 lines
5.1 KiB
TypeScript
import { createFileRoute } from "@tanstack/react-router";
|
|
import defaultMdxComponents from "fumadocs-ui/mdx";
|
|
import { DocsBody } from "fumadocs-ui/page";
|
|
import GoogleSearchConsoleMcpContent, {
|
|
frontmatter,
|
|
} from "../../../content/marketing/google-search-console-mcp.mdx";
|
|
import { ComparisonTable } from "@/components/comparison-table";
|
|
import { buildPageSeo, SITE_URL, toCanonicalUrl } from "@/lib/seo";
|
|
|
|
const PATH = "/google-search-console-mcp";
|
|
|
|
const softwareApplicationLd = {
|
|
"@context": "https://schema.org",
|
|
"@type": "SoftwareApplication",
|
|
name: "OpenSEO Google Search Console MCP",
|
|
applicationCategory: "BusinessApplication",
|
|
operatingSystem: "Web",
|
|
url: toCanonicalUrl(PATH),
|
|
description: frontmatter.description,
|
|
provider: {
|
|
"@type": "Organization",
|
|
name: "OpenSEO",
|
|
url: SITE_URL,
|
|
},
|
|
};
|
|
|
|
export const Route = createFileRoute("/_marketing/google-search-console-mcp")({
|
|
head: () =>
|
|
buildPageSeo({
|
|
title: "Google Search Console MCP Server: No Google Cloud Setup",
|
|
description: frontmatter.description,
|
|
path: PATH,
|
|
titleSuffix: "OpenSEO",
|
|
ogType: "article",
|
|
}),
|
|
component: GoogleSearchConsoleMcpPage,
|
|
});
|
|
|
|
function GoogleSearchConsoleMcpPage() {
|
|
return (
|
|
<article className="text-neutral-900">
|
|
<header className="mb-10 border-b border-neutral-200 pb-8">
|
|
<h1 className="text-3xl font-bold leading-tight tracking-tight text-neutral-950 md:text-4xl">
|
|
{frontmatter.title}
|
|
</h1>
|
|
{frontmatter.description ? (
|
|
<p className="mt-4 text-lg leading-8 text-neutral-700">
|
|
{frontmatter.description}
|
|
</p>
|
|
) : null}
|
|
<div className="mt-6 flex flex-col gap-3 sm:flex-row">
|
|
<a
|
|
href="https://app.openseo.so/sign-up"
|
|
className="inline-flex h-10 items-center justify-center rounded-md bg-neutral-950 px-5 text-sm font-medium text-white transition-colors hover:bg-neutral-800"
|
|
>
|
|
Get started
|
|
<span className="ml-2" aria-hidden="true">
|
|
→
|
|
</span>
|
|
</a>
|
|
</div>
|
|
</header>
|
|
|
|
<DocsBody className="min-w-0 text-neutral-800 [&_a]:!text-neutral-950 [&_h2]:!text-neutral-950 [&_h2_a]:!no-underline [&_h3]:!text-neutral-950 [&_h3_a]:!no-underline [&_h4]:!text-neutral-950 [&_h4_a]:!no-underline [&_h5_a]:!no-underline [&_h6_a]:!no-underline [&_li]:!text-neutral-700 [&_li_a]:font-medium [&_li_a]:underline [&_li_a]:decoration-neutral-300 [&_li_a]:underline-offset-4 [&_li_a:hover]:!text-neutral-700 [&_p]:!text-neutral-700 [&_p_a]:font-medium [&_p_a]:underline [&_p_a]:decoration-neutral-300 [&_p_a]:underline-offset-4 [&_p_a:hover]:!text-neutral-700 [&_strong]:!text-neutral-950">
|
|
<GoogleSearchConsoleMcpContent
|
|
components={{ ...defaultMdxComponents, ComparisonTable }}
|
|
/>
|
|
</DocsBody>
|
|
|
|
<GoogleSearchConsoleMcpCta />
|
|
|
|
<script
|
|
type="application/ld+json"
|
|
// eslint-disable-next-line react/no-danger
|
|
dangerouslySetInnerHTML={{
|
|
__html: JSON.stringify(softwareApplicationLd),
|
|
}}
|
|
/>
|
|
</article>
|
|
);
|
|
}
|
|
|
|
function GoogleSearchConsoleMcpCta() {
|
|
return (
|
|
<section className="mt-14 border-t border-neutral-200 pt-8">
|
|
<p className="text-lg font-semibold text-neutral-950">
|
|
Point your AI at your real search data
|
|
</p>
|
|
<p className="mt-2 text-sm leading-relaxed text-neutral-600">
|
|
No Google Cloud project. Zero credits to read your own data. Works with
|
|
Claude, Cursor, and Codex.
|
|
</p>
|
|
<div className="mt-5 flex flex-col gap-3 sm:flex-row">
|
|
<a
|
|
href="https://app.openseo.so/sign-up"
|
|
className="inline-flex h-10 items-center justify-center rounded-md bg-neutral-950 px-4 text-sm font-medium text-white transition-colors hover:bg-neutral-800"
|
|
>
|
|
Get started
|
|
<span className="ml-2" aria-hidden="true">
|
|
→
|
|
</span>
|
|
</a>
|
|
<a
|
|
href="https://github.com/every-app/open-seo"
|
|
target="_blank"
|
|
rel="noopener noreferrer"
|
|
className="inline-flex h-10 items-center justify-center gap-2 rounded-md border border-neutral-300 bg-white px-4 text-sm font-medium text-neutral-950 transition-colors hover:border-neutral-950"
|
|
>
|
|
<GitHubIcon />
|
|
Star on GitHub
|
|
</a>
|
|
</div>
|
|
</section>
|
|
);
|
|
}
|
|
|
|
function GitHubIcon() {
|
|
return (
|
|
<svg
|
|
aria-hidden="true"
|
|
className="h-4 w-4"
|
|
viewBox="0 0 24 24"
|
|
fill="currentColor"
|
|
>
|
|
<path d="M12 0C5.37 0 0 5.37 0 12c0 5.3 3.44 9.8 8.21 11.39.6.11.79-.26.79-.58v-2.23c-3.34.73-4.03-1.42-4.03-1.42-.55-1.39-1.33-1.76-1.33-1.76-1.09-.74.08-.73.08-.73 1.21.08 1.84 1.24 1.84 1.24 1.07 1.83 2.81 1.3 3.49.99.11-.77.42-1.3.76-1.6-2.66-.31-5.47-1.33-5.47-5.93 0-1.31.47-2.38 1.24-3.22-.12-.3-.54-1.52.12-3.18 0 0 1.01-.32 3.3 1.23.96-.27 1.98-.4 3-.4s2.05.14 3 .4c2.29-1.55 3.3-1.23 3.3-1.23.65 1.65.24 2.87.12 3.18.77.84 1.24 1.91 1.24 3.22 0 4.61-2.81 5.62-5.48 5.92.43.37.82 1.1.82 2.22v3.29c0 .32.19.69.8.58A12.01 12.01 0 0 0 24 12c0-6.63-5.37-12-12-12z" />
|
|
</svg>
|
|
);
|
|
}
|