From 037072d2973030414e2724fda746556cebd9b764 Mon Sep 17 00:00:00 2001 From: Erik Date: Wed, 3 Dec 2025 17:37:41 -0300 Subject: [PATCH] feat: implementar SEO completo com sitemap, robots.txt, JSON-LD schema e Google Search Console docs --- docs/GOOGLE-SEARCH-CONSOLE.md | 132 +++++++++++++++++++++++ frontend/public/robots.txt | 24 +++++ frontend/src/app/layout.tsx | 45 ++++++++ frontend/src/app/sitemap.ts | 59 ++++++++++ frontend/src/components/JsonLdScript.tsx | 82 ++++++++++++++ 5 files changed, 342 insertions(+) create mode 100644 docs/GOOGLE-SEARCH-CONSOLE.md create mode 100644 frontend/public/robots.txt create mode 100644 frontend/src/app/sitemap.ts create mode 100644 frontend/src/components/JsonLdScript.tsx diff --git a/docs/GOOGLE-SEARCH-CONSOLE.md b/docs/GOOGLE-SEARCH-CONSOLE.md new file mode 100644 index 0000000..e9a79e3 --- /dev/null +++ b/docs/GOOGLE-SEARCH-CONSOLE.md @@ -0,0 +1,132 @@ +# Google Search Console Setup Guide + +## Como registrar o Octto Engenharia no Google Search Console + +### 1. Acessar Google Search Console +- Acesse: https://search.google.com/search-console +- Faça login com sua conta Google + +### 2. Adicionar Propriedade +- Clique em "Adicionar propriedade" (Add property) +- Escolha "Domínio" e digite: `octto-engenharia.com` +- Clique em "Continuar" + +### 3. Verificar Propriedade (Método DNS) +A forma mais simples é via registro DNS: + +1. Você receberá um registro TXT como: + ``` + google-site-verification=xxxxxxxxxxxxxxxxxxxxx + ``` + +2. Acesse seu painel de controle de DNS (onde seu domínio está hospedado) + +3. Adicione um registro TXT com o código fornecido + +4. Aguarde a propagação DNS (pode levar até 24h, mas geralmente é imediato) + +5. Clique em "Verificar" no Google Search Console + +### 4. Enviar Sitemap +- No Google Search Console, vá para "Sitemaps" +- Adicione: `https://octto-engenharia.com/sitemap.xml` +- Google começará a indexar automaticamente + +### 5. Verificar Indexação +- Vá para "Cobertura" (Coverage) para verificar quais páginas foram indexadas +- Procure por erros ou avisos +- As URLs em verde foram indexadas com sucesso + +### 6. Submeter URLs Manualmente (Opcional) +Se quiser acelerar a indexação: +- Vá para "Inspeção de URL" +- Digite a URL que quer indexar +- Clique em "Solicitar indexação" + +### 7. Monitorar Performance +- Acesse "Performance" para ver: + - CTR (Click-Through Rate) + - Impressões + - Posição média + - Cliques + +--- + +## Checklist de SEO Implementado + +✅ **Meta Tags** +- Title tags (único para cada página) +- Meta descriptions +- Meta keywords +- Open Graph tags (para compartilhamento social) +- Twitter Card tags + +✅ **Structured Data** +- schema.org JSON-LD ready +- Open Graph implementado + +✅ **Sitemap** +- `sitemap.xml` dinâmico +- Inclui todas as páginas principais +- Inclui todas as páginas de projetos +- Suporta múltiplas línguas (pt, en, es) + +✅ **robots.txt** +- Configurado para permitir indexação +- Direciona para sitemap +- Bloqueia /admin e /api + +✅ **URLs Amigáveis** +- URLs descritivas e em português +- Suporte a múltiplas línguas + +✅ **Performance** +- Next.js otimizado para SEO +- Imagens otimizadas com Image component +- CSS inline onde apropriado + +--- + +## Keywords Recomendadas + +Use estas palavras-chave no conteúdo: + +**Primárias:** +- Engenharia de movimentação de carga +- Projetos de içamento +- Laudos técnicos NR-11 +- Segurança do trabalho +- Adequação de equipamentos + +**Secundárias:** +- Inspeção de equipamentos +- Consultoria de segurança +- Projetos mecânicos +- Engenharia industrial +- Conformidade regulatória + +--- + +## Próximos Passos + +1. **Link Building**: Obter links de sites relevantes (engenharia, segurança) +2. **Local SEO**: Registrar no Google My Business +3. **Content**: Blog com artigos sobre segurança, normativas, casos de sucesso +4. **Social**: Compartilhar conteúdo em redes sociais +5. **Reviews**: Estimular clientes a deixarem avaliações + +--- + +## Dúvidas Frequentes + +**P: Quanto tempo leva para aparecer no Google?** +R: Pode levar de 1 a 3 meses para indexação completa. Com bom SEO e backlinks, acelera. + +**P: Por que não aparece para minhas palavras-chave?** +R: Pode ser concorrência alta. Foque em long-tail keywords (ex: "laudos NR-11 Jundiaí"). + +**P: Preciso pagar para aparecer no Google?** +R: Não, SEO orgânico é grátis. Você pode usar Google Ads para aparecer no topo mais rápido (pago). + +**P: Que keywords devem ser prioritárias?** +R: Foco em "Engenharia de movimentação de carga [sua cidade]" e normativas (NR-11, NR-12). diff --git a/frontend/public/robots.txt b/frontend/public/robots.txt new file mode 100644 index 0000000..e2982ae --- /dev/null +++ b/frontend/public/robots.txt @@ -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 diff --git a/frontend/src/app/layout.tsx b/frontend/src/app/layout.tsx index 04d18df..3f3a7fb 100644 --- a/frontend/src/app/layout.tsx +++ b/frontend/src/app/layout.tsx @@ -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 ( + + + diff --git a/frontend/src/app/sitemap.ts b/frontend/src/app/sitemap.ts new file mode 100644 index 0000000..413cd12 --- /dev/null +++ b/frontend/src/app/sitemap.ts @@ -0,0 +1,59 @@ +import { MetadataRoute } from 'next'; + +export default async function sitemap(): Promise { + 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; +} diff --git a/frontend/src/components/JsonLdScript.tsx b/frontend/src/components/JsonLdScript.tsx new file mode 100644 index 0000000..e97e7f2 --- /dev/null +++ b/frontend/src/components/JsonLdScript.tsx @@ -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 ( + <> +