From bd402844fae9101da9591b8eb153871773eb3c27 Mon Sep 17 00:00:00 2001 From: Ben Senescu <44480372+bensenescu@users.noreply.github.com> Date: Tue, 11 Aug 2026 22:38:47 -0400 Subject: [PATCH] Add public product roadmap (#480) --- web/content/marketing/roadmap.md | 51 +++++++++++++++++++++++++++ web/scripts/generate-sitemap.js | 1 + web/src/components/site-footer.tsx | 1 + web/src/routeTree.gen.ts | 21 +++++++++++ web/src/routes/_marketing.tsx | 7 ++++ web/src/routes/_marketing/roadmap.tsx | 37 +++++++++++++++++++ 6 files changed, 118 insertions(+) create mode 100644 web/content/marketing/roadmap.md create mode 100644 web/src/routes/_marketing/roadmap.tsx diff --git a/web/content/marketing/roadmap.md b/web/content/marketing/roadmap.md new file mode 100644 index 0000000..2494c92 --- /dev/null +++ b/web/content/marketing/roadmap.md @@ -0,0 +1,51 @@ +--- +title: Roadmap +description: Features we plan to add to OpenSEO over the next three months. +--- + +Have a feature request that belongs here? [Tell us on Discord](https://discord.gg/c9uGs3cFXr). + +## Evergreen + +- Fix bugs +- Improve onboarding + - Easy whether your new to SEO or a Pro +- Improve the UX + +## Highest Priority + +- Add teammates to an account +- Community skill library + - "Advanced" features available in other tools make the tools less approachable to people new to SEO. + - We'll make a community library for these more advanced workflows. +- Web Bot Auth for bot-protected sites for Audit +- Improve In App Agent +- Consistent design across OpenSEO, built on a shared component library +- IndexNow support + +## Soon + +- Prompt tracking for AI search visibility +- Google Business Profile integration +- Google Maps geo-grid rank tracking +- Support multi-user for Docker self hosting + - Guides for popular platforms like Coolify and Railway. +- Configurable daily and weekly email reports + - Scheduled Site Audits + - GSC Reports + - Rank Tracking Alerts +- Custom reports + - We'll expose a Claude Skill so that you can customize to your company or clients. +- Share reports with clients +- Content writing workflows for Agents +- Agent readiness checks in site audits +- Bing Webmaster Tools integration + +## Not planned + +- Content Optimization features like "Keyword Density" +- Advanced Site Audit Features like JS Rendering +- Keyword Gap Analysis Page + - We will support this as a skill. You can ask Claude to turn it into a report. + +Have a feature request that belongs here? [Tell us on Discord](https://discord.gg/c9uGs3cFXr). diff --git a/web/scripts/generate-sitemap.js b/web/scripts/generate-sitemap.js index d7f5e05..d668a40 100644 --- a/web/scripts/generate-sitemap.js +++ b/web/scripts/generate-sitemap.js @@ -28,6 +28,7 @@ const STATIC_PATHS = [ "/backlink-checker", "/open-source-seo", "/google-search-console-mcp", + "/roadmap", ...Object.values(FEATURE_PAGE_SLUGS).map((slug) => `/features/${slug}`), ]; diff --git a/web/src/components/site-footer.tsx b/web/src/components/site-footer.tsx index 504a297..4de7c1f 100644 --- a/web/src/components/site-footer.tsx +++ b/web/src/components/site-footer.tsx @@ -51,6 +51,7 @@ export function SiteFooter({ className }: { className?: string }) {

Company

+ Roadmap Pricing rootRouteImport, } as any) +const MarketingRoadmapRoute = MarketingRoadmapRouteImport.update({ + id: '/roadmap', + path: '/roadmap', + getParentRoute: () => MarketingRoute, +} as any) const MarketingPricingRoute = MarketingPricingRouteImport.update({ id: '/pricing', path: '/pricing', @@ -268,6 +274,7 @@ export interface FileRoutesByFullPath { '/google-search-console-mcp': typeof MarketingGoogleSearchConsoleMcpRoute '/open-source-seo': typeof MarketingOpenSourceSeoRoute '/pricing': typeof MarketingPricingRoute + '/roadmap': typeof MarketingRoadmapRoute '/api/backlink-check': typeof ApiBacklinkCheckRoute '/api/event': typeof ApiEventRoute '/api/subscribe': typeof ApiSubscribeRoute @@ -306,6 +313,7 @@ export interface FileRoutesByTo { '/google-search-console-mcp': typeof MarketingGoogleSearchConsoleMcpRoute '/open-source-seo': typeof MarketingOpenSourceSeoRoute '/pricing': typeof MarketingPricingRoute + '/roadmap': typeof MarketingRoadmapRoute '/api/backlink-check': typeof ApiBacklinkCheckRoute '/api/event': typeof ApiEventRoute '/api/subscribe': typeof ApiSubscribeRoute @@ -347,6 +355,7 @@ export interface FileRoutesById { '/_marketing/google-search-console-mcp': typeof MarketingGoogleSearchConsoleMcpRoute '/_marketing/open-source-seo': typeof MarketingOpenSourceSeoRoute '/_marketing/pricing': typeof MarketingPricingRoute + '/_marketing/roadmap': typeof MarketingRoadmapRoute '/api/backlink-check': typeof ApiBacklinkCheckRoute '/api/event': typeof ApiEventRoute '/api/subscribe': typeof ApiSubscribeRoute @@ -389,6 +398,7 @@ export interface FileRouteTypes { | '/google-search-console-mcp' | '/open-source-seo' | '/pricing' + | '/roadmap' | '/api/backlink-check' | '/api/event' | '/api/subscribe' @@ -427,6 +437,7 @@ export interface FileRouteTypes { | '/google-search-console-mcp' | '/open-source-seo' | '/pricing' + | '/roadmap' | '/api/backlink-check' | '/api/event' | '/api/subscribe' @@ -467,6 +478,7 @@ export interface FileRouteTypes { | '/_marketing/google-search-console-mcp' | '/_marketing/open-source-seo' | '/_marketing/pricing' + | '/_marketing/roadmap' | '/api/backlink-check' | '/api/event' | '/api/subscribe' @@ -616,6 +628,13 @@ declare module '@tanstack/react-router' { preLoaderRoute: typeof ApiBacklinkCheckRouteImport parentRoute: typeof rootRouteImport } + '/_marketing/roadmap': { + id: '/_marketing/roadmap' + path: '/roadmap' + fullPath: '/roadmap' + preLoaderRoute: typeof MarketingRoadmapRouteImport + parentRoute: typeof MarketingRoute + } '/_marketing/pricing': { id: '/_marketing/pricing' path: '/pricing' @@ -792,6 +811,7 @@ interface MarketingRouteChildren { MarketingGoogleSearchConsoleMcpRoute: typeof MarketingGoogleSearchConsoleMcpRoute MarketingOpenSourceSeoRoute: typeof MarketingOpenSourceSeoRoute MarketingPricingRoute: typeof MarketingPricingRoute + MarketingRoadmapRoute: typeof MarketingRoadmapRoute MarketingIndexRoute: typeof MarketingIndexRoute MarketingFeaturesAiBrandVisibilityRoute: typeof MarketingFeaturesAiBrandVisibilityRoute MarketingFeaturesAiSearchPromptsRoute: typeof MarketingFeaturesAiSearchPromptsRoute @@ -820,6 +840,7 @@ const MarketingRouteChildren: MarketingRouteChildren = { MarketingGoogleSearchConsoleMcpRoute: MarketingGoogleSearchConsoleMcpRoute, MarketingOpenSourceSeoRoute: MarketingOpenSourceSeoRoute, MarketingPricingRoute: MarketingPricingRoute, + MarketingRoadmapRoute: MarketingRoadmapRoute, MarketingIndexRoute: MarketingIndexRoute, MarketingFeaturesAiBrandVisibilityRoute: MarketingFeaturesAiBrandVisibilityRoute, diff --git a/web/src/routes/_marketing.tsx b/web/src/routes/_marketing.tsx index f03b296..1ae13e8 100644 --- a/web/src/routes/_marketing.tsx +++ b/web/src/routes/_marketing.tsx @@ -52,6 +52,7 @@ function getMobileNavItems(githubStarCount: string) { label: "Product", links: [ { label: "Features", href: "/features" }, + { label: "Roadmap", href: "/roadmap" }, { label: "Pricing", href: "/pricing" }, ], }, @@ -170,6 +171,12 @@ function MarketingLayout() {
+ + Roadmap + + buildPageSeo({ + title: roadmapFrontmatter.title, + description: roadmapFrontmatter.description, + path: "/roadmap", + titleSuffix: "OpenSEO", + }), + component: Roadmap, +}); + +function Roadmap() { + return ( +
+
+

+ {roadmapFrontmatter.title} +

+

+ {roadmapFrontmatter.description} +

+
+ + + + +
+ ); +}