> local cli · on-domain · safe pSEO

Safe programmatic SEO
for your static site.

Generate schema-validated, AI-powered pages that deserve to rank — injected directly into your site with on-domain paths. Quality-first by design, driven by the contento CLI.

terminal

# Install & configure your AI provider (BYO key)

$ npm install -g contento-cli

$ contento config set --provider openai --api-key "sk-..."

> AI configuration saved

# Create a project

$ contento init --name "DevTools Resources"

> Project created: proj_8f3a

# Browse niches & pick a content schema

$ contento niches list --category "Software / SaaS"

> 20 niches found: Web Dev, DevOps, AI/ML, ...

# Create a collection (niches × schema = pages)

$ contento collections create \

--schema idea-list --niches web-dev,devops,ai-ml

> Collection created (48 pages queued)

# Generate with AI & build to your site

$ contento collections generate coll_a1b2c3

> [████████████████] 48/48 (100%)

> 48 pages generated, schema validated

$ contento build proj_8f3a --output ./dist/articles

> 48 pages built to ./dist/articles/

150+

Niches

10

Content Types

Schema Validation

On-Domain

Direct Paths

The complete workflow

From install to indexed pages in six steps. Every step runs through the contento CLI — or fully automated by an AI agent with --json.

01

Install & configure your AI provider

Install the CLI globally via npm, then configure any AI provider with your own API key — OpenAI, Anthropic, Groq, OpenRouter, or any OpenAI-compatible endpoint (including local models via Ollama). Your key is stored locally at ~/.contento/config.json. No Contento account required.

  • Works on macOS, Linux, and Windows
  • Also runs via npx contento-cli (zero install)
  • BYO AI keys — pay providers directly, no markup
step-1

$ npm install -g contento-cli

added 1 package in 3s

$ contento config set

? AI Provider: OpenAI

? Model: gpt-4o-mini

? API Key: ********************************

AI configuration saved to ~/.contento/config.json

step-2

$ contento projects chrome proj_8f3a \

--header ./templates/header.html \

--footer ./templates/footer.html \

--css ./styles/main.css

Chrome uploaded for proj_8f3a

Header: 1.2 KB

Footer: 0.8 KB

CSS: 4.1 KB

02

Configure your site template

Point Contento at your existing site's header, footer, and CSS. Generated pages adopt your chrome — they look native to your site, not like a third-party tool. Pages build to your output directory with direct on-domain paths like /articles/react-patterns.

Recommended host: Astro. Drop Contento's dist/articles/ output into Astro's public/, point chrome at your Astro layout's compiled header/footer, and Astro handles the rest of the site. Works with any static framework — Astro is just the cleanest fit.

  • Uses your existing HTML header/footer/CSS
  • On-domain paths (no subdomains)
  • Outputs static HTML you deploy yourself
  • Works with Astro, Next, Eleventy, Hugo, or plain HTML
03

Browse & select niches

Contento ships with 150+ niches across 8 categories, each with rich context: target audience, pain points, monetization strategies, and 10–20 subtopics. The subtopics are what become your pages. Browse interactively or filter by category.

  • 8 categories: Tech, Business, Health, Finance, etc.
  • Each niche has audience + pain points + subtopics
  • Fork any niche to customize context
  • Filter and inspect: contento niches list --category "..." and niches view <id>
step-3

$ contento niches list --category "Software / SaaS"

ID Name Subtopics

────────────────────────────────────────

niche_01 Web Development 16

niche_02 DevOps & CI/CD 14

niche_03 AI & Machine Learning 18

niche_04 Cybersecurity 12

niche_05 Mobile Development 15

... 15 more

$ contento niches view niche_01

Web Development (web-development)

Audience: full-stack devs, frontend engineers

Pain Points: framework fatigue, performance, SEO

Subtopics: React patterns, CSS architecture,

API design, testing strategies, ...

step-4

$ contento schemas list

Slug Title Pattern

──────────────────────────────────────

idea-list "100 {subtopic} Ideas..."

checklist "The Ultimate {subtopic}..."

how-to "How to {subtopic}: A..."

comparison "{A} vs {B}: Which Is..."

faq "{subtopic} FAQ: {n}..."

... 5 more

$ contento collections create \

--project proj_8f3a \

--schema idea-list \

--niches niche_01,niche_02,niche_03 \

--url-pattern "/{slug}" \

--title-template "{subtopic} Ideas for Developers"

Collection coll_a1b2c3 created

48 pages queued (3 niches × 16 subtopics avg)

04

Choose a schema & create a collection

A collection combines a content schema with one or more niches. The schema defines the page structure (idea list, checklist, FAQ, etc.) and the niches provide the subtopics. Contento cross-products them: 3 niches × 16 subtopics = 48 pages.

Titles are deterministic — built from patterns like "100 {subtopic} Ideas for {niche}", never AI-generated. This ensures predictable, SERP-optimized titles at scale.

  • 10 built-in schemas with strict JSON validation
  • Subtopic expansion: niches × subtopics = pages
  • URL and title patterns with token replacement
  • Interactive mode prompts for schema + niches
05

Generate pages with AI

Contento sends each page to an AI model with three inputs: the content schema (exact JSON structure to fill), the niche context (audience, pain points, expertise level), and the subtopic. The AI fills the schema — it doesn't write blank pages.

Each result is validated against the schema: item counts, string lengths, enum values, required fields. Progress streams live to your terminal as the workers complete pages, or use --json for newline-delimited JSON events that an agent can consume.

  • AI fills structured JSON, not blank pages
  • Schema validation: item counts, lengths, enums
  • Live progress bar or NDJSON for agents
  • NDJSON event stream with --json for agent integrations
step-5

$ contento collections generate coll_a1b2c3

Generating 48 pages across 3 niches...

[██▁▁▁▁▁▁▁▁▁▁▁▁▁▁] 6/48 (12%)

[███████▁▁▁▁▁▁▁▁▁] 22/48 (46%)

[████████████▁▁▁▁] 36/48 (75%)

[████████████████] 48/48 (100%)

Generation complete

Validated: 48 passed

Failed: 0

step-6

$ contento build proj_8f3a --output ./dist/articles

Building 48 published pages...

HTML rendered with your chrome

Internal linking: 68 cross-links

Schema markup: Article + BreadcrumbList

Sitemap generated: 48 URLs

48 pages built to ./dist/articles/

Deploy with your existing workflow (git push, CI, rsync)

$ contento analytics top-pages --days 30

/react-patterns-ideas 2,340 clicks 4.2%

/api-design-checklist 1,892 clicks 3.8%

/css-architecture-faq 1,104 clicks 5.1%

06

Build & deploy

Build all published pages to static HTML in your output directory. Deploy them with your existing workflow — git push, CI pipeline, or rsync. Every build triggers an internal linking pass and generates a sitemap.

Each page gets your custom chrome (header/footer/CSS), canonical URLs, JSON-LD structured data (Article + BreadcrumbList + FAQPage), and Open Graph tags. Start with a small batch (25–50 pages), monitor indexing, then expand. Connect Google Search Console for analytics — track clicks, impressions, CTR, and position per page.

  • Auto internal linking across related pages
  • Full SEO: canonical, JSON-LD, OG, sitemap
  • GSC analytics: clicks, CTR, position tracking
  • Static HTML output — deploy anywhere

Built for AI Agents

Claude Code, Codex, OpenClaw, and Co-Work can automate the entire pSEO workflow through the CLI.

agent-workflow.sh
# An AI agent can run the full workflow non-interactively:

# 1. List available niches (JSON output for parsing)
$ contento niches list --category "Software / SaaS" --json

# 2. Create a collection
$ contento collections create \
    --project proj_8f3a \
    --schema idea-list \
    --niches niche_01,niche_02,niche_03 \
    --json

# 3. Generate pages (streams NDJSON progress)
$ contento collections generate coll_a1b2c3 --json
{"completed":12,"total":48,"status":"generating"}
{"completed":48,"total":48,"status":"done","passed":46}

# 4. Build to static HTML
$ contento build proj_8f3a --output ./dist/articles --json
{"built":48,"crossLinks":142,"sitemap":"./dist/articles/sitemap.xml"}

# 5. Check analytics
$ contento analytics top-pages proj_8f3a --days 30 --json

10 content types, built for traffic

Each type has a strict JSON schema, deterministic title pattern, and purpose-built UI rendering.

Idea List

Very High

"100 {subtopic} Ideas for {niche} in 2026"

Numbered list with descriptions. Highest traffic potential for long-tail keywords.

Checklist

Very High

"The Ultimate {subtopic} Checklist for {niche}"

Interactive checkboxes with progress indicator. Users bookmark and return.

How-To Guide

Very High

"How to {subtopic}: A Step-by-Step Guide"

Step progress bar, time estimates, and prerequisite lists.

Comparison

High

"{A} vs {B}: Which Is Better for {niche}?"

Structured feature tables with verdict summaries and scoring.

Alternatives

High

"Best {subtopic} Alternatives for {niche}"

Ranked list with pros/cons, pricing, and feature highlights.

Resource List

High

"Top {subtopic} Resources for {niche}"

Category filters with link tracking. Curated list format.

FAQ

Very High

"{subtopic} FAQ: {n} Questions Answered"

Accordion layout with FAQPage schema markup for rich snippets.

Glossary

High

"{niche} Glossary: {n} Terms Defined"

Alphabetical navigation with anchor links and cross-references.

Template Pack

High

"Free {subtopic} Templates for {niche}"

Download and copy actions. High engagement and link potential.

Tool Page

Very High

"{subtopic} Calculator / Generator"

Embedded interactive tools. Highest engagement and backlink potential.

Your brand. Your pages.

Upload your header HTML, footer HTML, and CSS. Every generated page wraps in your chrome — visitors see your navigation, your colors, your CTAs. Pages look native to your domain, not like a third-party tool.

  • Custom header and footer HTML injection
  • Your CSS loaded on every page
  • Back-link component for link equity flow
  • Custom CTA injection per content type

before — generic page

after — your chrome applied

yoursite.com Home · About · Blog
© 2026 yoursite.com

SEO infrastructure, automated

Every page ships with production-grade SEO. No plugins, no manual setup.

<link rel="canonical">

Canonical URLs

Unique canonical on every page. No duplicate content issues.

<script type="application/ld+json">

JSON-LD Schema

Article, FAQPage, and BreadcrumbList structured data on every page.

<meta property="og:...">

Open Graph + Twitter Cards

Social preview metadata for sharing.

/sitemap.xml

XML Sitemap

Generated on every build.

/robots.txt

robots.txt

Generated per project. Crawl-friendly defaults out of the box.

<a href="...">

Internal Cross-Linking

Automatic related-page links within the same niche. Link equity distribution.

schema-validation

Schema Validation

Every page is validated against its content schema: structure, types, required fields, item counts, string lengths, and enum constraints. Pages that fail validation are rejected, not published.

Safe pSEO, honestly framed

Google's March 2024 scaled content abuse policy and Helpful Content guidance target a specific failure mode: many pages, low value per page, written primarily for search engines. Contento is built around the structural side of that — schema discipline, on-domain paths, real per-niche context, batched publishing, and zero-traffic pruning. The other half — original synthesis, expertise, accuracy — is yours. The CLI gives you tools to enforce it; it does not absolve you from doing it.

What Contento handles structurally

  • Schema validation that refuses token-swapped templates
  • On-domain paths instead of subdomain farms
  • Per-niche context fed into every prompt
  • Batched publishing instead of spam-burst rollouts
  • GSC zero-traffic detection so dead pages get pruned

What gets sites penalized

  • "Service in [city]" pages where only the city changes
  • Massive page counts with identical intros and generic filler
  • Near-duplicate pages targeting keyword permutations
  • Pages that funnel to the same signup with no unique value
  • Subdomain farms — a textbook abuse signal

What Contento doesn't promise

  • Immunity from a Helpful Content / core-ranking update
  • First-hand expertise in topics you don't actually know
  • Factual accuracy — AI output requires review
  • Brand voice or editorial judgement
  • "AI-content-proof" pages — that category does not exist

Read the full mapping in Google Policies.

Schema validation

Every generated page is validated against its content schema before it can be published:

Schema validation (structure, types, constraints)
Field-level validation (item counts, string lengths, enums)
Auto-retry on schema validation failure

CLI-First

npm package

AI Agents

--json mode

On-Domain

Direct paths

Static Output

Your deploy pipeline

150+ Niches

Rich context

10 Schemas

Content types

GSC Analytics

Feedback loop

Schema Validation

Strict JSON checks

Build pages that deserve to rank.

Install the CLI, pick a niche, generate quality content, review it, and deploy to your site. On-domain paths, no subdomain tricks.