Skip to content

SEO Contracts

easeo supports machine-readable SEO contracts that describe what a site's SEO should look like.

Contract Format

{
  "contract_version": "1",
  "generator": { "name": "easeo", "version": "0.1.0" },
  "site": { "canonical_host": "example.com", "scheme": "https" },
  "defaults": {
    "indexable": true,
    "canonical": "self",
    "title": { "required": true },
    "description": { "required": true }
  },
  "rules": [
    {
      "match": "/blog/*",
      "expect": {
        "schema": { "required": true, "types": ["Article"] }
      }
    }
  ]
}

Usage

Python

from easeo import SEOContractConfig, build_seo_contract

config = SEOContractConfig(
    canonical_host="example.com",
    scheme="https",
)

contract = build_seo_contract(config)
contract.write("dist/.easeo/contract.json")

JavaScript

import { buildSeoContract } from "@easeo/core";

const contract = buildSeoContract({ canonicalHost: "example.com" });

With cheseo

When .easeo/contract.json exists in your build output, cheseo ./dist automatically validates against it.