{
  "id": "build-an-astro-static-seo-site",
  "type": "prompts",
  "category": "prompts",
  "locale": "pt",
  "url": "/pt/prompts/build-an-astro-static-seo-site",
  "title": "Prompt para construir um site SEO estático com Astro",
  "description": "Prompt copiável para scaffolding de um site estático Astro totalmente otimizado com coleções de conteúdo, sitemap, og-images e TypeScript.",
  "tools": [
    "Cursor",
    "Claude Code",
    "Codex",
    "Windsurf"
  ],
  "stack": [
    "Astro",
    "TypeScript",
    "Tailwind"
  ],
  "tags": [
    "astro",
    "seo",
    "typescript",
    "tailwind"
  ],
  "difficulty": "medium",
  "updated": "2026-06-08",
  "markdown": "Dê isso ao seu agente para criar um site estático Astro pronto para produção com\ncoleções de conteúdo, Tailwind v4, meta SEO, sitemap e imagens OG por página —\nsem que ele invente integrações incompatíveis ou pule tags canônicas.\n\n## Prompt Principal\n\n```txt title=\"Main Prompt\"\nYou are scaffolding a new Astro static site. Use Astro 5, TypeScript strict mode,\nand Tailwind CSS v4 (via @tailwindcss/vite — NOT the legacy @astrojs/tailwind integration).\n\nRequirements:\n- Initialize with `bun create astro@latest` defaults, then layer in:\n  - A `src/content/blog/` collection with a Zod schema (title, description, pubDate, tags).\n  - A shared `<BaseLayout>` with `<head>` containing: canonical URL, og:title, og:description,\n    og:image (per-page), twitter:card, and the Astro `<ViewTransitions />` component.\n  - `@astrojs/sitemap` integration configured with `customPages` for any dynamic routes.\n  - A `public/robots.txt` that disallows `/api/` and allows everything else.\n  - A `/blog/[slug].astro` dynamic route that renders MDX blog posts.\n  - A `/tags/[tag].astro` route that filters posts by tag.\n  - Tailwind applied globally via `src/styles/global.css` imported in BaseLayout.\n- All components must be `.astro` — no React unless explicitly asked.\n- Export a typed `getStaticPaths` for every dynamic route.\n- Do NOT install `@astrojs/react`, `next`, or any SSR adapter — this is a static build.\n\nStop after listing all files you plan to create or modify. Wait for my approval before writing any code.\n```\n\n## Notas de Implementação\n\n- As coleções de conteúdo do Astro 5 usam `defineCollection` em `src/content.config.ts`, não o caminho antigo\n  `src/content/config.ts` — confirme que o agente usa a localização correta.\n- O Tailwind v4 vem como um plugin Vite; o padrão antigo `integrations: [tailwind()]` no `astro.config.ts`\n  está obsoleto e causará um erro de execução.\n- `getStaticPaths` deve retornar objetos `{ params, props }`; o agente às vezes retorna strings simples.\n\n## Mudanças Esperadas nos Arquivos\n\n```txt\nastro.config.ts                          (new)\nsrc/content.config.ts                    (new)\nsrc/layouts/BaseLayout.astro             (new)\nsrc/pages/index.astro                    (new)\nsrc/pages/blog/[slug].astro              (new)\nsrc/pages/tags/[tag].astro              (new)\nsrc/styles/global.css                    (new)\npublic/robots.txt                        (new)\npackage.json                             (edited)\ntsconfig.json                            (edited)\n```\n\n## Critérios de Aceitação\n\n- `bun run build` encerra com código 0 e sem erros de tipo.\n- Cada página de postagem do blog inclui uma URL canônica única e `og:image` no HTML renderizado.\n- `/sitemap-index.xml` é gerado e contém todas as URLs dos posts do blog.\n- `/robots.txt` existe e desabilita `/api/`.\n\n## Comandos de Teste\n\n```bash\nbun run build\nbun run preview\ncurl -s http://localhost:4321/sitemap-index.xml | grep '<loc>'\ncurl -s http://localhost:4321/robots.txt\nbun run typecheck\n```\n\n## Erros Comuns da IA\n\n- Instalar o pacote obsoleto `@astrojs/tailwind` em vez de `@tailwindcss/vite`.\n- Colocar `content.config.ts` em `src/content/config.ts` (caminho antigo do Astro 4).\n- Esquecer de chamar `getCollection('blog')` dentro de `getStaticPaths` — retornando um array vazio.\n- Adicionar `output: 'server'` ao `astro.config.ts`, o que quebra a exportação estática.\n\n## Prompt de Correção\n\n```txt title=\"Fix Prompt\"\nThe build failed. Check for these issues in order:\n1. Tailwind: remove `@astrojs/tailwind` from integrations and add `@tailwindcss/vite` to the\n   `vite.plugins` array in astro.config.ts.\n2. Content config: the file must be at `src/content.config.ts` (not `src/content/config.ts`).\n3. `getStaticPaths`: each entry must be `{ params: { slug }, props: { post } }`.\nFix only the broken items. Show me the corrected diff.\n```"
}