# tr-seo — SEO Audit and Fix
Source: [tr-seo — SEO Audit and Fix](https://typeroll.com/docs/skills/tr-seo/)
> Audit your site's search visibility and fix meta descriptions, Open Graph images, structured data, and more.
**Triggers on:** “SEO”, “meta descriptions”, “Google ranking”, “structured data”, “sitemap”, “sökoptimering”
## What Typeroll handles automatically
[Section titled “What Typeroll handles automatically”](https://typeroll.com/docs/skills/tr-seo/#what-typeroll-handles-automatically)
You don’t need to configure these — they work out of the box:
| Feature | How |
| --------------------------- | ---------------------------------------------------------------------- |
| `` | From site `language` setting (per-page override available) |
| `
` | `seo_title` if set, otherwise `title + default_seo_suffix` |
| `` | From `page.seo_description` |
| `` | From `page.noindex` |
| Open Graph tags | From `seo_title`, `seo_description`, `og_image` |
| `` | From `page.canonical_url` (defaults to page URL) |
| Article JSON-LD | Automatic for `kind: "article"` pages with `author` + `date_published` |
## What the AI agent audits and fixes
[Section titled “What the AI agent audits and fixes”](https://typeroll.com/docs/skills/tr-seo/#what-the-ai-agent-audits-and-fixes)
### Meta descriptions
[Section titled “Meta descriptions”](https://typeroll.com/docs/skills/tr-seo/#meta-descriptions)
* Checks every page for a `seo_description`
* Writes unique 150–160 char descriptions — compelling, keyword-natural, not keyword-stuffed
* Uses `batch_update_pages` for efficiency
### Page titles
[Section titled “Page titles”](https://typeroll.com/docs/skills/tr-seo/#page-titles)
* Sets `default_seo_suffix` (e.g. “ — Acme Studio”) via site settings
* Sets explicit `seo_title` on the homepage (to avoid “Acme Studio — Acme Studio”)
### Open Graph images
[Section titled “Open Graph images”](https://typeroll.com/docs/skills/tr-seo/#open-graph-images)
* Uploads images via CDN and sets `og_image` on homepage and key landing pages
* OG images should be 1200×630px — Typeroll doesn’t resize
### Structured data
[Section titled “Structured data”](https://typeroll.com/docs/skills/tr-seo/#structured-data)
* Adds `LocalBusiness` or `Organization` JSON-LD to the homepage
* Adds `ContactPage` to contact pages
* `json_ld` field takes the schema as a JSON string (not a nested object)
### Headings
[Section titled “Headings”](https://typeroll.com/docs/skills/tr-seo/#headings)
* Checks every page for exactly one `
`
* Fixes pages with zero or multiple H1s
## Example prompts
[Section titled “Example prompts”](https://typeroll.com/docs/skills/tr-seo/#example-prompts)
```plaintext
Audit and fix the SEO for all pages on this site.
```
```plaintext
Add LocalBusiness structured data to the homepage.
Address: Kungsgatan 5, Stockholm. Phone: 08-123 456.
```
```plaintext
Set a default title suffix and write meta descriptions for all pages.
```
## Common pitfalls
[Section titled “Common pitfalls”](https://typeroll.com/docs/skills/tr-seo/#common-pitfalls)
**“Acme Studio — Acme Studio”** — happens when `title` and `default_seo_suffix` are the same text. Fix: set an explicit `seo_title` for the homepage.
**JSON-LD is a string** — the `json_ld` field takes the entire schema as a JSON-encoded string, not a nested object. The AI agent handles this correctly when using the `update_page` tool.
**OG images need absolute URLs** — Use the absolute URL returned by the media API for the configured media host. Don’t use relative paths.
**`canonical_url` + `noindex` together** — noindexed pages don’t pass equity, so a canonical on a noindexed page is redundant. Use one or the other.