feat: implementar SEO completo com sitemap, robots.txt, JSON-LD schema e Google Search Console docs
This commit is contained in:
24
frontend/public/robots.txt
Normal file
24
frontend/public/robots.txt
Normal file
@@ -0,0 +1,24 @@
|
||||
# Octto Engenharia - SEO Configuration
|
||||
# https://www.robotstxt.org/
|
||||
|
||||
User-agent: *
|
||||
Allow: /
|
||||
Disallow: /admin
|
||||
Disallow: /api
|
||||
Disallow: /*.pdf
|
||||
Disallow: /*.jpg
|
||||
|
||||
# Specific crawlers
|
||||
User-agent: Googlebot
|
||||
Allow: /
|
||||
|
||||
User-agent: Bingbot
|
||||
Allow: /
|
||||
|
||||
# Sitemap
|
||||
Sitemap: https://octto-engenharia.com/sitemap.xml
|
||||
Sitemap: https://octto-engenharia.com/en/sitemap.xml
|
||||
Sitemap: https://octto-engenharia.com/es/sitemap.xml
|
||||
|
||||
# Crawl delay (optional)
|
||||
Crawl-delay: 1
|
||||
@@ -8,6 +8,7 @@ import { LanguageProvider } from "@/contexts/LanguageContext";
|
||||
import { ToastProvider } from "@/contexts/ToastContext";
|
||||
import { ConfirmProvider } from "@/contexts/ConfirmContext";
|
||||
import { ColorProvider } from "@/components/ColorProvider";
|
||||
import { JsonLdScript } from "@/components/JsonLdScript";
|
||||
|
||||
const inter = Inter({
|
||||
variable: "--font-body",
|
||||
@@ -17,6 +18,47 @@ const inter = Inter({
|
||||
export const metadata: Metadata = {
|
||||
title: "Octto Engenharia | Movimentação de Carga e Segurança",
|
||||
description: "Especialistas em engenharia de movimentação de carga, projetos de dispositivos de içamento, laudos técnicos e adequação de equipamentos (NR-11/NR-12).",
|
||||
keywords: "engenharia, movimentação de carga, içamento, laudos técnicos, NR-11, NR-12, segurança do trabalho, projetos mecânicos",
|
||||
metadataBase: new URL("https://octto-engenharia.com"),
|
||||
openGraph: {
|
||||
type: "website",
|
||||
locale: "pt_BR",
|
||||
url: "https://octto-engenharia.com",
|
||||
siteName: "Octto Engenharia",
|
||||
title: "Octto Engenharia | Movimentação de Carga e Segurança",
|
||||
description: "Especialistas em engenharia de movimentação de carga, projetos de dispositivos de içamento, laudos técnicos e adequação de equipamentos.",
|
||||
images: [
|
||||
{
|
||||
url: "https://octto-engenharia.com/og-image.jpg",
|
||||
width: 1200,
|
||||
height: 630,
|
||||
alt: "Octto Engenharia",
|
||||
},
|
||||
],
|
||||
},
|
||||
twitter: {
|
||||
card: "summary_large_image",
|
||||
title: "Octto Engenharia | Movimentação de Carga e Segurança",
|
||||
description: "Especialistas em engenharia de movimentação de carga",
|
||||
},
|
||||
robots: {
|
||||
index: true,
|
||||
follow: true,
|
||||
googleBot: {
|
||||
index: true,
|
||||
follow: true,
|
||||
"max-snippet": -1,
|
||||
"max-image-preview": "large",
|
||||
"max-video-preview": -1,
|
||||
},
|
||||
},
|
||||
alternates: {
|
||||
languages: {
|
||||
"pt-BR": "https://octto-engenharia.com/pt",
|
||||
en: "https://octto-engenharia.com/en",
|
||||
es: "https://octto-engenharia.com/es",
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
export default function RootLayout({
|
||||
@@ -26,6 +68,9 @@ export default function RootLayout({
|
||||
}>) {
|
||||
return (
|
||||
<html lang="pt-BR" suppressHydrationWarning>
|
||||
<head>
|
||||
<JsonLdScript />
|
||||
</head>
|
||||
<body
|
||||
className={`${inter.variable} antialiased flex flex-col min-h-screen`}
|
||||
>
|
||||
|
||||
59
frontend/src/app/sitemap.ts
Normal file
59
frontend/src/app/sitemap.ts
Normal file
@@ -0,0 +1,59 @@
|
||||
import { MetadataRoute } from 'next';
|
||||
|
||||
export default async function sitemap(): Promise<MetadataRoute.Sitemap> {
|
||||
const baseUrl = 'https://octto-engenharia.com';
|
||||
const locales = ['', '/en', '/es'];
|
||||
|
||||
// Páginas principais
|
||||
const pages = [
|
||||
{ url: '', changefreq: 'weekly', priority: 1 },
|
||||
{ url: '/servicos', changefreq: 'monthly', priority: 0.8 },
|
||||
{ url: '/projetos', changefreq: 'weekly', priority: 0.8 },
|
||||
{ url: '/contato', changefreq: 'monthly', priority: 0.7 },
|
||||
{ url: '/sobre', changefreq: 'monthly', priority: 0.7 },
|
||||
{ url: '/privacidade', changefreq: 'yearly', priority: 0.5 },
|
||||
{ url: '/termos', changefreq: 'yearly', priority: 0.5 },
|
||||
];
|
||||
|
||||
// Buscar projetos do banco de dados
|
||||
let projects = [];
|
||||
try {
|
||||
const res = await fetch(`${baseUrl}/api/projects`, {
|
||||
next: { revalidate: 3600 }, // Cache por 1 hora
|
||||
});
|
||||
if (res.ok) {
|
||||
projects = await res.json();
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('Erro ao buscar projetos para sitemap:', error);
|
||||
}
|
||||
|
||||
// Gerar URLs
|
||||
const sitemap: MetadataRoute.Sitemap = [];
|
||||
|
||||
// Adicionar páginas principais para cada locale
|
||||
for (const locale of locales) {
|
||||
for (const page of pages) {
|
||||
sitemap.push({
|
||||
url: `${baseUrl}${locale}${page.url}`,
|
||||
lastModified: new Date(),
|
||||
changeFrequency: page.changefreq as 'weekly' | 'monthly' | 'yearly',
|
||||
priority: page.priority,
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
// Adicionar páginas de projetos específicos
|
||||
for (const locale of locales) {
|
||||
for (const project of projects) {
|
||||
sitemap.push({
|
||||
url: `${baseUrl}${locale}/projetos/${project.id}`,
|
||||
lastModified: project.updatedAt ? new Date(project.updatedAt) : new Date(),
|
||||
changeFrequency: 'monthly' as const,
|
||||
priority: 0.6,
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
return sitemap;
|
||||
}
|
||||
82
frontend/src/components/JsonLdScript.tsx
Normal file
82
frontend/src/components/JsonLdScript.tsx
Normal file
@@ -0,0 +1,82 @@
|
||||
'use client';
|
||||
|
||||
export function JsonLdScript() {
|
||||
const organizationSchema = {
|
||||
'@context': 'https://schema.org',
|
||||
'@type': 'LocalBusiness',
|
||||
name: 'Octto Engenharia',
|
||||
description: 'Especialistas em engenharia de movimentação de carga e segurança do trabalho',
|
||||
url: 'https://octto-engenharia.com',
|
||||
logo: 'https://octto-engenharia.com/logo.png',
|
||||
image: 'https://octto-engenharia.com/og-image.jpg',
|
||||
telephone: '+55 13 99803-0036',
|
||||
email: 'contato@octto-engenharia.com',
|
||||
areaServed: {
|
||||
'@type': 'GeoShape',
|
||||
addressCountry: 'BR',
|
||||
},
|
||||
sameAs: [
|
||||
'https://www.instagram.com/octtoengenharia',
|
||||
'https://www.linkedin.com/company/octto-engenharia',
|
||||
],
|
||||
address: {
|
||||
'@type': 'PostalAddress',
|
||||
addressCountry: 'BR',
|
||||
addressLocality: 'Jundiaí',
|
||||
addressRegion: 'SP',
|
||||
},
|
||||
priceRange: '$$',
|
||||
serviceType: [
|
||||
'Engenharia de movimentação de carga',
|
||||
'Projetos de içamento',
|
||||
'Laudos técnicos',
|
||||
'Consultoria de segurança',
|
||||
],
|
||||
};
|
||||
|
||||
const navigationSchema = {
|
||||
'@context': 'https://schema.org',
|
||||
'@type': 'SiteNavigationElement',
|
||||
'url': [
|
||||
{
|
||||
'@type': 'CollectionPage',
|
||||
name: 'Projetos',
|
||||
url: 'https://octto-engenharia.com/projetos',
|
||||
description: 'Portfólio de projetos de engenharia de movimentação de carga',
|
||||
},
|
||||
{
|
||||
'@type': 'CollectionPage',
|
||||
name: 'Serviços',
|
||||
url: 'https://octto-engenharia.com/servicos',
|
||||
description: 'Serviços especializados em engenharia e segurança do trabalho',
|
||||
},
|
||||
{
|
||||
'@type': 'AboutPage',
|
||||
name: 'Sobre',
|
||||
url: 'https://octto-engenharia.com/sobre',
|
||||
description: 'Conheça mais sobre a Octto Engenharia',
|
||||
},
|
||||
{
|
||||
'@type': 'ContactPage',
|
||||
name: 'Contato',
|
||||
url: 'https://octto-engenharia.com/contato',
|
||||
description: 'Entre em contato com a Octto Engenharia',
|
||||
},
|
||||
],
|
||||
};
|
||||
|
||||
return (
|
||||
<>
|
||||
<script
|
||||
type="application/ld+json"
|
||||
dangerouslySetInnerHTML={{ __html: JSON.stringify(organizationSchema) }}
|
||||
suppressHydrationWarning
|
||||
/>
|
||||
<script
|
||||
type="application/ld+json"
|
||||
dangerouslySetInnerHTML={{ __html: JSON.stringify(navigationSchema) }}
|
||||
suppressHydrationWarning
|
||||
/>
|
||||
</>
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user