Redesign AI page (#114)

This commit is contained in:
Ben Senescu 2026-04-15 11:41:04 -04:00 committed by GitHub
parent 1b6bf8fd94
commit 4595080356
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -1,8 +1,9 @@
import { createFileRoute } from "@tanstack/react-router";
import { ArrowUpRight, Bot, Compass, Lightbulb, Sparkles } from "lucide-react";
import { ArrowUpRight } from "lucide-react";
const DISCORD_URL = "https://discord.gg/c9uGs3cFXr";
const SUPPORT_EMAIL = "ben@everyapp.com";
const SUPPORT_EMAIL = "ben@openseo.so";
const SAM_GITHUB_URL = "https://github.com/every-app/sam";
const DATAFORSEO_MCP_DOCS_URL =
"https://dataforseo.com/help-center/setting-up-the-official-dataforseo-mcp-server-simple-guide";
@ -12,25 +13,22 @@ export const Route = createFileRoute("/_project/p/$projectId/ai")({
function AiPage() {
return (
<div className="px-4 py-4 md:px-6 md:py-6 pb-24 md:pb-8 overflow-auto">
<div className="mx-auto max-w-5xl space-y-4">
<div className="card bg-base-100 border border-base-300">
<div className="card-body gap-3">
<div className="flex items-center gap-2 text-primary">
<Sparkles className="size-5" />
<span className="text-sm font-semibold uppercase tracking-wide">
Coming Soon
</span>
</div>
<h1 className="text-2xl font-semibold">
AI-powered features are coming soon
</h1>
<p className="text-sm text-base-content/70 max-w-3xl">
We want this to be community driven. If there&apos;s a workflow
you want solved first, let me know!
<div className="px-4 py-12 md:px-6 md:py-20 pb-24 md:pb-8 overflow-auto">
<div className="mx-auto max-w-2xl">
<h1 className="text-2xl font-semibold">AI & Agents</h1>
<p className="mt-2 text-sm text-base-content/70 leading-relaxed">
OpenSEO is brand new. Our goal is to build the most powerful and
intuitive tool to help your websites rank better. AI will play a large
role in that.
</p>
<div className="text-sm text-base-content/80">
Message us on{" "}
<p className="mt-3 text-sm text-base-content/70 leading-relaxed">
Lots of other SEO tools have an overwhelming number of
&ldquo;features&rdquo;. We think many of these can be hidden by
default, only shown to you when you want them.
</p>
<p className="mt-3 text-sm text-base-content/70 leading-relaxed">
This is community-driven we want to hear what matters to you. Reach
out on{" "}
<a
className="link link-primary"
href={DISCORD_URL}
@ -39,89 +37,121 @@ function AiPage() {
>
Discord
</a>{" "}
or email me at{" "}
or email{" "}
<a className="link link-primary" href={`mailto:${SUPPORT_EMAIL}`}>
{SUPPORT_EMAIL}
</a>
.
</div>
</div>
</div>
<div className="grid gap-4 md:grid-cols-2">
<div className="card bg-base-100 border border-base-300">
<div className="card-body gap-3">
<div className="flex items-center gap-2">
<Sparkles className="size-4 text-primary" />
<h2 className="card-title text-base">
Planned: Content Assistant
</h2>
</div>
<p className="text-sm text-base-content/70">
Generate blog post drafts using your saved keywords, business
context, and general strategy.
</p>
</div>
</div>
<div className="card bg-base-100 border border-base-300">
<div className="card-body gap-3">
<div className="flex items-center gap-2">
<Bot className="size-4 text-primary" />
<h2 className="card-title text-base">
Planned: SEO Research Agent
</h2>
</div>
<p className="text-sm text-base-content/70">
Ask SEO questions, run focused research, and get help using the
app without leaving your workflow.
{/* Sam */}
<section className="mt-12">
<h2 className="text-xl font-semibold">Sam: AI SEO Teammate</h2>
<p className="mt-2 text-sm text-base-content/70 leading-relaxed">
Sam turns your Claude Code or favorite coding agent into a powerful
SEO teammate. Sam has a specialized workflow for writing great
content, but you can teach Sam about your SEO workflow and needs and
it will customize itself for you.
</p>
</div>
</div>
<div className="card bg-base-100 border border-base-300 md:col-span-2">
<div className="card-body gap-3">
<div className="flex items-center gap-2">
<Lightbulb className="size-4 text-primary" />
<h2 className="card-title text-base">
Content Assistant workflow today
</h2>
</div>
<p className="text-sm text-base-content/70">
If you want content generation right now, make a local folder
and use Claude Code, Claude/Cowork, Cursor, Codex, or a similar
coding agent. Paste in your keywords, business plan, and
strategy, then iterate with the agent until the draft is right.
<p className="mt-3 text-sm text-base-content/70 leading-relaxed">
Sam handles keyword research, source discovery, and drafting with
a built-in QA loop that checks quality and accuracy before you
publish.
</p>
</div>
</div>
<div className="card bg-base-100 border border-base-300 md:col-span-2">
<div className="card-body gap-3">
<div className="flex items-center gap-2">
<Compass className="size-4 text-primary" />
<h2 className="card-title text-base">
DataForSEO MCP for agentic workflows
</h2>
</div>
<p className="text-sm text-base-content/70">
If you want the best agentic path for DataForSEO API data, use
the official DataForSEO MCP server setup guide.
<p className="mt-3 text-sm text-base-content/70 leading-relaxed">
Works with DataForSEO MCP for real SEO data. Model-agnostic use it
with Claude Code, GPT, or others.
</p>
<ul className="mt-4 space-y-2">
{[
"Keyword research & topic analysis",
"Source discovery & verification",
"Content drafting with QA",
].map((item) => (
<li
key={item}
className="flex gap-2.5 text-sm text-base-content/70"
>
<span className="mt-[2px] shrink-0 text-base-content/40">
&mdash;
</span>
{item}
</li>
))}
</ul>
<a
href={SAM_GITHUB_URL}
target="_blank"
rel="noreferrer"
className="mt-4 inline-flex items-center gap-1.5 text-sm font-medium text-base-content hover:text-base-content/60 transition-colors"
>
View on GitHub
<ArrowUpRight className="size-3.5" />
</a>
</section>
{/* Use any coding agent */}
<section className="mt-12">
<h2 className="text-xl font-semibold">Use any coding agent</h2>
<p className="mt-2 text-sm text-base-content/70 leading-relaxed">
Pair your preferred agent with the DataForSEO MCP server to access
keyword volumes, SERP results, backlink profiles, and more.
</p>
<p className="mt-3 text-sm text-base-content/60">
Claude Code &middot; Cursor &middot; Windsurf &middot; Codex
&middot; any MCP-compatible agent
</p>
<div>
<a
className="btn btn-outline btn-sm"
href={DATAFORSEO_MCP_DOCS_URL}
target="_blank"
rel="noreferrer"
className="mt-4 inline-flex items-center gap-1.5 text-sm font-medium text-base-content hover:text-base-content/60 transition-colors"
>
Open DataForSEO MCP docs
DataForSEO MCP setup guide
<ArrowUpRight className="size-3.5" />
</a>
</div>
</div>
</div>
</div>
</section>
{/* Roadmap */}
<section className="mt-12">
<h2 className="text-xl font-semibold">Roadmap</h2>
<ul className="mt-4 space-y-4">
{[
{
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 integrations",
},
].map((item) => (
<li key={item.title}>
<p className="flex gap-2.5 text-sm text-base-content/70">
<span className="mt-[2px] shrink-0 text-base-content/40">
&mdash;
</span>
<span>
<span className="font-medium text-base-content">
{item.title}
</span>
{item.description ? (
<>
<br />
{item.description}
</>
) : null}
</span>
</p>
</li>
))}
</ul>
</section>
</div>
</div>
);