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
| Status | Description |
|---|---|
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
| Command | Description |
|---|---|
contento init | Create a new project (alias for projects create) |
contento projects list | List 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.