feat: comprehensive SEO — meta tags, OG, Twitter cards, JSON-LD, sitemap, robots, llms.txt
Adds metadataBase, full OpenGraph + Twitter card tags, keywords, JSON-LD structured data (SoftwareApplication + Organization), sitemap.ts, robots.ts with AI crawler directives, and llms.txt for AI agent discoverability.
This commit is contained in:
@@ -5,8 +5,63 @@ import "./globals.css";
|
||||
const inter = Inter({ subsets: ["latin"] });
|
||||
|
||||
export const metadata: Metadata = {
|
||||
title: "AgentLens",
|
||||
description: "Agent observability that traces decisions, not just API calls",
|
||||
metadataBase: new URL("https://agentlens.vectry.tech"),
|
||||
title: {
|
||||
default: "AgentLens — Agent Observability Platform",
|
||||
template: "%s | AgentLens",
|
||||
},
|
||||
description:
|
||||
"Open-source agent observability that traces decisions, not just API calls. Monitor AI agent reasoning, tool selection, and routing in real-time.",
|
||||
keywords: [
|
||||
"agent observability",
|
||||
"AI monitoring",
|
||||
"LLM tracing",
|
||||
"agent decisions",
|
||||
"AI debugging",
|
||||
"tool selection tracing",
|
||||
"multi-agent observability",
|
||||
"open source",
|
||||
],
|
||||
authors: [{ name: "Vectry" }],
|
||||
creator: "Vectry",
|
||||
openGraph: {
|
||||
type: "website",
|
||||
locale: "en_US",
|
||||
url: "https://agentlens.vectry.tech",
|
||||
siteName: "AgentLens",
|
||||
title: "AgentLens — Agent Observability Platform",
|
||||
description:
|
||||
"Open-source agent observability that traces decisions, not just API calls. Monitor AI agent reasoning, tool selection, and routing in real-time.",
|
||||
images: [
|
||||
{
|
||||
url: "/og-image.png",
|
||||
width: 1200,
|
||||
height: 630,
|
||||
alt: "AgentLens — Agent Observability Platform",
|
||||
},
|
||||
],
|
||||
},
|
||||
twitter: {
|
||||
card: "summary_large_image",
|
||||
title: "AgentLens — Agent Observability Platform",
|
||||
description:
|
||||
"Open-source agent observability that traces decisions, not just API calls. Monitor AI agent reasoning, tool selection, and routing in real-time.",
|
||||
images: ["/og-image.png"],
|
||||
},
|
||||
robots: {
|
||||
index: true,
|
||||
follow: true,
|
||||
googleBot: {
|
||||
index: true,
|
||||
follow: true,
|
||||
"max-video-preview": -1,
|
||||
"max-image-preview": "large",
|
||||
"max-snippet": -1,
|
||||
},
|
||||
},
|
||||
alternates: {
|
||||
canonical: "https://agentlens.vectry.tech",
|
||||
},
|
||||
};
|
||||
|
||||
export default function RootLayout({
|
||||
|
||||
@@ -20,6 +20,43 @@ import {
|
||||
export default function HomePage() {
|
||||
return (
|
||||
<div className="min-h-screen bg-neutral-950">
|
||||
<script
|
||||
type="application/ld+json"
|
||||
dangerouslySetInnerHTML={{
|
||||
__html: JSON.stringify({
|
||||
"@context": "https://schema.org",
|
||||
"@type": "SoftwareApplication",
|
||||
name: "AgentLens",
|
||||
applicationCategory: "DeveloperApplication",
|
||||
operatingSystem: "Web",
|
||||
url: "https://agentlens.vectry.tech",
|
||||
description:
|
||||
"Open-source agent observability platform that traces AI agent decisions, not just API calls.",
|
||||
offers: { "@type": "Offer", price: "0", priceCurrency: "USD" },
|
||||
featureList: [
|
||||
"Agent Decision Tracing",
|
||||
"Real-time Dashboard",
|
||||
"OpenAI Integration",
|
||||
"LangChain Integration",
|
||||
"Self-hosting Support",
|
||||
"Python SDK",
|
||||
],
|
||||
}),
|
||||
}}
|
||||
/>
|
||||
<script
|
||||
type="application/ld+json"
|
||||
dangerouslySetInnerHTML={{
|
||||
__html: JSON.stringify({
|
||||
"@context": "https://schema.org",
|
||||
"@type": "Organization",
|
||||
name: "Vectry",
|
||||
url: "https://vectry.tech",
|
||||
logo: "https://vectry.tech/static/img/logo-icon.png",
|
||||
sameAs: ["https://gitea.repi.fun/repi/agentlens"],
|
||||
}),
|
||||
}}
|
||||
/>
|
||||
{/* Hero Section */}
|
||||
<section className="relative overflow-hidden border-b border-neutral-800/50">
|
||||
<div className="absolute inset-0 bg-gradient-to-b from-emerald-500/5 via-transparent to-transparent" />
|
||||
|
||||
22
apps/web/src/app/robots.ts
Normal file
22
apps/web/src/app/robots.ts
Normal file
@@ -0,0 +1,22 @@
|
||||
import { MetadataRoute } from "next";
|
||||
|
||||
export default function robots(): MetadataRoute.Robots {
|
||||
return {
|
||||
rules: [
|
||||
{ userAgent: "GPTBot", allow: "/" },
|
||||
{ userAgent: "ChatGPT-User", allow: "/" },
|
||||
{ userAgent: "ClaudeBot", allow: "/" },
|
||||
{ userAgent: "PerplexityBot", allow: "/" },
|
||||
{ userAgent: "Applebot-Extended", allow: "/" },
|
||||
{ userAgent: "CCBot", disallow: "/" },
|
||||
{ userAgent: "Google-Extended", disallow: "/" },
|
||||
{ userAgent: "Bytespider", disallow: "/" },
|
||||
{
|
||||
userAgent: "*",
|
||||
allow: "/",
|
||||
disallow: ["/api/", "/dashboard/"],
|
||||
},
|
||||
],
|
||||
sitemap: "https://agentlens.vectry.tech/sitemap.xml",
|
||||
};
|
||||
}
|
||||
9
apps/web/src/app/sitemap.ts
Normal file
9
apps/web/src/app/sitemap.ts
Normal file
@@ -0,0 +1,9 @@
|
||||
import { MetadataRoute } from "next";
|
||||
|
||||
export default function sitemap(): MetadataRoute.Sitemap {
|
||||
const baseUrl = "https://agentlens.vectry.tech";
|
||||
return [
|
||||
{ url: baseUrl, lastModified: new Date(), changeFrequency: "weekly", priority: 1.0 },
|
||||
{ url: `${baseUrl}/dashboard`, lastModified: new Date(), changeFrequency: "daily", priority: 0.8 },
|
||||
];
|
||||
}
|
||||
Reference in New Issue
Block a user