Configuration

Every blueprint property the SERP Preview section takes, and the order in which it resolves the title and the description.

Section Properties

Properties marked Query accept Kirby's query language, so {{ site.title }} resolves against the current model. A query that resolves to something no string can hold leaves the placeholder empty.

label String

The heading above the snippet. It defaults to the Panel language's own translation, which is SERP Preview in English, shipped in English, German, French and Dutch; other Panel languages get the English label. It accepts a translation key or a map of languages:

sections/serp-preview.yml
type: serp-preview
label: Search Result

faviconUrl String Query

The icon in front of the site name. Without it the snippet drops the icon and its circle:

sections/serp-preview.yml
type: serp-preview
faviconUrl: "{{ site.favicon.toFile.url }}"

siteTitle String Query

The site name next to the favicon, and the part after the separator on the title line. Defaults to the site's own title:

sections/serp-preview.yml
type: serp-preview
siteTitle: Kirby Tools

siteUrl String Query

What the URL line starts with. Defaults to the URL Kirby runs under, so a staging install shows its own host until the production one is set here. The page's preview URL path follows, with its language prefix in a multi-language site; a blueprint whose options.preview is false leaves the line at the site URL:

sections/serp-preview.yml
type: serp-preview
siteUrl: https://kirby.tools

titleSeparator String Query

What sits between the page title and the site title. Defaults to an en dash, , and is only used when neither titleContentKey nor defaultTitle supplies a title:

sections/serp-preview.yml
type: serp-preview
titleSeparator: "|"

titleContentKey String

The field whose value becomes the title line, followed as the editor types. Name it as it appears in the blueprint; the section lowercases it to match Kirby's content keys. Without it, the title line reads the page title as last saved; titleContentKey: title makes it follow the title field instead:

sections/serp-preview.yml
type: serp-preview
titleContentKey: metaTitle

defaultTitle String Query

The title to show while the titleContentKey field is empty:

sections/serp-preview.yml
type: serp-preview
titleContentKey: metaTitle
defaultTitle: "{{ page.title }} – {{ site.title }}"

descriptionContentKey String

The field whose value becomes the description. Lowercased like titleContentKey:

sections/serp-preview.yml
type: serp-preview
descriptionContentKey: metaDescription

defaultDescription String Query

The description to show while the descriptionContentKey field is empty. Without either, the snippet has no description line at all:

sections/serp-preview.yml
type: serp-preview
descriptionContentKey: metaDescription
defaultDescription: "{{ site.metaDescription }}"

searchConsoleUrl String Query

Adds a button below the snippet that opens the given URL in a new tab. Without it, no button appears:

sections/serp-preview.yml
type: serp-preview
searchConsoleUrl: https://search.google.com/search-console
Kirby Panel
Kirby Toolshttps://kirby.tools/about

About Kirby Tools – Plugins for the Kirby Panel

Kirby Tools builds Panel plugins for editors and developers: AI content generation, translation, SEO analysis and navigation.

Title and Description Resolution

The title line takes the first of these that has a value:

The titleContentKey Field

Whatever the editor has typed into it, saved or not.

defaultTitle

The fallback, after its queries are resolved.

The Page Title, Separator and Site Title

Joined with spaces, so About – Kirby Tools. The page title here is the saved one, so this line only changes on save.

The description takes the first of these that has a value, and is left out entirely when neither does:

The descriptionContentKey Field

Whatever the editor has typed into it.

defaultDescription

The fallback, after its queries are resolved.

Both lines are clamped the way Google clamps them – one line for the title, two for the description. To shorten the text itself rather than clip it, see Custom Formatters.