---
title: Set up your site
description: Prompts for Claude Code, Cursor or Codex to make your repository ready for search engines and AI assistants, from robots.txt to new pages.
---

Run these prompts in a coding agent opened on your website's repository. They work with Next.js, Nuxt, Astro, SvelteKit, Remix and most static site generators. Run the audit first: it tells you which of the other prompts you need.

Each prompt asks the agent to propose changes before it edits. Review every diff.

## Audit the repository

**Run the **SEO and GEO technical audit** on your codebase.**

> Audit this website repository for SEO and AI assistant readiness. Do not edit anything yet.
>
> Detect the framework and how public pages render. Then check each item and answer ok, missing or broken, with the file and line:
>
> 1. Public pages render their main text on the server (SSR or static), not only in the browser.
> 2. robots.txt exists, allows Googlebot, Bingbot, GPTBot, OAI-SearchBot, ChatGPT-User, ClaudeBot, Claude-SearchBot, Claude-User, PerplexityBot and Google-Extended, and names the sitemap.
> 3. sitemap.xml lists every public page with absolute URLs.
> 4. Every page has one absolute canonical URL, a unique title and a meta description.
> 5. No public page has a noindex meta tag or X-Robots-Tag header by mistake.
> 6. Every page has exactly one H1.
> 7. Structured data: Organization site-wide, SoftwareApplication or Product with offers where a price is shown, BreadcrumbList on nested pages, FAQPage only where a FAQ is visible.
> 8. Open Graph and Twitter card tags with an image.
> 9. An llms.txt file at the root.
> 10. Internal links: no broken links, no orphan pages.
> 11. Images: alt text, width and height, modern formats.
>
> End with the fixes ordered by impact. Group them so each one fits in one small pull request.

## robots.txt for AI assistants

**Write a **robots.txt** that lets AI assistants in.**

> Create or update robots.txt for this site.
>
> - Allow GPTBot, OAI-SearchBot, ChatGPT-User, ClaudeBot, Claude-SearchBot, Claude-User, PerplexityBot, Perplexity-User, Google-Extended and Bingbot on all public pages.
> - Keep any existing rules for private paths such as /admin, /api or /account.
> - Add a Sitemap line with the absolute URL of the sitemap.
> - Serve it at /robots.txt in production, using the framework's usual way.
>
> Show me the final file and explain any rule you kept from the old one.

## Sitemap

**Generate a **sitemap.xml** that stays up to date.**

> Add a sitemap.xml to this site.
>
> - Use the framework's maintained sitemap module or built-in feature if one exists. Do not write a custom generator if a standard one does the job.
> - Include every public, indexable page with its absolute URL. Exclude drafts, noindex pages, redirects, admin and API routes.
> - Include dynamic pages such as blog posts or product pages from their data source.
> - Reference it from robots.txt.
>
> Tell me how to check the output locally, and remind me to submit it in Google Search Console and Bing Webmaster Tools.

## Structured data

**Add **structured data** that matches the visible page.**

> Add JSON-LD structured data to this site.
>
> - Organization on every page: name, url, logo, sameAs links to our official profiles.
> - SoftwareApplication (or Product) on the product and pricing pages, with offers that match the prices shown on the page.
> - BreadcrumbList on nested pages.
> - FAQPage only on pages where the questions and answers are visible.
>
> Rules: every value must come from the visible content or the site config. Never add reviews, ratings or FAQ entries that are not on the page. Validate the output with a schema.org validator command or explain how to check it with Google's Rich Results Test.

## llms.txt

**Write an **llms.txt** that tells assistants what you sell.**

> Create /llms.txt for this site, following the llmstxt.org format.
>
> - An H1 with the product name.
> - A one-paragraph summary: what the product does, for whom, and what makes it different. Use facts from the homepage and pricing page only.
> - The plans with their prices and limits, if a pricing page exists.
> - A "When to use this" list: the questions this site answers best.
> - Sections of links to the key pages, each with a one-line description.
>
> Plain English, no marketing superlatives. Show me the file before you add it.

## Markdown versions of pages

**Serve **Markdown versions** of key pages for AI agents.**

> Make the key public pages available as Markdown for AI agents.
>
> - Serve /page.md for each indexable page, and the homepage at /index.md.
> - When a request sends Accept: text/markdown, return the Markdown version.
> - Generate the Markdown from the rendered HTML main content, without navigation, scripts or forms.
> - Add an X-Robots-Tag: noindex header to the Markdown responses, so only the HTML pages are indexed.
> - Link the Markdown versions from llms.txt.
>
> Use a maintained HTML-to-Markdown library. Propose the approach for this framework before you write code.

## Titles and meta descriptions

**Rewrite **titles and descriptions** from Search Console data.**

> Here are my Search Console rows for the last 28 days: [paste query, page, clicks, impressions, position].
>
> For each page with a position of 10 or better and a click-through rate under 2 %:
>
> 1. Find where its title and meta description are defined in this repository.
> 2. Propose a new title (60 characters at most) that contains the main query and the product name, and a meta description (155 characters at most) that states the benefit and a concrete fact.
> 3. List what the old version had that the new one loses.
>
> Show a table of before and after. Do not edit until I approve.

## Write a page for a search

**Draft a **page that answers a search** assistants run.**

> AI assistants run this search when they answer my buyers: "[search from the Sommet action]".
> Answers that missed me named: [competitors]. They cited: [URLs].
> My page for it is [URL or "none"].
>
> 1. If a page exists, propose changes to it. If not, propose a new page at a clear URL. Never create a second page for a search an existing page already targets.
> 2. Put the direct answer in the title, the H1 and the first 2 sentences.
> 3. Cover the points the answers cover, with facts from this repository and from me. Mark every fact you do not have as [to confirm].
> 4. If the search contains "best" or a year, write an honest comparison that lists alternatives, including mine, with who each one fits.
> 5. Link to the page from 2 or 3 related pages, with descriptive anchor text.
>
> Follow the existing components, styles and i18n of the site. Show me the outline before you write the page.

## Comparison and alternatives pages

**Create an **alternatives page** for a competitor, honestly.**

> Create a page "[Competitor] alternatives" at /alternatives/[competitor-slug].
>
> - Start with who [Competitor] is good for, in one fair paragraph.
> - List 4 to 6 alternatives, including my product, each with: who it fits, the main difference, the starting price.
> - Add a comparison table with facts only. Use [to confirm] for any fact you cannot verify.
> - End with a short "How to choose" section.
>
> No invented claims about competitors. Follow the site's existing page structure, components and i18n. Add it to the sitemap and link it from the footer.

## Count AI bot visits from your app

**Send **AI bot requests** to your Sommet drain URL.**

> Add a server middleware that reports AI bot visits to Sommet.
>
> - Match the user agent, case-insensitive, against: GPTBot, OAI-SearchBot, ChatGPT-User, ChatGPT Agent, ClaudeBot, Claude-User, Claude-SearchBot, anthropic-ai, PerplexityBot, Perplexity-User, Gemini-Deep-Research, Google-CloudVertexBot, Googlebot, bingbot, Applebot, meta-externalagent, meta-externalfetcher, FacebookBot, MistralAI-User, DuckAssistBot, Amazonbot, Bytespider, CCBot, Timpibot.
> - On a match, POST a JSON body with the userAgent and a timestamp in milliseconds to the URL in the SOMMET_DRAIN_URL environment variable.
> - Send it in the background with the platform's waitUntil or an equivalent. Never delay the response, never fail the request if the POST fails.
> - Do nothing when SOMMET_DRAIN_URL is not set.
>
> Use the framework's standard middleware. Add SOMMET_DRAIN_URL to the example environment file.

## Internal links

**Find **missing internal links** to your money pages.**

> List the pages of this site that sell: product, pricing, use cases, comparisons, integrations.
>
> For each one, find the pages that mention its topic without linking to it. Propose up to 3 new links per money page, with the sentence where the link goes and descriptive anchor text. No exact-match anchor stuffing, no links in footers only.
>
> Show the list first. Edit only after I approve.
