SEO Configuration
The .dcs/seo.yaml file defines SEO metadata, Open Graph tags, Twitter Cards, and structured data for all pages.
Portal-Managed File
This file is automatically updated by the DCS Portal. Manual edits may be overwritten during SEO synchronization.
Overview
yaml
# .dcs/seo.yaml
version: 1
lastUpdated: "2025-12-15T10:30:00Z"
updatedBy: user@example.com
global:
siteName: My Website
siteUrl: https://www.mywebsite.com
titleTemplate: "%s | My Website"
defaultDescription: Welcome to My Website
pages:
home:
title: Home
description: Welcome to our homepageSchema
Root Properties
| Property | Type | Required | Description |
|---|---|---|---|
version | integer | Yes | Schema version (currently 1) |
lastUpdated | string | No | ISO 8601 timestamp of last update |
updatedBy | string | No | Email of user who last updated |
global | object | No | Site-wide SEO defaults |
pages | object | No | Page-specific SEO keyed by slug |
Global Configuration
Site-wide SEO settings that apply as defaults to all pages.
yaml
global:
siteName: Acme Corporation
siteUrl: https://www.acmecorp.com
locale: en_US
defaultTitle: Acme Corporation
defaultDescription: Building tomorrow's solutions today
titleTemplate: "%s | Acme Corporation"
robots: index, followGlobal Properties
| Property | Type | Description |
|---|---|---|
siteName | string | Site name for og:site_name and title suffix |
siteUrl | string | Canonical base URL |
locale | string | Locale in og:locale format (e.g., en_US) |
defaultTitle | string | Default title when page doesn't specify |
defaultDescription | string | Default description (max 160 chars) |
titleTemplate | string | Title template using %s for page title |
robots | string | Default robots directive |
Author Configuration
yaml
global:
author:
name: John Smith
email: john@acmecorp.com
image: /images/team/john.jpg
jobTitle: CEO
sameAs:
- https://linkedin.com/in/johnsmith
- https://twitter.com/johnsmithSocial Handles
yaml
global:
social:
twitter: "@acmecorp"
linkedin: acme-corporation
facebook: acmecorp
instagram: acmecorp
youtube: "@acmecorp"
github: acme-corpDefault Images
yaml
global:
images:
logo: /images/logo.svg
ogDefault: /images/og-default.jpg # 1200x630 recommended
twitterDefault: /images/twitter-default.jpg
favicon: /favicon.icoSearch Engine Verification
yaml
global:
verification:
google: abc123def456 # Google Search Console
bing: xyz789 # Bing Webmaster
duckduckgo: "" # Reserved for future DDG webmaster programGlobal Structured Data
yaml
global:
schemas:
- type: Organization
properties:
name: Acme Corporation
url: https://www.acmecorp.com
logo: https://www.acmecorp.com/images/logo.png
sameAs:
- https://twitter.com/acmecorp
- https://linkedin.com/company/acmecorpPage Configuration
Page-specific SEO overrides the global defaults.
yaml
pages:
home:
title: Home
description: Welcome to Acme Corporation - Building tomorrow's solutions
robots: index, follow
about:
title: About Us
description: Learn about our mission and team
openGraph:
type: website
image: /images/about-og.jpgPage Properties
| Property | Type | Description |
|---|---|---|
title | string | Page title (max 60 chars) |
description | string | Meta description (max 160 chars) |
keywords | string | Comma-separated keywords |
canonical | string | Canonical URL override |
robots | string | Page-specific robots directive |
noTitleTemplate | boolean | Use title as-is without template |
openGraph | object | Open Graph overrides |
twitter | object | Twitter Card overrides |
schemas | array | Page-specific JSON-LD schemas |
alternates | array | Alternate language versions |
Open Graph Configuration
yaml
pages:
blog-post:
openGraph:
type: article
title: My Blog Post
description: An insightful article about...
image: /images/posts/my-post.jpg
imageAlt: Featured image for the blog post
imageWidth: 1200
imageHeight: 630
publishedTime: "2025-01-15T10:00:00Z"
modifiedTime: "2025-01-16T14:30:00Z"
author: John Smith
section: Technology
tags:
- web development
- seo
- best practicesTwitter Card Configuration
yaml
pages:
about:
twitter:
card: summary_large_image
title: About Acme Corporation
description: Learn about our mission
image: /images/about-twitter.jpg
imageAlt: Acme team photo
creator: "@johnsmith"Structured Data (JSON-LD)
Add page-specific schema.org structured data:
yaml
pages:
home:
schemas:
- type: WebSite
properties:
name: Acme Corporation
url: https://www.acmecorp.com
potentialAction:
"@type": SearchAction
target: https://www.acmecorp.com/search?q={search_term_string}
query-input: required name=search_term_string
about:
schemas:
- type: AboutPage
properties:
name: About Acme Corporation
description: Learn about our mission and team
faq:
schemas:
- type: FAQPage
properties:
mainEntity:
- "@type": Question
name: What is DCS?
acceptedAnswer:
"@type": Answer
text: DCS is a content management platform...Alternate Languages (hreflang)
yaml
pages:
home:
alternates:
- hreflang: en-US
href: https://www.acmecorp.com/
- hreflang: es-ES
href: https://es.acmecorp.com/
- hreflang: x-default
href: https://www.acmecorp.com/Editor Schema
Enable intelligent autocompletion in VS Code:
json
{
"yaml.schemas": {
"https://schema.duffcloudservices.com/1.0.0/seo.json": "/.dcs/seo.yaml"
}
}Full Example
yaml
version: 1
lastUpdated: "2025-12-15T10:30:00Z"
updatedBy: marketing@acmecorp.com
global:
siteName: Acme Corporation
siteUrl: https://www.acmecorp.com
locale: en_US
defaultTitle: Acme Corporation
defaultDescription: Building tomorrow's solutions with innovative technology
titleTemplate: "%s | Acme Corporation"
robots: index, follow
author:
name: Acme Team
email: info@acmecorp.com
social:
twitter: "@acmecorp"
linkedin: acme-corporation
images:
logo: /images/logo.svg
ogDefault: /images/og-default.jpg
twitterDefault: /images/twitter-default.jpg
verification:
google: abc123def456
schemas:
- type: Organization
properties:
name: Acme Corporation
url: https://www.acmecorp.com
logo: https://www.acmecorp.com/images/logo.png
pages:
home:
title: Home
description: Welcome to Acme Corporation - Your trusted technology partner
openGraph:
type: website
schemas:
- type: WebSite
properties:
name: Acme Corporation
url: https://www.acmecorp.com
about:
title: About Us
description: Learn about our mission, values, and the team behind Acme Corporation
openGraph:
image: /images/about-og.jpg
schemas:
- type: AboutPage
properties:
name: About Acme Corporation
services:
title: Our Services
description: Explore our comprehensive range of technology services and solutions
noTitleTemplate: false
contact:
title: Contact Us
description: Get in touch with our team - we're here to help
schemas:
- type: ContactPage
properties:
name: Contact Acme Corporation
blog-post:
openGraph:
type: article
twitter:
card: summary_large_imageRelated
- SEO Management — Portal SEO editor
- pages.yaml — Page definitions
- content.yaml — Text content configuration
