Skip to content

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 homepage

Schema

Root Properties

PropertyTypeRequiredDescription
versionintegerYesSchema version (currently 1)
lastUpdatedstringNoISO 8601 timestamp of last update
updatedBystringNoEmail of user who last updated
globalobjectNoSite-wide SEO defaults
pagesobjectNoPage-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, follow

Global Properties

PropertyTypeDescription
siteNamestringSite name for og:site_name and title suffix
siteUrlstringCanonical base URL
localestringLocale in og:locale format (e.g., en_US)
defaultTitlestringDefault title when page doesn't specify
defaultDescriptionstringDefault description (max 160 chars)
titleTemplatestringTitle template using %s for page title
robotsstringDefault 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/johnsmith

Social Handles

yaml
global:
  social:
    twitter: "@acmecorp"
    linkedin: acme-corporation
    facebook: acmecorp
    instagram: acmecorp
    youtube: "@acmecorp"
    github: acme-corp

Default Images

yaml
global:
  images:
    logo: /images/logo.svg
    ogDefault: /images/og-default.jpg    # 1200x630 recommended
    twitterDefault: /images/twitter-default.jpg
    favicon: /favicon.ico

Search Engine Verification

yaml
global:
  verification:
    google: abc123def456      # Google Search Console
    bing: xyz789              # Bing Webmaster
    duckduckgo: ""            # Reserved for future DDG webmaster program

Global 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/acmecorp

Page 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.jpg

Page Properties

PropertyTypeDescription
titlestringPage title (max 60 chars)
descriptionstringMeta description (max 160 chars)
keywordsstringComma-separated keywords
canonicalstringCanonical URL override
robotsstringPage-specific robots directive
noTitleTemplatebooleanUse title as-is without template
openGraphobjectOpen Graph overrides
twitterobjectTwitter Card overrides
schemasarrayPage-specific JSON-LD schemas
alternatesarrayAlternate 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 practices

Twitter 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_image

Duff Cloud Services Documentation