Preencha antes de enviar
[nome do servidor][nome do negócio][encanador / chaveiro / serviço de ar-condicionado / outro][nome no Business Profile][serviços][regiões][local da oficina][telefone][WhatsApp][endereço, ou "escondo meu endereço"][horários][domínio]
Use minha conexão com o Opus Growth para isso. Se você não encontrar a ferramenta de que precisa, procure entre as ferramentas do Opus Growth (com search_tools, se estiver na sua lista); se não conseguir acessar as ferramentas de forma alguma, não adivinhe, me avise.
Crie um site novo para o meu negócio do zero no meu servidor de hospedagem [nome do servidor]. Detalhes:
1. Nome do negócio: [nome do negócio], ramo: [encanador / chaveiro / serviço de ar-condicionado / outro]
2. Nome ou domínio no Business Profile: [nome no Business Profile]
3. Serviços (cada um terá sua própria página): [serviços]
4. Bairros/regiões que atendo e onde fica minha oficina: [regiões], [local da oficina]
5. Telefone: [telefone], WhatsApp: [WhatsApp], endereço: [endereço, ou "escondo meu endereço"], horário de funcionamento: [horários]
6. Domínio: [domínio], preferência de cor: [preferência de cor], fotos reais: [onde estão as fotos, ou "nenhuma"]
7. Trabalhos que não faço: [serviços não oferecidos]
Primeiro, leia a ficha [nome no Business Profile] com gbp_location_details. Compare em uma única tabela o nome, telefone, endereço, site, horário de funcionamento, categoria principal, serviços e link do mapa com o que passei a você. Onde houver diferença, pergunte qual está certo; não altere nada no Business Profile. No site, use o nome, o endereço e o telefone exatamente como estão escritos no Business Profile. Se a ficha esconde o endereço, não mostre endereço de rua no site e liste apenas as áreas atendidas. Pegue as coordenadas somente do pino do mapa na ficha, nunca as invente. Escolha o subtipo de LocalBusiness no schema a partir da categoria principal (Plumber, Locksmith, HVACBusiness, Electrician e assim por diante).
Depois, confirme o servidor com list_servers, chame scaffold_site com style="service" e confirm=false primeiro para mostrar o que será sobrescrito, e execute com confirm=true após a minha aprovação. Leia site_design_guide e site_seo_guide. Antes de escrever código, escreva a decisão de design em _kaynak/ART.md e mostre para mim: um layout minimalista suíço, uma fonte display grotesca pesada da Fontshare (por exemplo Cabinet Grotesk 800) com uma fonte de texto simples (por exemplo General Sans 400 e 600), fundo off-white, texto azul-marinho escuro, uma cor de destaque com contraste de pelo menos 4,5:1 com texto branco e um verde de WhatsApp separado. O elemento de assinatura é um par de botões grandes fixos na parte inferior da tela no celular: "Ligar agora" e "Enviar mensagem no WhatsApp".
Páginas e schema:
1. Início: a primeira tela diz em uma frase o que você faz e quais regiões atende, com botões de ligar e WhatsApp e horário de funcionamento. Depois, cards de serviços, cards de regiões, as etapas de um atendimento e um FAQ de 4 perguntas. Schema: WebPage, FAQPage.
2. Uma página de serviços e uma página por serviço: o primeiro parágrafo responde diretamente "o que você faz e como"; depois sintomas, as etapas no local, quando é emergência, como o preço é definido (sem inventar valores), 3 FAQs específicos da página, o autor e a data. Schema: Service (provider #business, areaServed as regiões), FAQPage.
3. Uma página de região para cada bairro/região. Elas NÃO podem ser cópias com o nome da cidade trocado. Cada uma traz os nomes dos bairros daquela região, as falhas mais frequentes que você encontra ali considerando o tipo de construção local (uma tabela cujas linhas mudam de região para região), uma nota sobre deslocamento e estacionamento, a distância da oficina, dois FAQs específicos daquela região e links para as outras áreas. Escreva pelo menos 300 palavras de texto original; se a verificação de duplicidade do seo-check encontrar mais de 50% de sobreposição entre duas páginas de região, reescreva-as. Não crie página para uma região que eu não atendo de verdade. Schema: AdministrativeArea (containedInPlace a província, containsPlace os bairros), Service, FAQPage.
4. Sobre: quem você é, como trabalha, com quais equipamentos e quais serviços você não aceita. Schema: AboutPage, e Person se eu informar um nome real.
5. Contato: NAP, horários, um link "Como chegar" e o formulário de WhatsApp. Schema: ContactPage com mainEntity #business.
6. Uma página de aviso de privacidade e uma página 404.
Sem invenção: não escreva avaliações, notas, prêmios, certificados, número de clientes nem afirmações como "o melhor" que não sejam reais. Não adicione ao schema ou ao texto horários, coordenadas, preços ou e-mail que eu não informei; deixe o campo de fora e liste-o como faltante no relatório. Não use travessões longos nem slogans genéricos, e faça o primeiro parágrafo de cada página responder diretamente à pergunta daquela página.
Trabalho de SEO compartilhado: cada página recebe um title único de 48 a 60 caracteres, uma description de 145 a 158 caracteres, um único H1 e um canonical terminando em barra. Adicione o nó WebPage próprio de cada página e um BreadcrumbList, ligados ao grafo base por @id. No robots.txt escreva Allow: / para Googlebot, Bingbot, OAI-SearchBot, ChatGPT-User, GPTBot, Claude-SearchBot, Claude-User, ClaudeBot, PerplexityBot, Perplexity-User, Google-Extended, Applebot-Extended e CCBot, explique a decisão em um comentário e indique o que mudar se eu quiser bloquear os rastreadores de treinamento. O sitemap.xml traz datas lastmod reais. O llms.txt descreve o negócio com precisão em duas frases e lista o NAP e as páginas importantes com links.
Configuração técnica (o caminho padrão do kit não é usado neste site, pelos motivos abaixo):
1. Compile o Tailwind e elimine o CDN. O kit carrega o Tailwind pelo Play CDN, que compila no navegador, mostra um aviso no console e reduz o desempenho no celular. Escreva _kaynak/package.json com site_write_file, instale com site_run_command("cd _kaynak && npm i -D tailwindcss@3 html-validate", background=true) e aguarde com site_command_status. Em _kaynak/tailwind.config.js defina content como "./*.html", "./**/*.html", "!./_kaynak/**" e "./_kaynak/chrome.mjs". Mova as regras @font-face, as linhas @tailwind e o anel de foco, o skip link e a proteção contra overflow do app.css do kit para _kaynak/site.css. Gere a saída em assets/app.css, porque o design-check.mjs procura as fontes nesse arquivo, e adicione ?v=<hash do conteúdo> ao link em todas as páginas para que o cache de borda nunca sirva o arquivo antigo.
2. Hospede as fontes você mesmo. Leia a URL de CSS das famílias da Fontshare que você escolheu (api.fontshare.com/v2/css?f[]=...) com site_read_url, baixe os arquivos woff2 com site_fetch para assets/fonts/ e declare-os com @font-face e font-display: swap. Faça preload de cada peso usado acima da dobra com <link rel="preload" as="font" type="font/woff2" crossorigin>, no máximo três arquivos. Se pular isso, a troca de fontes desloca o layout; na demonstração, o CLS no desktop foi 0,078 por esse motivo e caiu para 0 com o preload.
3. Torne o menu e o rodapé HTML estático. Os componentes <site-nav> e <site-footer> do kit rodam com JavaScript, e a maioria dos rastreadores de IA nunca vê o menu, o endereço nem o telefone. Remova os scripts chrome.js e motion.js de todas as páginas. Em _kaynak/chrome.mjs escreva duas funções que montam o HTML do cabeçalho e do rodapé a partir de assets/site.config.js; construa o menu mobile sem JavaScript usando <details> e <summary>, e marque a página atual com aria-current="page". Escreva build.mjs na raiz do site que, em ordem, executa node seo-stamp.mjs, reaplica tudo entre <!-- chrome:header:start --> e <!-- chrome:header:end --> (e o mesmo para o rodapé) em cada página, compila o Tailwind e atualiza o hash no link do CSS. Após cada alteração, execute apenas site_run_command("node build.mjs").
4. Sem animação. Não carregue GSAP, Lenis, Swiper nem qualquer script de animação neste site; os visitantes chegam pelo celular para ligar ou enviar mensagem rapidamente.
5. Reduza as imagens. Baixe cada foto com site_fetch em arquivos separados usando resize="480x", "800x", "1200x", "1600x", image_format="webp" e qualidade entre 60 e 68. Dê a cada <img> srcset, sizes, e width e height que correspondam à proporção real; se você recortar, adicione uma classe de proporção como aspect-[4/3] com object-cover, caso contrário o layout se desloca quando a imagem carrega. A imagem da primeira tela recebe fetchpriority="high" e não é lazy; todas as outras recebem loading="lazy". Baixe a imagem de compartilhamento como JPG 1200x630 com site_fetch.
6. Pequenos detalhes que custam pontos: adicione um favicon SVG com <link rel="icon"> (senão o navegador solicita /favicon.ico, o 404 aparece como erro no console e a nota de Boas práticas cai). Escreva DOCTYPE em maiúsculas, não use atributos style e não deixe espaços no final das linhas. Use em vez de espaços no texto visível dos links de telefone (regra tel-non-breaking do html-validate). Links no menu, rodapé, breadcrumb e títulos devem ter pelo menos 44 pixels de altura e largura. Não incorpore um iframe do Google Maps; o site não deve fazer requisições externas, então mostre o endereço e um link "Como chegar".
7. Nenhuma requisição pode sair do site: fontes, scripts, estilos e imagens ficam todos no seu próprio servidor. Não há manipulador de formulário, então o formulário de contato é um formulário method="get" apontando para https://wa.me/[número do WhatsApp] com uma textarea pré-preenchida chamada "text"; não é necessário JavaScript.
Critérios de aprovação (nesta ordem; não diga que terminou até que todos passem):
1. Execute node build.mjs com site_run_command e depois node seo-check.mjs: 0 erros, 0 avisos. Um aviso de conteúdo duplicado significa que duas páginas não são diferentes o bastante; reescreva-as.
2. node design-check.mjs: 0 erros. Se você escolheu um estilo sem animação, informe o aviso de "sem animação" como uma decisão deliberada, com o motivo.
3. _kaynak/node_modules/.bin/html-validate em todos os arquivos HTML: 0 erros. Coloque uma linha _kaynak/ em um arquivo .htmlvalidateignore na raiz do site para que as dependências não sejam analisadas.
4. Verificação do NAP: mostre em uma tabela que o nome, o endereço e o telefone no site correspondem, letra por letra, à saída de gbp_location_details.
5. Veja cada página com site_preview em view="mobile", view="desktop" e também em larguras de 360 e 768. Corrija rolagem horizontal, títulos que transbordam, botões apertados ou texto ilegível e confira de novo.
6. Meça cada página com core_web_vitals em strategy="mobile" e strategy="desktop", e obtenha as notas de acessibilidade, boas práticas e SEO com seo_audit. A meta no mobile é 100 em acessibilidade, boas práticas e SEO e pelo menos 95 em desempenho; no desktop, pelo menos 95 nos quatro. Em uma página que não atingir a meta, execute core_web_vitals com resources=true, encontre o elemento LCP e qualquer imagem grande demais, corrija e repita seo_audit com runs=2, pois uma única execução de laboratório pode oscilar.
7. As requisições de rede não devem conter nenhum endereço fora do domínio do próprio site.
Depois de publicar: envie o sitemap.xml com gsc_submit_sitemap e verifique a página inicial e as três páginas mais importantes com gsc_inspect_urls. Nenhuma ferramenta consegue clicar em "Solicitar indexação"; liste o que preciso solicitar manualmente no Search Console.
Termine com este relatório: a lista de páginas com as notas de mobile e desktop por página em uma tabela (desempenho, acessibilidade, boas práticas, SEO, LCP, CLS), o resultado de cada critério, as correções que você fez e as informações que ainda precisa de mim. Se alguma meta não foi atingida, diga isso claramente em vez de dizer que terminou.