+ Connect your AI agent to OpenSEO. Run keyword research, SERP analysis,
+ and domain lookups from your editor or chat.
+
+
+
+
+
+
+ MCP server URL
+
+
+
+
+ {mcpUrl}
+
+
+
+ Paste this into any MCP client. Sign in with OpenSEO when prompted.
+
+
+
+
+
Setup guides
+
+ Pick your agent.
+
+
+
+
+ Run this in your terminal:
+
+
+
+ Approve the login when prompted. Then ask Claude Code to call{" "}
+ whoami.
+
+
+
+
+
+ Run these commands:
+
+
+
+ Approve the login when prompted. Then ask Codex to call{" "}
+ whoami.
+
+
+
+
+
+
+
Available tools
+
+
+
+
+
+
+
Sam: AI SEO teammate
+
+ Sam is an experimental content workflow for Claude Code and other
+ coding agents. It combines keyword research, source discovery,
+ drafting, and QA.
+
+ );
+}
+
+function CopyButton({
+ value,
+ successMessage,
+ label,
+ iconOnly = false,
+}: {
+ value: string;
+ successMessage: string;
+ label?: string;
+ iconOnly?: boolean;
+}) {
+ const [copied, setCopied] = useState(false);
+
+ const handleCopy = async () => {
+ if (typeof navigator === "undefined" || !navigator.clipboard?.writeText) {
+ toast.error("Clipboard not available");
+ return;
+ }
+ try {
+ await navigator.clipboard.writeText(value);
+ toast.success(successMessage);
+ setCopied(true);
+ setTimeout(() => setCopied(false), 2000);
+ } catch {
+ toast.error("Could not copy to clipboard");
+ }
+ };
+
+ if (iconOnly) {
+ return (
+
+ );
+ }
+
+ return (
+
+ );
+}
diff --git a/src/routes/_project/p/$projectId/ai.tsx b/src/routes/_project/p/$projectId/ai.tsx
deleted file mode 100644
index 2802322..0000000
--- a/src/routes/_project/p/$projectId/ai.tsx
+++ /dev/null
@@ -1,323 +0,0 @@
-import { createFileRoute } from "@tanstack/react-router";
-import { ArrowUpRight } from "lucide-react";
-
-const DISCORD_URL = "https://discord.gg/c9uGs3cFXr";
-const SUPPORT_EMAIL = "ben@openseo.so";
-const SAM_GITHUB_URL = "https://github.com/every-app/sam";
-const CHATGPT_MCP_DOCS_URL = "https://platform.openai.com/docs/mcp";
-const CLAUDE_CONNECTORS_DOCS_URL =
- "https://support.anthropic.com/en/articles/11503834-building-custom-integrations-via-remote-mcp-servers";
-
-const mcpTools = [
- {
- name: "whoami",
- description:
- "Check which OpenSEO user and workspace the client can access.",
- },
- {
- name: "list_projects",
- description: "Find your OpenSEO projects and copy the right projectId.",
- },
- {
- name: "research_keywords",
- description:
- "Turn seed terms into keyword ideas with volume, difficulty, and CPC.",
- },
- {
- name: "get_serp_results",
- description:
- "Inspect live Google results for keyword and competitor research.",
- },
- {
- name: "get_domain_overview",
- description:
- "Summarize a domain's organic footprint before deeper research.",
- },
- {
- name: "get_domain_keyword_suggestions",
- description:
- "Find keywords a domain already ranks for or could expand into.",
- },
- {
- name: "get_backlinks_overview",
- description: "Review backlink authority and referring-domain signals.",
- },
- {
- name: "get_rank_tracker",
- description: "Read your tracked keyword positions from OpenSEO.",
- },
- {
- name: "list_saved_keywords",
- description: "Pull saved keyword lists into an agent workflow.",
- },
- {
- name: "save_keywords",
- description: "Save promising keyword ideas back to OpenSEO.",
- },
-] as const;
-
-const promptExamples = [
- {
- title: "Keyword research",
- prompt:
- "Use OpenSEO to research keywords for my project. Start with these seed topics: [seed 1], [seed 2], [seed 3]. Group the best opportunities by search intent, prioritize low-difficulty terms, and suggest which keywords I should save.",
- },
- {
- title: "Competitor research",
- prompt:
- "Use OpenSEO to compare my domain [yourdomain.com] against these competitors: [competitor1.com], [competitor2.com]. Summarize their strongest keyword themes, backlink advantages, and the first content opportunities I should pursue.",
- },
- {
- title: "SERP brief",
- prompt:
- "Use OpenSEO to inspect the live SERP for [keyword]. Tell me who ranks, what search intent Google is rewarding, what pages are cited repeatedly, and what a better page should include.",
- },
-] as const;
-
-export const Route = createFileRoute("/_project/p/$projectId/ai")({
- component: AiPage,
-});
-
-function AiPage() {
- const mcpUrl =
- typeof window === "undefined"
- ? "https://app.openseo.so/mcp"
- : `${window.location.origin}/mcp`;
-
- return (
-
-
-
AI & MCP
-
- Connect OpenSEO to your coding agent or AI workspace so it can run SEO
- research with your project data: keyword ideas, SERP results, domain
- overviews, backlinks, rank tracking, and saved keywords.
-
-
- This is community-driven — we want to hear what matters to you. Reach
- out on{" "}
-
- Discord
- {" "}
- or email{" "}
-
- {SUPPORT_EMAIL}
-
- .
-
-
-
-
MCP server
-
- Use this endpoint when a client asks for the OpenSEO MCP server URL.
- You will be sent through OpenSEO login the first time a client
- connects.
-
-
-
- MCP endpoint
-
-
- {mcpUrl}
-
-
-
-
-
-
Connect Codex
-
- Codex supports hosted MCP servers from the CLI. Add OpenSEO, then
- run the OAuth login flow.
-
- After login, ask Codex to call whoami, then{" "}
- list_projects. Use the returned projectId{" "}
- for keyword, SERP, domain, backlink, and rank-tracking requests.
-
-
-
-
-
Connect Claude Code CLI
-
- Claude Code can add OpenSEO as an HTTP MCP server. Use the user
- scope if you want it available across projects, or local scope if
- this repository is the only place you need it.
-
- If Claude Code prompts you to authorize the server, approve the
- OpenSEO login flow. Then ask it to list MCP tools or call{" "}
- whoami to confirm the connection.
-
-
-
-
-
- ChatGPT, Claude web, and Claude Desktop
-
-
- Web AI clients handle MCP setup differently from coding tools. Use
- the same endpoint above when adding a custom connector or MCP
- server, then authorize OpenSEO when the client asks you to sign in.
-
-
-
-
- —
-
-
- In ChatGPT, enable developer mode if needed, then create a
- custom MCP connector from Apps & Connectors and use the endpoint
- above.
-
-
-
-
- —
-
-
- In Claude web or Claude Desktop, add OpenSEO from Settings,
- Connectors. Remote MCP servers should be added there, not by
- editing the desktop JSON config.
-
-
-
-
- Start by asking the client to check whoami and{" "}
- list_projects. Once it can see your projects, it can
- help with research planning, SERP analysis, competitor comparisons,
- and saving useful keywords back to OpenSEO.
-
- Sam is an experimental content workflow for Claude Code and other
- coding agents. It combines keyword research, source discovery,
- drafting, and QA for teams that want an agent to help produce
- publishable SEO content.
-
- {[
- {
- title: "In-app SEO Research Agent",
- description:
- "Ask questions and run research without leaving OpenSEO",
- },
- {
- title: "Content Assistant",
- description:
- "Generate drafts using saved keywords and business context",
- },
- {
- title: "More MCP clients",
- description:
- "Better setup guidance for ChatGPT, Claude web, OpenCode, and other clients as their MCP support matures",
- },
- ].map((item) => (
-