---
title: "SEO output"
description: "What every published page emits for search engines and answer engines, and the settings that change it."
updated: "2026-08-18"
verifiedAgainst:
  - apps/web/lib/seo.ts
  - apps/web/app/robots.ts
  - packages/shared/src/post-slugs.ts
---

Your blog is built to be read by crawlers as well as people. This page is what it
emits, so you know what is already handled.

## Per page

<PropertyList>
  <Property name="Title and meta description">
    Set per post in the editor, with defaults derived from the article.
  </Property>
  <Property name="Canonical URL">
    Always the primary domain, so aliases and the platform subdomain never
    compete with your own hostname.
  </Property>
  <Property name="Structured data">
    Article level markup, plus FAQ markup where an article carries questions.
  </Property>
  <Property name="Open Graph and Twitter cards">
    Title, description and image, so a shared link renders properly.
  </Property>
  <Property name="Indexing control">
    A post can be excluded from indexing without unpublishing it.
  </Property>
</PropertyList>

## Per site

- A `sitemap.xml` covering your published posts, kept current as you publish.
- A `robots.txt` naming that sitemap.
- Clean, stable slugs. Changing a slug is possible and worth avoiding once a post
  has been indexed.

## GEO

Answer engines quote articles that answer directly, carry visible structure and
cite specifically. The editor's GEO panel checks exactly that, per article. See
[the editor](/content/editor).

## Search Console

Connecting Search Console brings indexing verdicts and query performance into the
workspace, and lets Blogged confirm your sitemap was submitted. See
[Search Console](/analytics/search-console).
