Complete SEO configuration for CMS pages includes meta tags, Open Graph (Facebook/LinkedIn), Twitter Card, and language tags.
Basic Meta Tags
In the layout:
<title>{{ html_title \| default: title }}</title>
<meta name="description" content="{{ html_description \| default: tagline }}">
<meta name="keywords" content="{{ html_keywords }}">
<meta name="robots" content="index, follow">
<meta name="author" content="{{ brand }}">
In the page fields:
{
"html_title": "MyCompany - Company Monitoring \| Disease Forecasts",
"html_description": "AI system for company monitoring. Disease forecasts, weather station, spraying log.",
"html_keywords": "company, monitoring, grape diseases, powdery mildew"
}
Open Graph (Facebook, LinkedIn)
In the layout:
<meta property="og:type" content="website">
<meta property="og:url" content="{{ canonical_url }}">
<meta property="og:title" content="{{ og_title \| default: title }}">
<meta property="og:description" content="{{ og_description \| default: html_description }}">
<meta property="og:image" content="{{ og_image }}">
<meta property="og:locale" content="{{ lang }}_{{ lang \| upcase }}">
<meta property="og:site_name" content="{{ brand }}">
In the page fields:
{
"canonical_url": "https://mycompany.com/dashboard",
"og_title": "MyCompany Dashboard - Discover Your Microclimate",
"og_description": "LoRa sensor for company monitoring. From 99 EUR.",
"og_image": "https://example.com/og-image.jpg"
}
OG image dimensions: 1200x630 px (1.91:1 format)
Twitter Card
In the layout:
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:url" content="{{ canonical_url }}">
<meta name="twitter:title" content="{{ og_title \| default: title }}">
<meta name="twitter:description" content="{{ og_description \| default: tagline }}">
<meta name="twitter:image" content="{{ og_image }}">
Canonical URL and hreflang
For multilingual pages:
<link rel="canonical" href="{{ canonical_url }}">
<link rel="alternate" hreflang="pl" href="{{ hreflang_pl }}">
<link rel="alternate" hreflang="en" href="{{ hreflang_en }}">
<link rel="alternate" hreflang="x-default" href="{{ hreflang_pl }}">
In the fields:
{
"canonical_url": "https://mycompany.com/dashboard",
"hreflang_pl": "https://mycompany.com/dashboard",
"hreflang_en": "https://mycompany.com/dashboard-en"
}
JSON-LD Structured Data
For better indexing by Google:
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "SoftwareApplication",
"name": "{{ title }}",
"description": "{{ html_description }}",
"brand": {
"@type": "Organization",
"name": "{{ brand }}"
},
"applicationCategory": "BusinessApplication",
"operatingSystem": "Web"
}
</script>
SEO Testing
| Tool | URL |
|---|---|
| Facebook Debugger | developers.facebook.com/tools/debug/ |
| Twitter Card Validator | cards-dev.twitter.com/validator |
| Google Rich Results | search.google.com/test/rich-results |
| LinkedIn Post Inspector | linkedin.com/post-inspector/ |
SEO Checklist
-
<title>- unique, 50-60 characters -
<meta description>- 150-160 characters -
og:image- 1200x630px, < 5MB -
canonical- one URL per page -
hreflang- all language versions - JSON-LD - type of business/product