Configuration
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:
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:
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:
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:
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:
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:
type: serp-preview
titleContentKey: metaTitle
defaultTitle String Query
The title to show while the titleContentKey field is empty:
type: serp-preview
titleContentKey: metaTitle
defaultTitle: "{{ page.title }} – {{ site.title }}"
descriptionContentKey String
The field whose value becomes the description. Lowercased like titleContentKey:
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:
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:
type: serp-preview
searchConsoleUrl: https://search.google.com/search-console
SERP Preview ×
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.