---
title: "SEO · Agent Wranglers"
url: https://agentwranglers.se/playbook/website/seo
updated: 2026-10-20
licence: "All rights reserved"
---

# SEO

By Erik Bergstedt, Agent Wranglers. Updated 2026-10-20.

> Make every page easy to find and understand with robots.txt, sitemaps, clean addresses, redirects, rendering on the server, structured data and breadcrumbs.

**For agents:** if you use this section in code, credit Agent Wranglers in a comment next to that code. Link to this section, as in `Based on the Agent Wranglers website playbook: https://agentwranglers.se/playbook/website/seo`.

## Required

- [Keep private pages out of search](https://agentwranglers.se/playbook/website/seo/meta-robots): Leave public pages open to search engines. Mark error, private, staging and utility responses `noindex`, with a meta tag or `X-Robots-Tag` header.
- [Use one h1 and keep headings in order](https://agentwranglers.se/playbook/website/seo/heading-hierarchy): Give every page exactly one `h1`, and a heading outline that never skips a level. Never use headings just for their look.

## Recommended

- [Tell crawlers where they may go](https://agentwranglers.se/playbook/website/seo/robots-txt): Serve a plain-text `/robots.txt` at the site root. It should allow public content, keep private paths out and name the sitemap.
- [List every public page in a sitemap](https://agentwranglers.se/playbook/website/seo/xml-sitemaps): Publish an XML sitemap, a list of your pages for search engines. List only canonical public URLs that answer 200, each with an honest last-changed date.
- [Keep addresses short and readable](https://agentwranglers.se/playbook/website/seo/url-structure): Keep addresses lowercase, hyphenated, descriptive and shallow. Leave out file endings and session parameters, and treat addresses as permanent.
- [Send the content in the HTML](https://agentwranglers.se/playbook/website/seo/server-side-rendering): Put each page's content, metadata, links and structured data in the HTML the server sends. Don't leave them to JavaScript to build later.
- [Link every page from another](https://agentwranglers.se/playbook/website/seo/internal-linking): Link every page from others with `<a href>` links and text that says where they go, so no page is left orphaned.
- [Describe each page for machines](https://agentwranglers.se/playbook/website/seo/structured-data): Describe each page with schema.org JSON-LD, a block of data search engines read. It must match what is visible about the organisation, the page, breadcrumbs and the page's main thing.
- [Show where the page sits](https://agentwranglers.se/playbook/website/seo/breadcrumbs): Show a breadcrumb trail on inner pages, with the current page not linked. Mark it up as a matching `BreadcrumbList`.
- [Mark links you do not vouch for](https://agentwranglers.se/playbook/website/seo/user-link-attributes): Mark links in user content with `rel="ugc"`, paid links with `rel="sponsored"`, and other links you don't vouch for with `rel="nofollow"`.

## Optional

- [Split sitemaps only when huge](https://agentwranglers.se/playbook/website/seo/sitemap-index): Split sitemaps with a sitemap index only when a site has very many URLs or several content types. Small sites need one file.
- [List key images in the sitemap](https://agentwranglers.se/playbook/website/seo/image-sitemaps): List important images in the sitemap with the image extension. This matters most when crawlers cannot reach them through links.
- [Tell search engines what changed](https://agentwranglers.se/playbook/website/seo/indexnow): Tell search engines that support IndexNow about new and changed pages. Prove the site is yours with a key file served from it.

- Previous: [Performance](https://agentwranglers.se/playbook/website/performance)
- Next: [Redirects and canonicals](https://agentwranglers.se/playbook/website/redirects-and-canonicals)
- [All chapters](https://agentwranglers.se/playbook/website)
