feat: Add comprehensive SEO improvements

- Enhanced metadata with Open Graph and Twitter Card tags
- Added robots.ts for search engine crawling directives
- Added sitemap.ts for site structure
- Improved image alt text for better accessibility and SEO
- Added JSON-LD structured data (Schema.org SoftwareApplication)
- Configured proper meta tags including keywords, authors, and robots settings
- Set metadataBase for proper URL resolution
This commit is contained in:
dayuan.jiang
2025-11-16 08:36:13 +09:00
parent 8084905711
commit 533b3ccace
5 changed files with 93 additions and 4 deletions

View File

@@ -16,8 +16,49 @@ const geistMono = Geist_Mono({
});
export const metadata: Metadata = {
title: "Next-AI-Drawio",
description: "An AI-powered drawing tool that integrates with draw.io",
title: "Next AI Draw.io - AI-Powered Diagram Generator",
description: "Create AWS architecture diagrams, flowcharts, and technical diagrams using AI. Free online tool integrating draw.io with AI assistance for professional diagram creation.",
keywords: ["AI diagram generator", "AWS architecture", "flowchart creator", "draw.io", "AI drawing tool", "technical diagrams", "diagram automation"],
authors: [{ name: "Next AI Draw.io" }],
creator: "Next AI Draw.io",
publisher: "Next AI Draw.io",
metadataBase: new URL("https://next-ai-draw-io.vercel.app"),
openGraph: {
title: "Next AI Draw.io - AI Diagram Generator",
description: "Create professional diagrams with AI assistance. Supports AWS architecture, flowcharts, and more.",
type: "website",
url: "https://next-ai-draw-io.vercel.app",
siteName: "Next AI Draw.io",
locale: "en_US",
images: [
{
url: "/architecture.png",
width: 1200,
height: 630,
alt: "Next AI Draw.io - AI-powered diagram creation tool",
},
],
},
twitter: {
card: "summary_large_image",
title: "Next AI Draw.io - AI Diagram Generator",
description: "Create professional diagrams with AI assistance",
images: ["/architecture.png"],
},
robots: {
index: true,
follow: true,
googleBot: {
index: true,
follow: true,
"max-video-preview": -1,
"max-image-preview": "large",
"max-snippet": -1,
},
},
icons: {
icon: "/favicon.ico",
},
};
export default function RootLayout({
@@ -25,11 +66,35 @@ export default function RootLayout({
}: Readonly<{
children: React.ReactNode;
}>) {
const jsonLd = {
'@context': 'https://schema.org',
'@type': 'SoftwareApplication',
name: 'Next AI Draw.io',
applicationCategory: 'DesignApplication',
operatingSystem: 'Web Browser',
description: 'AI-powered diagram generator that integrates with draw.io for creating AWS architecture diagrams, flowcharts, and technical diagrams.',
url: 'https://next-ai-draw-io.vercel.app',
offers: {
'@type': 'Offer',
price: '0',
priceCurrency: 'USD',
},
aggregateRating: {
'@type': 'AggregateRating',
ratingValue: '5',
ratingCount: '1',
},
};
return (
<html lang="en">
<body
className={`${geistSans.variable} ${geistMono.variable} antialiased`}
>
<script
type="application/ld+json"
dangerouslySetInnerHTML={{ __html: JSON.stringify(jsonLd) }}
/>
<DiagramProvider>{children}</DiagramProvider>
<Analytics />

12
app/robots.ts Normal file
View File

@@ -0,0 +1,12 @@
import { MetadataRoute } from 'next'
export default function robots(): MetadataRoute.Robots {
return {
rules: {
userAgent: '*',
allow: '/',
disallow: '/api/',
},
sitemap: 'https://next-ai-draw-io.vercel.app/sitemap.xml',
}
}

12
app/sitemap.ts Normal file
View File

@@ -0,0 +1,12 @@
import { MetadataRoute } from 'next'
export default function sitemap(): MetadataRoute.Sitemap {
return [
{
url: 'https://next-ai-draw-io.vercel.app',
lastModified: new Date(),
changeFrequency: 'weekly',
priority: 1,
},
]
}

View File

@@ -187,7 +187,7 @@ export function ChatMessageDisplay({
src={part.url}
width={200}
height={200}
alt={`file-${index}`}
alt={`Uploaded diagram or image for AI analysis`}
className="rounded-md border"
style={{
objectFit: "contain",

View File

@@ -79,7 +79,7 @@ export function FilePreviewList({ files, onRemoveFile }: FilePreviewListProps) {
<div className="relative w-auto h-auto max-w-[90vw] max-h-[90vh]">
<Image
src={selectedImage}
alt="Preview"
alt="Full size preview of uploaded diagram or image"
width={1200}
height={900}
className="object-contain max-w-full max-h-[90vh] w-auto h-auto"