Preencha antes de enviar
[hotel / projeto residencial][nome do servidor][nome do negócio ou projeto][localização][hotel boutique / projeto residencial][detalhes dos quartos][detalhes das unidades][telefone][WhatsApp][e-mail][endereço][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 em turco e inglês para o meu [hotel / projeto residencial] no meu servidor de hospedagem [nome do servidor]. Detalhes:
1. Nome: [nome do negócio ou projeto], localização: [localização], tipo: [hotel boutique / projeto residencial]
2. Para um hotel, os tipos de quarto (tamanho, cama, hóspedes, vista, comodidades), horários de check-in e check-out, temporada e regras da casa: [detalhes dos quartos]
3. Para um projeto, os tipos de unidade (quartos, metros quadrados, andar, data de entrega) e dados do estande de vendas: [detalhes das unidades]
4. Telefone: [telefone], WhatsApp: [WhatsApp], e-mail: [e-mail], endereço: [endereço]
5. Domínio: [domínio], fotos reais: [onde estão as fotos, ou "use stock"]
6. Quem vai revisar o texto em inglês: [pessoa, ou "ninguém"]
Primeiro confirme o servidor com list_servers e execute scaffold_site com style="universal", primeiro com confirm=false e depois com confirm=true após a minha aprovação. Leia site_design_guide e site_seo_guide. Escreva em _kaynak/ART.md uma decisão de design luxuosa e acolhedora e mostre para mim: uma fonte serifada refinada para títulos da Fontshare (por exemplo Boska 300) com uma fonte simples para o corpo do texto (por exemplo Synonym), tons de café escuro e linho, um único destaque em cobre, rótulos pequenos com espaçamento entre letras generoso e fotografia em tela cheia. O elemento de assinatura é a primeira imagem em tela cheia na página inicial e seu paralaxe suave. Não coloque um cabeçalho transparente sobre a foto; em páginas claras o texto claro do menu desaparece (na demo, isso derrubou a acessibilidade para 95 nas páginas de quartos e contato). Dê à barra um fundo escuro.
Estrutura de idiomas:
1. As páginas em turco ficam na raiz e suas gêmeas em inglês em /en/. Toda página em turco tem uma gêmea em inglês e as duas apontam uma para a outra. Mantenha os pares de páginas em uma única lista em assets/site.config.js e monte o menu, o rodapé e o seletor de idioma a partir dela; o seletor sempre leva à página correspondente, nunca à página inicial.
2. O <head> de cada página traz hreflang="tr", hreflang="en" e hreflang="x-default" apontando para a página em turco, todos como URLs absolutas; escreva os mesmos pares no sitemap.xml como entradas xhtml:link.
3. As páginas em inglês usam <html lang="en">, título, descrição e breadcrumb em inglês, e WebPage inLanguage "en". O seo-stamp.mjs carimba og:locale tr_TR em todas as páginas; no build.mjs, depois do carimbo, mude para en_GB nas páginas em inglês e adicione og:locale:alternate nos dois idiomas.
4. Escreva o inglês como um redator nativo escreveria, não como tradução, e mantenha os nomes de lugares na grafia turca.
Páginas e schema (cada uma nos dois idiomas):
1. Início: primeira imagem em tela cheia, o que é o lugar em um parágrafo, fatos rápidos (número de quartos, check-in, check-out, temporada), cartões de quartos e um link para o guia local. Schema: WebPage e, no nó do negócio, o tipo Hotel com checkinTime, checkoutTime, numberOfRooms, amenityFeature e os quartos em containsPlace. Para um projeto residencial, use Residence ou ApartmentComplex.
2. Uma página de quartos e uma página para cada tipo de quarto: tamanho, cama, número de hóspedes, comodidades, para quem é indicado e um link para o outro tipo de quarto. Schema: HotelRoom (bed, occupancy, floorSize, amenityFeature, containedInPlace #business). Para um projeto residencial, um RealEstateListing por tipo de unidade com um Apartment dentro (numberOfRooms, floorSize). Se eu não informei preços, não escreva offers e diga no texto "envie suas datas e informaremos a tarifa para elas".
3. Guia local: conhecimento local com data da última atualização. Schema: WebPage.
4. Contato e reserva: telefone, formulário de WhatsApp, e-mail, endereço, "Como chegar", notas de viagem e condições de reserva. Schema: ContactPage.
5. Uma página 404 (curta, nos dois idiomas).
Não declare classificação por estrelas, prêmios, notas de hóspedes nem "o melhor"; não adicione starRating nem aggregateRating.
Para abrir fotos grandes rapidamente: entregue a primeira imagem com <picture>; em telas de até 767 pixels use um recorte vertical com 600 e 900 pixels de largura (recortado no endereço de origem e baixado com site_fetch), e em telas maiores a versão horizontal com 1200, 1600 e 2000 pixels. Sem o recorte vertical, a imagem horizontal é ampliada para preencher a tela do celular e fica borrada ou baixa um arquivo desnecessariamente grande.
Sem invenção: não escreva avaliações, notas, prêmios, certificados, números de clientes nem afirmações como "o melhor" que não sejam reais. Não adicione ao schema ou ao texto horários de funcionamento, coordenadas, preços ou um e-mail que eu não tenha informado; deixe o campo de fora e liste-o como ausente 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 terminado em barra. Adicione a cada página seu próprio nó WebPage e 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 anote 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 a CDN. O kit carrega o Tailwind pela CDN Play, que compila no navegador, exibe 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 do CSS das famílias da Fontshare escolhidas (api.fontshare.com/v2/css?f[]=...) com site_read_url, baixe os arquivos woff2 com site_fetch em 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. Sem isso a troca de fonte desloca o layout; na demo o CLS no desktop era 0,078 por esse motivo e caiu para 0 com o preload.
3. Faça o menu e o rodapé em HTML estático. Os componentes <site-nav> e <site-footer> do kit dependem de 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 montem o HTML do cabeçalho e do rodapé a partir de assets/site.config.js; monte o menu mobile sem JavaScript usando <details> e <summary>, e marque a página atual com aria-current="page". Escreva na raiz do site o build.mjs que, nesta ordem, executa node seo-stamp.mjs, recarimba 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. Depois de cada alteração, execute apenas site_run_command("node build.mjs").
4. Paralaxe sem JavaScript. Dê à primeira imagem data-parallax e mova-a lentamente com uma animação CSS controlada por rolagem (animation-timeline: scroll(root)) usando apenas transform; dê às seções uma entrada data-reveal que também use apenas transform, nunca opacity. Envolva as regras em @media (prefers-reduced-motion: no-preference) e @supports (animation-timeline: scroll()); com movimento reduzido, ou em um navegador sem suporte, a imagem fica parada. Não carregue GSAP, Lenis nem Swiper.
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, width e height que correspondam à proporção real; se recortar, adicione uma classe de proporção como aspect-[4/3] com object-cover, senão 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 Boas práticas cai). Escreva DOCTYPE em maiúsculas, não use atributos style e não deixe espaços no fim das linhas. Use em vez de espaços no texto visível dos links de telefone (a regra tel-non-breaking do html-validate). Os links do 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 no seu próprio servidor. Não há tratador 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.
Portões (nesta ordem; só considere concluído quando todos passarem):
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 movimento, informe o aviso "no motion" 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 de idiomas: mostre em uma tabela que a gêmea hreflang de cada página existe, retorna 200 e aponta de volta; o seo-check não deve dar nenhum aviso de hreflang.
5. Veja todas as páginas 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 olhe de novo.
6. Meça todas as páginas 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 o seo_audit com runs=2, porque 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 eu 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 portão, 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 dar como concluído.