fix: update sitemap with pSeo pages, fix dynamic metadata placeholders, and add llms.txt
This commit is contained in:
105
app/layout.tsx
105
app/layout.tsx
@@ -14,22 +14,22 @@ import sql from "@/lib/db";
|
||||
export async function generateMetadata(): Promise<Metadata> {
|
||||
let settings: any = null;
|
||||
try {
|
||||
const result = await sql`SELECT site_name, site_description FROM settings WHERE id = 1 LIMIT 1`;
|
||||
const result = await sql`SELECT * FROM settings WHERE id = 1 LIMIT 1`;
|
||||
if (result.length > 0) settings = result[0];
|
||||
} catch (e) {
|
||||
console.error(e);
|
||||
}
|
||||
const siteName = settings?.site_name || "Muğla Dijital Medya Ajansı";
|
||||
const siteDesc = settings?.site_description || "Muğla Dijital Medya Ajansı olarak sosyal medya yönetimi, reklam yönetimi, SEO, web tasarım ve dijital pazarlama çözümleriyle markanızı öne çıkarıyoruz.";
|
||||
const siteName = settings?.site_name || "Muğla Dijital | Medya & Prodüksiyon Ajansı";
|
||||
const siteDesc = settings?.site_description || "Muğla'nın öncü dijital medya ajansı. Drone çekimi, sosyal medya yönetimi ve profesyonel reklam çözümleri.";
|
||||
const baseUrl = process.env.NEXT_PUBLIC_BASE_URL || "https://mugladijitalmedya.com";
|
||||
|
||||
return {
|
||||
metadataBase: new URL(baseUrl),
|
||||
title: {
|
||||
default: "Muğla Dijital | Medya & Prodüksiyon Ajansı",
|
||||
template: "%s | Muğla Dijital"
|
||||
default: siteName,
|
||||
template: `%s | ${siteName.split('|')[0].trim()}`
|
||||
},
|
||||
description: "Muğla'nın öncü dijital medya ajansı. Drone çekimi, sosyal medya yönetimi ve profesyonel reklam çözümleri.",
|
||||
description: siteDesc,
|
||||
authors: [{ name: "Muğla Dijital" }],
|
||||
creator: "Muğla Dijital",
|
||||
publisher: "Muğla Dijital",
|
||||
@@ -39,10 +39,10 @@ export async function generateMetadata(): Promise<Metadata> {
|
||||
openGraph: {
|
||||
type: "website",
|
||||
locale: "tr_TR",
|
||||
url: "https://mugladijitalmedya.com",
|
||||
url: baseUrl,
|
||||
siteName: "Muğla Dijital",
|
||||
title: "Muğla Dijital | Medya & Prodüksiyon Ajansı",
|
||||
description: "Profesyonel drone çekimi ve dijital medya çözümleri.",
|
||||
title: siteName,
|
||||
description: siteDesc,
|
||||
images: [
|
||||
{
|
||||
url: "/og-image.jpg",
|
||||
@@ -54,74 +54,61 @@ export async function generateMetadata(): Promise<Metadata> {
|
||||
},
|
||||
twitter: {
|
||||
card: "summary_large_image",
|
||||
title: "Muğla Dijital | Medya & Prodüksiyon Ajansı",
|
||||
description: "Dijital dünyada markanızı zirveye taşıyın.",
|
||||
title: siteName,
|
||||
description: siteDesc,
|
||||
images: ["/og-image.jpg"],
|
||||
},
|
||||
robots: {
|
||||
index: true,
|
||||
follow: true,
|
||||
googleBot: {
|
||||
index: true,
|
||||
follow: true,
|
||||
'max-video-preview': -1,
|
||||
'max-image-preview': 'large',
|
||||
'max-snippet': -1,
|
||||
},
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
export default function RootLayout({
|
||||
export default async function RootLayout({
|
||||
children,
|
||||
}: Readonly<{
|
||||
children: React.ReactNode;
|
||||
}>) {
|
||||
return (
|
||||
<html lang="tr">
|
||||
<body
|
||||
className={`${martianMono.variable} antialiased`}
|
||||
>
|
||||
<ClientWrapper>
|
||||
{children}
|
||||
</ClientWrapper>
|
||||
<script
|
||||
type="application/ld+json"
|
||||
dangerouslySetInnerHTML={{
|
||||
__html: JSON.stringify({
|
||||
let settings: any = null;
|
||||
try {
|
||||
const result = await sql`SELECT * FROM settings WHERE id = 1 LIMIT 1`;
|
||||
if (result.length > 0) settings = result[0];
|
||||
} catch (e) {
|
||||
console.error(e);
|
||||
}
|
||||
|
||||
const jsonLd = {
|
||||
"@context": "https://schema.org",
|
||||
"@type": "Organization",
|
||||
"name": "Muğla Dijital Medya Ajansı",
|
||||
"name": settings?.site_name || "Muğla Dijital Medya Ajansı",
|
||||
"url": "https://mugladijitalmedya.com",
|
||||
"logo": "https://mugladijitalmedya.com/logo.png",
|
||||
"sameAs": [
|
||||
"https://www.instagram.com/mugladijitalmedya/",
|
||||
// Add other social media links here
|
||||
],
|
||||
settings?.instagram_url,
|
||||
settings?.twitter_url,
|
||||
settings?.linkedin_url
|
||||
].filter(Boolean),
|
||||
"contactPoint": {
|
||||
"@type": "ContactPoint",
|
||||
"telephone": "+90-XXX-XXX-XXXX", // Should be updated with real phone
|
||||
"telephone": settings?.contact_phone || "+90-252-XXX-XXXX",
|
||||
"contactType": "customer service",
|
||||
"areaServed": "TR",
|
||||
"availableLanguage": ["Turkish", "English"]
|
||||
}
|
||||
})
|
||||
}}
|
||||
/>
|
||||
<script
|
||||
type="application/ld+json"
|
||||
dangerouslySetInnerHTML={{
|
||||
__html: JSON.stringify({
|
||||
};
|
||||
|
||||
const localBusinessLd = {
|
||||
"@context": "https://schema.org",
|
||||
"@type": "LocalBusiness",
|
||||
"name": "Muğla Dijital Medya Ajansı",
|
||||
"name": settings?.site_name || "Muğla Dijital Medya Ajansı",
|
||||
"image": "https://mugladijitalmedya.com/og-image.jpg",
|
||||
"@id": "https://mugladijitalmedya.com",
|
||||
"url": "https://mugladijitalmedya.com",
|
||||
"telephone": "+90-XXX-XXX-XXXX",
|
||||
"telephone": settings?.contact_phone || "+90-252-XXX-XXXX",
|
||||
"address": {
|
||||
"@type": "PostalAddress",
|
||||
"streetAddress": "Muğla",
|
||||
"streetAddress": settings?.office_address || "Muğla",
|
||||
"addressLocality": "Muğla",
|
||||
"addressRegion": "Muğla",
|
||||
"postalCode": "48000",
|
||||
@@ -134,19 +121,25 @@ export default function RootLayout({
|
||||
},
|
||||
"openingHoursSpecification": {
|
||||
"@type": "OpeningHoursSpecification",
|
||||
"dayOfWeek": [
|
||||
"Monday",
|
||||
"Tuesday",
|
||||
"Wednesday",
|
||||
"Thursday",
|
||||
"Friday",
|
||||
"Saturday"
|
||||
],
|
||||
"dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"],
|
||||
"opens": "09:00",
|
||||
"closes": "18:00"
|
||||
}
|
||||
})
|
||||
}}
|
||||
};
|
||||
|
||||
return (
|
||||
<html lang="tr">
|
||||
<body className={`${martianMono.variable} antialiased`}>
|
||||
<ClientWrapper>
|
||||
{children}
|
||||
</ClientWrapper>
|
||||
<script
|
||||
type="application/ld+json"
|
||||
dangerouslySetInnerHTML={{ __html: JSON.stringify(jsonLd) }}
|
||||
/>
|
||||
<script
|
||||
type="application/ld+json"
|
||||
dangerouslySetInnerHTML={{ __html: JSON.stringify(localBusinessLd) }}
|
||||
/>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -28,5 +28,23 @@ export default async function sitemap(): Promise<MetadataRoute.Sitemap> {
|
||||
priority: 0.6,
|
||||
}));
|
||||
|
||||
return [...staticPages, ...projectPages];
|
||||
// Programmatic SEO pages (Services + Locations)
|
||||
const [services, locations] = await Promise.all([
|
||||
sql`SELECT slug FROM services`,
|
||||
sql`SELECT slug FROM locations`
|
||||
]);
|
||||
|
||||
const pSeoPages = [];
|
||||
for (const service of services) {
|
||||
for (const location of locations) {
|
||||
pSeoPages.push({
|
||||
url: `${baseUrl}/services/${service.slug}/${location.slug}`,
|
||||
lastModified: new Date(),
|
||||
changeFrequency: 'weekly' as const,
|
||||
priority: 0.7,
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
return [...staticPages, ...projectPages, ...pSeoPages];
|
||||
}
|
||||
27
public/llms.txt
Normal file
27
public/llms.txt
Normal file
@@ -0,0 +1,27 @@
|
||||
# Muğla Dijital Medya Ajansı
|
||||
|
||||
Muğla'nın öncü dijital medya ve prodüksiyon ajansı. Sosyal medya yönetimi, profesyonel video prodüksiyon, drone çekimi ve dijital reklam stratejileri sunar.
|
||||
|
||||
## Core Services
|
||||
- **Drone & Video Prodüksiyon**: 4K havadan çekimler, tanıtım filmleri, etkinlik çekimleri.
|
||||
- **Sosyal Medya Yönetimi**: İçerik stratejisi, topluluk yönetimi, kreatif tasarım.
|
||||
- **Dijital Reklam Yönetimi**: Google Ads, Meta Ads (Instagram/Facebook) ve hedefli kampanya yönetimi.
|
||||
- **SEO & Web Tasarım**: Modern, hızlı ve arama motoru dostu web çözümleri.
|
||||
|
||||
## Service Areas (pSEO)
|
||||
Muğla Dijital provides localized services across all major districts of Muğla:
|
||||
- Bodrum
|
||||
- Marmaris
|
||||
- Fethiye
|
||||
- Datça
|
||||
- Dalaman
|
||||
- Milas
|
||||
- Menteşe
|
||||
|
||||
## Methodology
|
||||
We combine editorial design aesthetics with data-driven performance marketing. Our process includes deep analysis, strategic planning, creative execution, and transparent reporting.
|
||||
|
||||
## Contact Information
|
||||
- Website: https://mugladijitalmedya.com
|
||||
- Location: Muğla, Turkey
|
||||
- Specialization: Local and international brand positioning in the Muğla region.
|
||||
Reference in New Issue
Block a user