Fallback Chains¶
Every field resolves through a priority chain; the first non-empty value wins.
Set site-wide defaults in SEOConfig, override per entity in SEOEntity, and
fine-tune per page with SEOOverrides.
General precedence¶
SEOOverrides: per-call overrides (highest)SEOEntity: content entity fieldsSEOConfig: site-wide defaults- Hardcoded defaults: library fallbacks (lowest)
title¶
SEOOverrides.meta_titleSEOEntity.title"Untitled"
The config title_template is then applied unless skip_title_template=True.
description¶
SEOOverrides.meta_descriptionSEOEntity.excerpt- Auto snippet from
SEOEntity.body_html(max 160 chars) ""
The body snippet strips scripts and styles, normalizes whitespace, and truncates on a character boundary with an ellipsis.
canonical¶
SEOOverrides.canonical_url- Normalized route path (full URL normalization pipeline)
robots¶
SEOOverrides.robots- Entity-derived default:
entity_type == "search"→config.search_robots(defaultnoindex,follow)entity.status == "published"→index,follow- otherwise →
config.default_robots(defaultindex,follow)
Open Graph¶
| Field | Chain |
|---|---|
og:title |
SEOOverrides.og_title > resolved title |
og:description |
SEOOverrides.og_description > resolved description |
og:image |
SEOOverrides.og_image > SEOEntity.featured_image > SEOConfig.default_og_image |
The resolved image cascades to twitter:image.
Twitter¶
| Field | Chain |
|---|---|
twitter:card |
SEOOverrides.twitter_card > "summary_large_image" |
twitter:title |
SEOOverrides.twitter_title > resolved og:title |
twitter:description |
SEOOverrides.twitter_description > resolved og:description |
twitter:image |
SEOOverrides.twitter_image > resolved og:image |
schema_jsonld¶
SEOOverrides.omit_schema→NoneSEOOverrides.schema_jsonld(normalized to a list when needed)SchemaRegistrygenerator matching the resolved@type(Python/JS)- Auto-generated schema (when
config.auto_generate_schema)
Breadcrumbs from entity.breadcrumbs are always appended as a
BreadcrumbList, and hooks run last over the assembled payload.
Summary table¶
| Field | Chain |
|---|---|
| title | Override > Entity > "Untitled" + template |
| description | Override > Excerpt > Body snippet > "" |
| canonical | Override > Normalized route |
| robots | Override > Entity status default |
| og:title | Override > Resolved title |
| og:description | Override > Resolved description |
| og:image | Override > Entity image > Config default |
| twitter:card | Override > "summary_large_image" |
| twitter:image | Override > resolved og:image |
| schema_jsonld | Override > Registry > auto-generated + breadcrumbs |