Docs Projects & Domains

Projects & Domains

Every pSEO campaign starts with a local project.

What Is a pSEO Project?

A project is the top-level unit in Contento pSEO. It maps to a local directory with a contento.yaml config file and owns all the niches, schemas, chrome templates, and build output for a campaign. You can run multiple projects on the same machine, each targeting different audiences or brands.

Each project stores:

  • Output path — Where built pages are written (e.g., ./dist/articles)
  • Custom chrome — Header HTML, footer HTML, and CSS that wrap every page
  • Back-link and CTA configuration — Links injected into generated content
  • Niches & schemas — Topic definitions and data schemas that drive page generation
  • Analytics — GSC data, click/impression metrics, and performance rankings

Creating a Project

Run contento init inside the directory where you want to manage your pSEO project:

contento init \
    --name "DevTools Resources" \
    --output "./dist/articles"

  Project initialized: devtools-resources
  Created: contento.yaml
  Output:  ./dist/articles

  Next steps:
    1. Run `contento projects chrome` to set header/footer/CSS
    2. Run `contento collections generate` to generate pages

Custom Chrome

Chrome is the header, footer, and CSS that wraps every generated page in your project. This is how you make pSEO pages match your main site's look and feel.

  • Header HTML — Navigation bar, logo, site-wide banner
  • Footer HTML — Footer links, copyright, social icons
  • Custom CSS — Styles scoped to your chrome elements

Chrome templates are defined as local files and referenced in your contento.yaml configuration. During generation, Contento reads these templates and wraps every output page automatically. See Custom Chrome for the full guide.

Back-link & CTA Configuration

Every project can inject back-links and calls to action into generated content:

  • Back-link URL — The target URL for contextual links in generated content (e.g., your homepage)
  • Back-link Anchor Text — The text for the link (e.g., your brand name)
  • CTA HTML — A raw HTML snippet injected at strategic points in pages (e.g., a signup button)

These are configured at the project level and automatically applied to all pages generated under the project.

Project Lifecycle

StatusDescription
initialized Project created, ready for generation. Config and chrome are in place.
active Pages have been generated and written to the output path.
archived Project paused. Build is skipped during generation runs.

Check the current state via the CLI:

# Check project status
contento status

# List all projects
contento projects list

CLI Commands

CommandDescription
contento initCreate a new project (alias for projects create)
contento projects listList all projects
contento projects status <id>Get project status and page count
contento projects chrome <id>Upload custom chrome (header, footer, CSS)

See the CLI reference for all available flags and options.