Configures TYPO3 SEO for EXT:seo, metadata, hreflang, XML sitemaps, robots.txt, canonical URLs, structured data, Core Web Vitals, SEO extensions, and monitoring. Use when working on TYPO3 SEO, sitemap setup, meta tags, robots rules, Open Graph, schema.org, canonical URLs, hreflang, or search visibility.
Installer avec Codex ou Claude Copiez ce prompt, collez-le dans Codex, Claude ou un autre assistant, puis laissez-le vérifier la page du skill et l'installer pour vous.
Une commande directe contourne le prompt de vérification. Examinez la source avant de l'exécuter.
Configures TYPO3 SEO for EXT:seo, metadata, hreflang, XML sitemaps, robots.txt, canonical URLs, structured data, Core Web Vitals, SEO extensions, and monitoring. Use when working on TYPO3 SEO, sitemap setup, meta tags, robots rules, Open Graph, schema.org, canonical URLs, hreflang, or search visibility.
Compatibility: TYPO3 v14.x
All SEO configurations in this skill work on TYPO3 v14.
TYPO3 API First: Always use TYPO3's built-in APIs, core features, and established conventions before creating custom implementations. Do not reinvent what TYPO3 already provides. Always verify that the APIs and methods you use exist and are not deprecated in TYPO3 v14 by checking the official TYPO3 documentation.
page {
meta {
# Basic meta tags
viewport = width=device-width, initial-scale=1
robots = index,follow
author = webconsulting
# Open Graph (auto-filled by EXT:seo if page properties set)
og:type = website
og:site_name = {$site.name}
og:locale = de_AT
# Recommended social image: 1200×630 px; add og:image:width / og:image:height when known for faster previews
# Twitter Cards
twitter:card = summary_large_image
twitter:site = @webconsulting
}
}
Dynamic Meta Description
page.meta.description = TEXT
page.meta.description {
# Page description, then slide rootline; add further fallbacks via stdWrap.if / constants (do not use {$...} inside `data` as a getText key)
data = page:description
ifEmpty.data = levelfield:-1,description,slide
htmlSpecialChars = 1
}
Hreflang Tags (Multi-Language)
EXT:seo automatically generates hreflang tags based on site configuration:
Add an x-defaulthreflang (often the primary market language) in site config when you target international SEO — EXT:seo emits tags from languages entries.
Without route enhancers, the underlying page type is usually requested via ?type=1533906435. The exact child sitemap URLs are generated by TYPO3 from the sitemap index. Do not hardcode ?sitemap=... URLs unless your routing explicitly maps them.
TYPO3 v14: Per Breaking #104422, sitemap GET parameters are namespaced as tx_seo[sitemap] and tx_seo[page]. The PageTypeSuffix enhancer above maps only the sitemap page type. Core keeps sitemap index pagination on query parameters by default; a custom route enhancer for pretty child URLs is optional, must define proper aspects, and must avoid enhancer keys that clash with Core:
# Optional — NOT shipped by Core; tune routePath + aspects + mappers to your real sitemap segments.CustomSitemapPagination:type:SimpleroutePath:'sitemap/{sitemap}/{page}'aspects:sitemap:type:StaticRangeMapperstart:'0'end:'99'page:type:StaticRangeMapperstart:'0'end:'999'defaults:page:'0'_arguments:sitemap:'tx_seo/sitemap'page:'tx_seo/page'
This enhancer is optional and custom — Core maps tx_seo/sitemap but leaves pagination on query parameters by design. Test thoroughly after adding.
Pagination & route enhancers: Core maps sitemap.xml to the SEO page type; sitemap index pagination stays on query parameters by design (Core does not ship a ready-made pretty-URL enhancer for tx_seo/page). Any custom enhancer (e.g. CustomSitemapPagination above) is optional and must define proper aspects — do not treat examples as Core defaults.
# Generate robots.txt dynamically
robotstxt = PAGE
robotstxt {
typeNum = 9999
config {
disableAllHeaderCode = 1
additionalHeaders.10.header = Content-Type: text/plain; charset=utf-8
}
10 = TEXT
10.value (
User-agent: *
Allow: /
Disallow: /typo3/
Disallow: /typo3conf/
Disallow: /typo3temp/
Sitemap: https://example.com/sitemap.xml
)
# For a dynamic base URL, derive it from site `base` (YAML), a TypoScript constant, or
# a small data processor — `TEXT.value` does not interpolate `{getEnv:...}` getText.
}
In page properties SEO tab, set "Canonical URL" field.
Via TypoScript:
page.headerData.100 = TEXT
page.headerData.100 {
value = <link rel="canonical" href="https://example.com/specific-page" />
}
Detailed Reference
Read the full guide when the task needs detailed examples, long templates, troubleshooting matrices, appendices, or sections not included above. Keep this file unloaded for narrow tasks so the skill follows progressive disclosure.